Business software has automated many routine tasks. Is there anyone still doing accounting manually? The automation is also applied to software development itself, removing routine tasks and leaving the hard tasks to solve manually.
15 years ago I was thinking of what a future career as a programmer would look like. I didn’t know much about professional development, but I was sure of one thing: Administrative business applications was not an option. I wanted to do something new, creative – not spend my days adding another field to another form (including adding it in CRUD code, CRUD Stored Procedures and the database schema).
Now I’m here, working with administrative business applications and enjoying it. It’s not at all what I thought of it back then. It’s far more interesting and challenging.
The tools have become so much better. 10 years ago, a single added field to a form could require changes to 10 different places in the code – all of it plumbing code. With the frameworks available today it’s often possible to handle it with just two changes – one to the GUI and one to the database schema. The rest can be handled automatically.
With routine tasks automated, the focus moves to two different areas: The hard problems and the customer requirements. This makes programming more qualified than ever. It requires deeper expertise within both technology and business understanding.
The Hard Problems are Left
10 or 15 years ago there was a lot of room for routine development. Adding another field required changes to 10 places in the code spread over 3 or more architectural layers. That’s definitely half a day’s work. With modern frameworks it can be done in half an hour instead. So what happens to programming when the routine tasks are simplified and no longer requires so much time?
The hard tasks are left. The hard problems that are not easily solved by a smart framework. The special cases that makes each application unique. The hard tasks that are not routine tasks. The hard problems that requires all the creativeness of a great programmer to be solved.
The hard tasks that are challenging, interesting and requires the programmer to learn something new each day.
Understanding Customer Requirements is More Important
For a programmer doing routine tasks, it’s enough to have routine level specifications.
Add a field for shoe size to the person form. It should be an integer and be a required field.
Such a requirements is easy to specify for a business analysts and easy to understand for a programmer. 10-15 years ago it would take half a day to complete the task. The ratio of two sentences spec/half a day of work even makes it a good business case to send the spec off to a programmer on the other side of the world.
With modern tools, the story is completely different. There are a huge number of input methods available. Should the interface work with keyboard? with mouse? with touch display? on a small display? Choosing a solution for the new field in the form requires a deeper understanding of the customer requirements than what’s possible to just get by reading the specification.
Programming is more Qualified than Ever
To both understand customer requirements and be a technical expert is challenging, but it’s required of a programmer. A great programmer of today succeeds with getting a relationship with the customer and on the same time being a technical expert.
The customer relation doesn’t come for free. Personal meetings are required. The antisocial programmer is history. Today, social skills for customer interaction are as important as technical skills. This also rules out off-shoring for business software development projects. It’s impossible to get the number of in person meetings required if the programmers and users are on opposite sides of the planet.
The technical expertise doesn’t come for free. Time and effort must be put into continuously learning new technologies and deepen existing knowledge. It is not possible to just rely on the knowledge learnt while in school – it was already partly outdated the day you started your first job. It is not possible to just rely on the knowledge gained at work. Being a professional programmer and keeping up to date is a life style. If you’re reading this, you’re already ahead of most people – because you read a blog post (which many programmer unfortunately never do).
To be a successful programmer today requires social skills, technical skills and an honest will to produce a good solution for the customer’s problem. It is more challenging than ever. It is more interesting than ever.
I’ll be giving a talk on this theme at Career Days in Stockholm, on Friday September 7th at 17:00. If you are at Career Days, please drop by Kentor’s booth before the talk, or catch me after the talk.