Do Programmers Get Bored?
Programmers are people who create computer programs. (I’ll skip the discussion whether it should be “programmer”, “developer”, “engineer”, “coder” or whatever. You know what I’m talking about). What makes programming different than most professions is that it’s way more diverse – you can do new things every day, because new technologies emerge all the time. Not only that, but programming is actually a creative job – given a couple of rules and foundations you can build whatever you like – something nobody else has built. Just like the poet starts with words, metric and rhyme rules and comes up with a poem. Or the composer starts with notes and the rules of harmony and comes up with a song. The good thing about programming is that there are always new things to start with and different rules to adhere to.
So, programming is a well-paid, creative profession that gives you the opportunity to do a lot of different things. Not exactly. Programming has another feature – it has to be practical, to serve a business purpose. That’s why many programmers tend to do the same thing over and over again – website after website, ERP customization after ERP customization. Then they change jobs to do a very similar task. Partly because they are already experienced with a given technology or process and other companies want them because of that experience, partly because most companies do the same – they build websites for clients, they build or customize ERPs, or they have their own online service that has to be supported/created, but which is essentially the same as what you previously did. So, in fact, you handle HTTP requests and access the database all day long, day after day, with a couple of scheduled jobs or indexing thrown in, using the same technology for years and years? Sadly, yes. So it’s not so creative now, is it? How come people don’t get bored? They do.
At that point, how can programmers make their work interesting, if what they do is writing very similar, mundane functionality all the time? They learn new technologies. If lucky, you can work on new projects and choose new technologies at work every year or so. If not so lucky, you can still write pet-projects at home, using the cutting-edge technologies, which later you can transfer to your workplace. There are new languages to be learnt, new frameworks to be explored and new storage engines to be used every day. Scala, Groovy, Go. NoSQL. Node.js. MapReduce. Hadoop. These are new paradigms that serve new purposes, and if you are a real programmer you should be fascinated and interested to at least read about them. And probably use some of them for a “proof of concept” at least. Having the ability to always explore something new is what makes the professional life of a programmer so much less boring. Even if at work you do the same thing, you can use your skills and make your own projects. And if they are good, you can open-source them so that other people use it, or they can become popular and you can eventually quit your job. And these are very realistic opportunities, which makes it even less boring.
But does it get boring? Yes, it does. For two reasons. The first one is that some programmers are just lazy and not that interested in anything else other than the paycheck. These are the ones, for whom programming is not a hobby, it’s just a mere profession. It’s their choice, so I’ll leave them aside. The other type are people like me, who like what they are doing, who stay up to date, like to learn new things all the time. People like me can get bored when at some point each new technology becomes too easy. When you are proficient in everything you use and you learn a new framework in six hours and a new language in two days. New concepts like MapReduce, the CAP-theorem, API design, become easily mastered, because you already have so much experience and have seen so many things. Each new step is now easy, there is no challenge anymore, so you get bored.
There are a couple of options from this point:
- compensate the boredom of your professional life with something really interesting in your “real” life. But when you get from the programming world of infinite options, to a pretty limited real world, not many things seem challenging. I don’t say this is not a good option – by all means it is. It’s just not interesting from a programming point of view, but feel free to “get out in the real world”, if you are less bored there.
- you seek to get promoted to management, that is – change the nature of your work and start using your expertise to direct the process in your company rather than program. But usually a great programmer doesn’t like not to program. You would at least like to be technically involved in the development process.
- remain bored, get the paycheck. You are still a professional and there’s nothing wrong with this choice. And at some point you may forget that you are bored.
- you start thinking of something new, something nobody else has done or thought of. A product, a framework, doesn’t matter. It occupies your creative thinking and all your current skills. Eventually you may end up with some great new technology or product. You may get bored after that, of course, but you can iterate this step. It can be done at home, at work, or if your idea requires a lot of time and dedication, you can do it as a research project in a university. I guess this is how the internet, Google, p2p, Linux, and many more great technologies are born.
Thanks to the people choosing the 4th option, professional life for the majority of developers remains interesting and intriguing. If you get to the point where you are bored by everything, please choose the 4th option. I haven’t yet fully reached that point, but I’ll certainly try to utilize all my programming skills to create something new and cool, rather than sitting quiet and getting my paycheck.
Programmers are people who create computer programs. (I’ll skip the discussion whether it should be “programmer”, “developer”, “engineer”, “coder” or whatever. You know what I’m talking about). What makes programming different than most professions is that it’s way more diverse – you can do new things every day, because new technologies emerge all the time. Not only that, but programming is actually a creative job – given a couple of rules and foundations you can build whatever you like – something nobody else has built. Just like the poet starts with words, metric and rhyme rules and comes up with a poem. Or the composer starts with notes and the rules of harmony and comes up with a song. The good thing about programming is that there are always new things to start with and different rules to adhere to.
So, programming is a well-paid, creative profession that gives you the opportunity to do a lot of different things. Not exactly. Programming has another feature – it has to be practical, to serve a business purpose. That’s why many programmers tend to do the same thing over and over again – website after website, ERP customization after ERP customization. Then they change jobs to do a very similar task. Partly because they are already experienced with a given technology or process and other companies want them because of that experience, partly because most companies do the same – they build websites for clients, they build or customize ERPs, or they have their own online service that has to be supported/created, but which is essentially the same as what you previously did. So, in fact, you handle HTTP requests and access the database all day long, day after day, with a couple of scheduled jobs or indexing thrown in, using the same technology for years and years? Sadly, yes. So it’s not so creative now, is it? How come people don’t get bored? They do.
At that point, how can programmers make their work interesting, if what they do is writing very similar, mundane functionality all the time? They learn new technologies. If lucky, you can work on new projects and choose new technologies at work every year or so. If not so lucky, you can still write pet-projects at home, using the cutting-edge technologies, which later you can transfer to your workplace. There are new languages to be learnt, new frameworks to be explored and new storage engines to be used every day. Scala, Groovy, Go. NoSQL. Node.js. MapReduce. Hadoop. These are new paradigms that serve new purposes, and if you are a real programmer you should be fascinated and interested to at least read about them. And probably use some of them for a “proof of concept” at least. Having the ability to always explore something new is what makes the professional life of a programmer so much less boring. Even if at work you do the same thing, you can use your skills and make your own projects. And if they are good, you can open-source them so that other people use it, or they can become popular and you can eventually quit your job. And these are very realistic opportunities, which makes it even less boring.
But does it get boring? Yes, it does. For two reasons. The first one is that some programmers are just lazy and not that interested in anything else other than the paycheck. These are the ones, for whom programming is not a hobby, it’s just a mere profession. It’s their choice, so I’ll leave them aside. The other type are people like me, who like what they are doing, who stay up to date, like to learn new things all the time. People like me can get bored when at some point each new technology becomes too easy. When you are proficient in everything you use and you learn a new framework in six hours and a new language in two days. New concepts like MapReduce, the CAP-theorem, API design, become easily mastered, because you already have so much experience and have seen so many things. Each new step is now easy, there is no challenge anymore, so you get bored.
There are a couple of options from this point:
- compensate the boredom of your professional life with something really interesting in your “real” life. But when you get from the programming world of infinite options, to a pretty limited real world, not many things seem challenging. I don’t say this is not a good option – by all means it is. It’s just not interesting from a programming point of view, but feel free to “get out in the real world”, if you are less bored there.
- you seek to get promoted to management, that is – change the nature of your work and start using your expertise to direct the process in your company rather than program. But usually a great programmer doesn’t like not to program. You would at least like to be technically involved in the development process.
- remain bored, get the paycheck. You are still a professional and there’s nothing wrong with this choice. And at some point you may forget that you are bored.
- you start thinking of something new, something nobody else has done or thought of. A product, a framework, doesn’t matter. It occupies your creative thinking and all your current skills. Eventually you may end up with some great new technology or product. You may get bored after that, of course, but you can iterate this step. It can be done at home, at work, or if your idea requires a lot of time and dedication, you can do it as a research project in a university. I guess this is how the internet, Google, p2p, Linux, and many more great technologies are born.
Thanks to the people choosing the 4th option, professional life for the majority of developers remains interesting and intriguing. If you get to the point where you are bored by everything, please choose the 4th option. I haven’t yet fully reached that point, but I’ll certainly try to utilize all my programming skills to create something new and cool, rather than sitting quiet and getting my paycheck.
Love your post. I’m not a programmer by profession, but I love programming and learning new technology. I always look for ways in which I can apply my programming skills to my profession (civil engineering). #Age_of_the_geek!
Cool! I know, old post, but I want to chime in on this because it has become a bit of an issue for me and I’d like to blow off some steam if you’d let me.
I loved programming and I still do, but there’s a real world, with real needs and those needs generally don’t involve having interesting learning experiences for the programmers. In fact, I think that’s a good thing.
Programmers have developed over time their own little niche which has proven to be quite profitable and in todays society is not much of a niche anymore (software is everywhere), but sooner or later we either A) realise there’s only so much software needed to make the world go round or B) we as a group of people heavily invested in tech have to keep inventing new toys to keep everyone busy.
I guess we decided on B, almost every branch of industry chooses this line. The fine folks at L’Oreal probably don’t think to themselves: “Does the world need Yet Another BS Lotion?” and the car industry is probably not that concerned with that question either, but I think – as a human, not a consumer – you have the moral obligation to entertain these thoughts. Real finite resources are depleted, real people spend their finite lives on it. (On a a-side: everything about human existence is finite, so I’m not quite sure where this infinite-wants-thing that we seem to assert fits in.)
Don’t get me wrong, software and IT in general has benefitted society immensely, but I definitely think there’s a point of diminished returns.
Along the line I had the misfortune to feel compelled to think about my place in the world and any – if any – moral obligations I have to it. Painful.
Perhaps my Widget 2.0 isn’t improving the world as much as I think it is and is just making sure our beloved CEO and his furry investor friends keep their numerous Aston Martins properly waxed. Of course, it also keeps hordes of programmer monkeys happily pounding their keyboards, but is that what the world needs? Happy programmers?
Just for the record. I know infinite growth is possible, it’s not based on real resources per se and by tricking everyone time and again into buying more and more shit (goods/services/experiences) you can grow forever.