There is something romantic about the tech world. More specifically the programming world. A world where we still believe in a pure breed born once every decade. The true programmers. The real programmers. I can name a few if I must. Bret Victor, John Skeet, Jeff Atwood, Steve Yegge, Douglas Crockford, John Resig, John Carmack. These are people I truly admire and think highly of. They are in my true programmers bucket. A virtual box I created because I have no real understanding of what trully makes then great, but I chose this label for the sake of keeping up with conversation.
The web is filled with stories or documents we call best practices that, if followed properly, will land us in the same bucket. I do my best to follow them, but there are just too many and those kids are just too fast for me. I don't get as excited about technology anymore, partly because it requires a young fresh mind to learn about all the ruby gems and js frameworks available.
I stick to the few a know and try to learn a little more about them everyday. At 28, I'm already thinking of adding a porch to my house, and getting a swiveling chair, my voice getting croaky... I digress.
We have dedicated website like the Daily WTF to show the world how bad programmers look like. I know, I even added some of my own WTF right here. But the deal is, what makes those people bad? Let me rephrase that, what makes us bad?
But there is a real label that identifies good programmers and bad programmers. The truth is you don't see much of the good code, we hear of it and shun the bad ones that are extensively documented. We know what we hate, what we love is philosophical and live only as an idea that we romanticize in our head. Of all the people I have listed above, I have only read John Resig's code extensively, and that was many years ago. (We all read jQuery didn't we? Spoiler:
export did it)
In a world were everything is becoming open source, we have the illusion where only those that share blood, sweat, tears and tools for free are the noble ones. The names I listed earlier and then some have repos on github that are very popular. Not only they are great programmers but they give back to the community.
Github is filled with people who give back, (not me... yet), and they all believe firmly that they are making a difference. Where would we be today if people weren't so generous? This very website runs on technology that is freely distributed. The thing that you don't think about though is that all these tools are not made for free.
Ubuntu is free, but it is not made for free. Canonical is 700+ employees company for profit that leads the development of Ubuntu. They get paid.
Blender 3d, an open source 3d platform that get half a million downloads a month is free. The Blender foundation receives donations and pay its employees to continue developing the software.
Android, the most popular mobile operating system led by Google pays its core developers handsomely. I truly think there are amazing people that work on it everyday and I don't even know their name.
Any large enough free software out there has a large team of paid developers that work on it. If you want to know where I am going with all this, it's pretty clear.
The only bad programmers are those who don't get paid.
Hard to swallow but, people get paid. Bad code can be improved. An unpaid programmer, is a bad programmer because he is starving. A bad programmer is one that never realizes that it is a skill, a skill for sale. You can write code on your spare time, nothing wrong with that. You can write the most amazing code that your compiler feels good about. But when you get paid, you understand what it is really like to write code.
You understand that there are deadlines and that there is good enough code. You understand that bad code is not written in stone, you can improve it. If you have been programming for a while and don't get any money for it, you should consider it. There are internships all over the place, you will be surprised what you will learn from it.
Applications that fall under the freedom zero license are still made by paid programmers. Don't be afraid to get paid, even if you are working on open source. You need a roof over your head, you need to eat. The stress of barely making ends meet will get to you eventually. Unless you get paid.
If you want to be a great programmer, then get paid for it.