I was reading the latest post from Joel Spolsky and I got to thinking about a few comments that were made within.
- “Most college students, fortunately, are brash enough never to bother asking their elders for advice, which, in the field of computer science, is a good thing, because their elders are apt to say goofy, antediluvian things like 'the demand for keypunch operators will exceed 100,000,000 by the year 2010' and 'lisp careers are really very hot right now.'“
- “programming is incredibly good training for all kinds of fabulously interesting jobs, such as business process engineering, even if every single programming job does go to India and China.“
- “there's still an incredible shortage of the really good programmers, here and in India.“
The first quote I only somewhat agree with. One must realize that humans are creatures that generally take comfort in what is known and are apt to slip into predictable patterns of behavior. As a programmer, one must be wary of falling into the habit of accepting something as true or a best practice just because it has worked before or is the commonly accepted way of doing something. Change can and will happen and we must train our minds to be able to research the latest trends and be able to apply (or not apply) them logically into our organization. On the other hand, I think there is no match in the developer world for good old fashioned experience. Let experience be a guide though, not a rule.
I have based almost my entire career path on the second quote. I think that as programmers we are able to focus on details while keeping a solid grasp on the “big picture” of what is going on in the business. I started out college in computer engineering, dropped it and went into business information systems because I believed I would be a more valuable programmer for a business if I could speak to accountants, finance workers, managers, etc in their own language. Outside of my programming job I am an avid reader of business magazines like Business 2.0 and Fortune. I'm also currently pursuing my MBA. Since the beginning I have perceived the role of Information Technology within an organization to be one of implementing technology in such a way that it improves the efficiency of the business freeing up the various departments to focus more on customer service and the bottom line rather than time-consuming mundane processes. The more I understand about business and how all the pieces work together the better I can be at recognizing the areas that can be improved with technology and the better I can gain support for these ideas by communicating to the organization in a language they can understand!
In my various jobs and contracts I have seen an astounding amount of poor decisions made when it comes to technology. Companies have bought off the shelf systems that don't meet their needs and don't match their business processes when they should have custom built. Other companies have spent a fortune custom-building software to match a business process that is poorly thought out and inefficient instead of reworking their process to be more within the “norm“ of business. Behind all of these situations I see a management staff that has little or no IT savvy. Because of this, I believe that eventually companies will come to realize that having some members of upper management that are both business and IT savvy is a must-have to create a harmony between business and IT.
The final quote I have been on board with since the beginning. I have never feared offshoring and I welcome the international development community to the table. Having picked up quite a few legacy systems and having gotten involved with struggling or failing IT initiatives I can attest to the amount of code out there that is complete crap. Having watched the hiring process for developers in my last few positions I am absolutely astonished at the poor quality of the “average developer“. I have seen “developers“ applying for senior positions that don't know anything about OOP. Once, a computer engineering grad couldn't tell me what an object was but had received an 'A' in c++ programming class.
It really blows my mind how much software out there that I consider to be crap is quite successful either because of good sales-people (liers), a lack of alternative choices, or a general lack of understanding by implementers and users. I really hope that if my business ends up being successful that no one ever sees my work or my product and views it in this way.