Categories
Business perspective

Continuing Education Gaps

Reading through one of Karl Seguin’s blogs on ASP.NET isn’t always the right tool it convinced me more that there is a gap in software education. Not in formal education, but in continuing education.

Computer-science and programming curriculums at tertiary institutions have remained fairly static over the years inline with accommodating their primary objective: concepts. They will use a set of technologies in order to convey those concepts but not often do they specialise in that technology [at least early on in the program] purely for the sake of that technology. That’s where continuing education takes over. You won’t go to university to learn Apache, but you will learn web server concepts. Outside of university, it’s your ability to join the dots between web server and Apache and apply that knowledge [wisdom] that determines your worth.

Formal education has the advantage that concepts don’t change as rapidly as the tools and technologies. It’s continuing education that sit with the task of trying to keep up by providing “expert” education on new technologies. And since this is an ever-changing and time-consuming task, the foundation established by formal education is not taken advantage of. It’s not an objective. That is to say, the language of function [the what] disappears from the curriculum and the course becomes a powerpoint presentation dripping with the language of form [the how].

Considering that business processes and requirements have increased in complexity, programmers are required to know [minimally] “how” to solve these issues. The available toolsets have managed to meet those demands [and some] and assist the solutions, but there is a lot more going on that you need to be aware of, albeit even vaguely. And when you engage in advanced tools to faciliate advanced business needs, the demand that you know what you’re doing and not just how to do it, increases. From managing a web farm to architecting an e-commerce site, knowing how to do it is half the task. When you know what you’re doing, you’re better equipped to handle the esoteric stuff Mr.Murphy is well versed in at throwing your way.

How to distinguish postbacks in ASP.Net seems trivial. Look up the sample code and documentation and without further ado, IsPostback will solve all your problems. But what is a postback? Why do i even need to distinguish it? [you think i’m kidding? :)] What data is riding on a postback? What methods are invoked during a postback? What happens when i have dynamic controls? Knowing a little about the what behind the scenes goes a long way to solving a “but it just doesn’t want to work” scenario. It will also eliminate the many “WT..?!’s” you might come across when reviewing code before releases.

The problem and the solution is shared between both continuing education providers and learners. Learners need to realise that just because InstitutionX gave you a certificate that says you can do the job, it doesn’t mean you can. When you learn “how” to assign directory permissions, or “how” to nest repeaters, keep in mind “what” you are actually doing. To understand the impact of “what” requires you to invest further in your own education. It’ll only make you stronger. Educators don’t have the time/resources available to point out what may seem to be obvious.

Think critically. Remember what you have learned or at least know where to find it when you need it. Be conscious of every line of code you write. Know exactly what you are doing. Write tests! And if you don’t know why it’s breaking, it’s because you probably don’t understand why it was working in the first place… :p

Categories
Business perspective Technology

Beautiful Programming

With a mission statement which includes phrases such as creating beautiful software and a focus on beautiful people, it can sometimes be hard to follow such a mission if the very objective, beauty, is hard to materialize.

It has been said that beauty is in proportions. The moment you start emphasizing or leaning too heavily on one concept, you start to caricature the concept and fade on beauty. Beauty is all about holding the right proportion at all times.

Beautiful software does not waste features, but has everything you need. The interface is not busy but practical. Its efficient and natural, but cruising through complex problems. The code is not bloated and not cryptic due to code line famines. It has the right proportions. Beautiful people are controlled but not retentive. They are passionate but not sentimental. Expression is a skill, not a habit. Focused yet continually thinking out the box. Pushing boundaries and pioneering but never falling off the edge, beautiful people contain the right proportions. Bringing the two together is indeed a mission statement, but requires more mission and less statement. And to achieve this, we use the inaptly and irony-burdened name Extreme Programming.

In its essence, it aims to contain proportion, never to focus on the extremes. The right design, but simple enough and agile to tackle complex systems. Estimating to cater for business forecasting and survival but not allowing dogmatic routines and methodologies to dictate. Indeed, a minefield of contradictions when you lean too heavily on the one concept to the neglect of the other supporting principles but by achieving the right proportions and you attain beauty. Perhaps we could reconsider the term Extreme Programming (afterall, its laden with cliches and prejudices) and look at the ways we want to work and what we want to achieve. And never forgetting, most importantly, how we want to achieve it. Perhaps, the way we implement our mission is more suited to the title Beautiful Programming because beautiful software, created
by beautiful people can only be created in a beautiful manner.