Time for *gasp* another post again. I've had tons of things to blog about, yet none I have written down. But now it's time again. The basic idea is that the majority of developers out there seem to be quite frankly bad engineers. They don't care about neither the art nor the product. They are there for the money and honestly could care less. It is not them that I am going to discuss today, I will leave them be to fend for themselves. The group I am interested in is the good engineers. So what the heck do I think is a good engineer then? Let's see.
A good engineer cares about the art, about state of the art, and balances that with the product to find a sweet spot where you are proud of what you have achieved. A good product by good engineering. It has a certain beauty, a certain simplicity and ingenuity. It serves a purpose and does it well. All good engineers have an idea of this, even if it differs from person to person exactly how to achieve it and what the end result should be. So let's focus on these good engineers, those who make a difference.
Next let's define, for the sake of my ramblings, a bad company. A bad company is led by those who do not know nor understand the product they are making. They are very much in it for the money. They might be bad, they might pay good, but they do not care about what the engineers think. More often than not the care more about getting corporate jets, mistresses, reenacting German dungeon porn, living in luxury, shorting schedules, make wild claims, change the product, and put their noses where they do not belong. Simple a pretty crappy environment for a good engineer.
So why do these good engineers work at companies that really only destroys the chances to make great products? We all know the companies, so I won't start to enumerate the worst cases even. I have a few theories. One is the money/laziness theory. They stay because they are good engineers, but lazy. They stay for the money and they don't want to move. They might be bad at getting connections to get new jobs. Basically they need a kick in the butt to vacate the bad company and move on.
Next we have the ones that care about the product and wants to make it great. They are filled with ideas and good engineering principles and knows how to do the right thing™. Management on the other hand do not and constantly tries to save a quick buck and ends up with a much worse product. They have impossible short schedules and requirements from hell. The engineer on the other hand really want the product to be great, so they stay and fights management and turns more and more bitter and jaded. This category of engineers needs to realize that things are never going to change for the better at a company like this, or the chances of it happening are very slim. For every Apple rising out of the ashes there are tons of companies that do not. Again these engineers need to jump ship and move on!
Those are my two, to date, theories. I am sure there are other theories and I am very interested in them, so you have to tell me:)
Oh, and I almost forgot something, you have to make money after you have left the bad company. So how to find a good company? Really research what the board of directors is up to, make sure the company really knows what they are doing, talk to their engineers to see if they are jaded and bitter or energetic and hopeful. Don't sell yourself to a bad company again!
The other option (besides your parents basement, cold pizza, and the lamest computer game on earth all day) is to have an idea you believe in and start your own business, and only hire good engineers (leave the bad ones to the bad companies...). Probably harder, but the rewards all the sweeter!
Good luck all good engineers and let the comments in :)