In my youth (like I’m not young anymore…), I had watched many movies that contained a nerdy guy who was not leaving his room and doing all kind of crazy stuff, hacking into banking systems etc. I was very awed with many of them and probably it was some of the things that inspired me to be a software developer. Yet after 6 or more years in the business, movies were just movies after all.
The time, of course, has changed and there are no longer “cowboy” developers, or nerds who does not leave their bedrooms anymore. Now there are nerds or geeks or technology enthusiasts, whatever you call them, that communicate with each other. They speak with each other with different channels like e-mails or instant messages or Skype. You cannot accomplish anything alone anymore, as you are competing with hundreds of developers not just a single system administrator.
Apart from hacking other systems, you can no longer develop a software all by yourself. It’s not even thinkable. Some of you might argue that I’m wrong, yet these guys forget that they are already using frameworks and libraries written by others. You are not alone at all.
If you want to monetize your software, there is no way you will be able to deliver in a meaningful time all by yourself. The market is changing, constantly and very fast. What you knew last year is already old. You need others to support you. Some will write the back-end, some will write the front-end, some will make a graphical design, some will decide what the functions of the site will be, some will test, some will use. There are lots of different people doing lots of different jobs. Now, software engineering is a social job, so it will be a bit hard for the bedroom nerd to face the truth.
As many software developers lacks this simple communication ability, most of the projects fail. I’m sure that you are not surprised of the percentage of the software projects failure. You are already familiar with this failure aren’t you? You are reading this blog post and you are already late for the project you are working on. Have you notified the customer that you will be late? Do you know how much late you are? Do you know when you will be done? You probably don’t know and that’s the real problem with software. You do not communicate with your customer or your boss or your project manager or your fellow developers. It’s just everyone’s failure yet not treated as such, as Software is doomed to be late (or fail)…
What you should do then? Well, that’s easy: Communicate with others. If you notice that you are late, two days later the day where you had to deliver the product, well that sucks. But honestly you already knew that you will be late a month before the deadline, yet you did not accepted it, you just ignored it.
You might argue that “that’s my smart-ass project manager have to do, right?!”. Yes, you are right. But he does this on your feedback. If you don’t tell him that you will be late or you won’t meet your deadline, he can’t do his job. “He has to check my status, that’s his job too”, you may say, quiet true. Yet when he does this every day to check your status, you blame him that he keeps distracting you and his meetings prevents you from doing your job. Did I nailed it boy?
As we are mostly “engineers”, we lack these social skills. In our minds, software is an engineering or a science or something related to the maths, the smart kid’s language. Yet mostly software is about social skills. It’s a people’s job. It’s about people. And most of the time, all you have to do is to understand, really understand, what the guy next to you wants you to do.
The nerd in the bedroom should get out and feel the fresh air in his lungs. The time has come for him to meet the other boys in the neighborhood and play soccer.