The Secret of Efficient Programming
I read Dilbert every day, it adds levity to my technical life. Besides I cannot watch Office Space every day can I? Today's Dilbert was funny, but makes a very important point about why software development is so much different than just about any other trade. Often I have had clients that want what I do to be summarized as simple and trivial, others want to make things way too complicated. Sadly there have not been many that really understand the process and art or just concede that maybe I really do know what I am talking about.
Today the Pointy Haired Boss says he follows the measure twice and cut once philosophy. Dilbert then wisely points out that in software it is really much cheaper and easier to just cut because the nature of development is not like construction or furniture making. In those traditional industries physical resources are the limiting factor in determining production costs. Labor, or time is not as expensive as natural resources, like lumber. Besides to measure in software is to debug and log.
In the world of software development time is the most valuable resource we have. So having seasoned and intelligent developers is the key to efficient projects. Good leadership from project managers and access to good tools is very key too. Having a project manager that understands the technologies, the goals of the project and how to relate to the programmers go a long way to a timely successful project. I have had both in my days. I even have had several who intentionally tried to make the project fail, which is really sad. I did everything I could to get out of those situations.
Access to the right tools also makes programmers better. It could be a programming environment, like Visual Studio, fast workstations, high speed connections, good third party controls or just a documentation process that does not hinder that can make the difference. I have also had to develop projects where I did not have good tools or frameworks. I think I did what most good developers would have done and that was take the time to create a good place to develop by making as many things as I could to make my like better. This took extra time, time that could have been better invested in just buying the proper setup in the beginning and working on the real project.
Not that I think every project will be perfect. I think one of my most rewarding projects was the first big project I did as an independent. I did the whole thing in notepad and Enterprise Manger. I worked really hard on the project and produced a pretty good application. It could have been better, but it is still running and being maintained by my client and making them money.
Finally, the zinger of the comic today was the Pointy Haired Boss could not come up with a good way to prove his point because Dilbert had direct deposit. If the boss would have really understood the process he would have had the leverage he needed to be in charge. So instead of thinking you know how to develop something because you watched a presentation, or read an article or book, try it. Stay current with what is going on in the programming world, know how the landscape is changing on a daily basis.
I think the reality is we actually need to be fluent in all of the above, but so much more. We need to know enough networking, user experience concepts, PhotoShop (design tools) and other indirect technologies that it makes things very hard. I honestly do not know how a real software developer hopes to succeed in the near future without having a rich set of skills and experiences.
How do I hope to do it, read a lot, listen to as many Podcast as I can, watch as many videos as I can, write many test projects and sites, take advantage of my User Group and Code Camps and finally write and present. I have found the more I write about things, here and in books, the better I get. Giving presentations also makes me learn more than I would have normally. I think these principles hold for both the manager and the developer. I think it would be great for teams to take a few hours each week, Friday is a good day, and work on side projects and lunch and learns. There are so many resources available to us for free, try them out, it wont hurt I promise. But above all learn as much as you can and if it is not fun, then I encourage you to find something fun to invest your heart and be happy.