I sent out a mail recently to some managers in my company (before you start rolling your eyes, I’m a manager too) about project scheduling, something which I’ve been very frustrated about for a long while. In that mail I quoted something from the book “The Art of Project Management” by Scott Berkun — “Programmers should be trusted. If your brain surgeon told you the operation you need takes five hours, would you pressure him to do it in three?”.
Craig was quite amused at this quote, asking if I compared myself with a brain surgeon. While it was friendly banter, I thought that this was one of the problems with the software industry. Maybe it is the naming/association with the construction industry where architects design the building, engineers oversees the construction and anyone doing the actual work is considered menial laborers. Maybe it is the thousands working ‘software factories’ for outsourcing body-shoppers. Maybe it’s the large software projects that suck up thousands upon thousands of man-days with huge teams of programmers that gave rise to the myth that only large teams of programmers can produce software of any significance.
Whatever it is.
I believe programmers are not given enough respect that we deserve. Every time I interview someone or do performance appraisals for programmers and ask what kind of career paths they want, it’s always ‘management’. It could be project management or technical management, but almost inevitably it ends up to be some sort of ‘management’ or ‘getting away from low-level coding’ (even though they are already programming in Java) as if it’s a dirty job. It really infuriates me. Some time back I met an undegraduate from the Singapore Management University who was doing a Bachelor of Science in IS Management and apparently they’re going to graduate miraculously into IT project managers.
Laugh as you will if you recognize this scenario but can we blame them? What’s really the career opportunies for a programmer today? In tragic reality there isn’t a great deal. The zenith of the career of a programmer in a really technical path (barring starting up your own YouTube or Google) is probably the ‘Technical Expert’ or ‘Principal Engineer’, depending on what your HR hoist on you. And you’ll be reporting to a project manager with maybe a quarter your skills and experience telling you when you should be delivering code that is perfect.
I believe programmers should be given more respect as programmers. I was quite intrigued with Shao Pin‘s idea of a software company being organized in the form of a law firm. In this organization, programmers are like lawyers who are responsible for their hours clocked and for their own deliverables. They manage their own schedules and does almost every aspect of the delivery but will sometimes contract out work to specialists (e.g. graphics designers). Every project is handled by one programmer unless it is too big then he will have a junior programmer or two to help out, but the one programmer is the sole owner of the project. To this I will add the list of professionals like doctors (in clinics rather than hospitals), accountants and architects who set up their own practices and run their own shows.
But is this practical? Can software be really delivered this way? How about the timeline in delivery, how about testing, training, writing documentation and whole horde of other non-programming activities? It is common for lawyers work together for large cases, teams of surgeons perform complicated surgeries and big accounts are normally handled by large accounting firms with a number of accountants.
Why not? Lawyers and doctors work together on large complicated projects, but not all the time. Not all software needs to be large. Take business related software for example, there are more small companies than large companies, so there is naturally more need for small, to the point and useful software than ‘enterprise-level’ software. If the project is really large then groups of independent programmers can work together like lawyers and doctors do. Even actors are usually independent operators who are tied in to movie or television projects.
I want people to stop considering programmers as a replaceable and swappable ‘resource’ in a gang of workers but acknowledged as a true professional, with respected expertise and equal responsibilities. I don’t know when that day will come though.