I came across this rather lengthy, but definitely worth a read, article about different professions and misconceptions people have about them. Some of the stories are surprising, some – less so. Given that there is not one from a computer programmer, I decided to share here my view of it.
It’s too tough to choose a single misconception, so I’m going to limit myself to the top three. These three are the ones I have to deal with most often. They vary from person to person, of course. But I’ve heard the same from a few of my colleagues. So here it comes.
Firstly, being a computer programmer, doesn’t mean that I can solve each and every computer related problem. These days, there is a great variety in hardware and software and there is not a single person who can cover all of it. All of my colleagues – with no exception – are constantly asked for help with all sorts of computer problems just because they are programmers. Of course we often listen to the problem and really try to help. But don’t be too surprised if we can’t. For the variety of problems we have a variety of specialists – technicians, system administrators, network administrators, database administrators, front-end and back-end engineers, testers, programmers in a number of languages, support personnel for a number of platforms and applications, and so on and so forth. Each one of those specialties covers a particular set of knowledge and skills which are not necessarily applicable in other areas.
Secondly, computer programmers (and other IT folks) are often seen as some kind of genius wizards or some such. While there are indeed a lot of really smart people working in IT, it’s not that different from any other industry. Nobody is born a programmer. It’s just yet another profession with its own set of skills, knowledge and terminology. Anybody can be a programmer. And I do mean anybody. All you need to do is study and practice. We don’t do magic, we don’t do tricks. We learn the rules one by one, we learn to apply them. We get better at it. Much like learning another language – Chinese or Greek or German. Start with an alphabet and a few simple words, learn the grammar, practice, read books and watch movies, get introduced into the culture, realize different accents, practice more. We do the same.
Thirdly, computer programmers are not working an assembly line. Not most of the time at least. This misconception mostly has to deal with the managerial perception. IT is a new industry and I can understand how it is difficult to see it different. Most other office people can start work at 9 and finish at 5. If the work they do is procedural and doesn’t vary by that much, that’s easy. Software development is not like that. It requires a certain state of the mind. Think of it as mood. One needs to be in a specific mood to write code. And even though with practice one can command his own moods better, it still doesn’t really work from 9 to 5. It doesn’t switch on at 9. Some people wake up earlier, some later. Some need breakfast and coffee in the morning, others need nothing. Each has his own path. The same with the 5pm. And doesn’t just switch off. Especially when you are in the middle of something, a problem that you’ve spent a few days solving and finally the solution is shaping up. You don’t just stop. You think it through until it’s over. It doesn’t matter if you are in the office or at home or en route. It doesn’t matter what time it is. Many do work outside the hours, even if it’s only only in their heads. So having a strict set of hours like 9 to 5 is really counter productive for programmers. If you, as a boss, force them into such a time frame, you are not getting the best out of them.
That’s about it. What is your job and what don’t people get about it?