TechnologyReview.com has a very good interview with Bjarne Stroustrup, the creator of C++. In the interview Bjarne talks about what is wrong with software development. One quote that really stuck a cord with me is:
“Looking at “average” pieces of code can make me cry. The structure is appalling, and the programmers clearly didn’t think deeply about correctness, algorithms, data structures, or maintainability. Most people don’t actually read code; they just see Internet Explorer or Windows “freeze,” have their cell phone drop a call, read the latest newspaper story about viruses, and they shudder.”
So true, so true.
Many programmers today are only worried about getting a feature out the door as quickly as possible ignoring the fundamentals of software development. This is typically driven by demands from management. I for one have been guilty of taking shortcuts just to meet unrealistic demands. This is one of the reasons I left the corporate IT world. I was losing pride in my work and I felt I was starting to forget the fundamentals of software development.
Bjarne also says (towards the end of the interview):
“A lot of thinking about software development is focused on the group, the team, the company. This is often done to the point where the individual is completely submerged in corporate “culture” with no outlet for unique talents and skills. Corporate practices can be directly hostile to individuals with exceptional skills and initiative in technical matters. I consider such management of technical people cruel and wasteful.”
I am by no means the best programmer nor do I consider myself an expert, but this is something I have definitely experienced first hand on more than one occasion and with more than one employer. In a way it was good for me (I worked with good companies) because I got to do a lot of R&D; work inventing new things, which was a lot of fun, that never went into production but aided in completing production systems. I have been called everything from a maverick to a hero to a lose cannon. And all because I insisted on being myself, an individual with a passion for software development. It wasn’t that I was against the team or company. I just wanted our software to be the best it could be. I wanted time to think about proper algorithms and data structures, and most importantly maintainability. I knew as I do today that the right amount of up front time can have huge payoffs in the long run. Unfortunately too many in the software industry think only of the next 6 months and not of the next 6 years.