Every single one of use that are involved in Software Development have come to the point where we feel overwhelmed with the speed in which the software industry is advancing. This is completely normal! We all have to understand that software development as an industry is in its infancy. For example, architects have been around for hundreds and hundreds of years, a lot of physics concepts have been tested over the last few hundred years. Many other professions have been tried and tested over very long periods of time. Software on the other hand is relatively new. It’s arguable that the majority of software development has taken place in the last 30 years. Since our day to day lives depend on software we are now seeing a very complex environment blossoming in front of us. No longer are static HTML pages the norm. We now have complex mission critical interconnected systems delivering dynamic pages to thousands of users per second. Dealing with the technology behind these systems has become very complex and we’re (the software engineers/architects/developers) required to understand it.
Knowledge Expectations
The average developer is required to know “everything” about programming. If your boss comes to you and says:
“I just went to a seminar on ______ and it looks like the future of software development. We need to implement it starting today…”
They then expect that you know everything about the said technology. Unfortunately this is not normally the case. We work on projects for any length of time, and then move to a new project. Rarely do companies push their employees to stay up to date on new technology on the company dime. The amount of technology that we’re required to know is beyond the capabilities of any of us. There is not enough time in the day to be an expert in everything. So, no, you’re not alone! Everyone in software development feels overwhelmed.
There is no way that we can all be experts on the entire .NET Framework, WCF, WF, WPF, Silverlight, SQL Server, PowerShell, Orcas, etc. You might need to know C#, VB.NET, C++, SQL, PowerShell, Ruby, Python, and the list goes on. It’s just too much for anyone.
I once heard an analogy that describes this situation perfectly. You need to build a cabinet at home, so you go to Home Depot to get the materials. The Developer is you, the home owner, and the technology framework is Home Depot . You can walk in and decide that you can build the cabinet however you feel fit to do so. You can build it with wood, plastic, metal, with screws, nails, or glue. These are the classes and frameworks. You can also buy it pre-built; this could be a third party solution. You can also know that there are right/wrong ways to do something, these are Patterns/Anti-Patterns.
In the end, you could build your cabinet a 1000 different ways. Software is the same. The options are endless and at times we’re required to use many technologies to solve a problem. Sometimes the options each technology offer overlap another technology somewhat. When this happens it becomes difficult to figure out what technology to use.
Segregation of Duties
As mentioned above, we’re required to know everything about everything in the programming field.
Developers are a lot like how doctors were 60+ years ago. Back then doctors took care of everything. If you were sick, they fixed your cold. If your eyes checked out, he checked them out. If you broke your arm, he took care of it. They took care of everything. Right now, that’s what developers are. We are the general practitioners in regards to development. If a problem comes up we are expected to know how to fix it. We are the experts in the computer field and our bosses expect that we know how to fix it. Doctors were the same. If we were sick/broken they were expected to fix it, and they did.
Nowadays doctors have specialties. We have neurologists, cardiologists, optometrists, and the list could go on for two pages. The only common ground is that each doctor has a foundation of classes which eventually led into their specialty. In my opinion, this is where software development is heading. We already have SharePoint developers, CRM Developers, Web Developers, Windows Developers. The base developer knows their language and concepts. Each specialty developer has much more training in their respective area. This is where we’re going to end up.
Unfortunately this isn’t the case in 100% of business environments. A lot of developers wear a lot of shoes and that adds to the confusion. A lot of developers “know a little about a lot”. This is probably the majority of us.
Staying Up To Speed
Since us developers have soo much to choose from and so many things to learn I often I get asked how I stay up to speed on all of the new technologies that are abreast. Here is the best advice I can give.
- Pick a technology (or a couple of them) and stick to them.
- Subscribe to some great blogs.
- Listen To Podcasts
- Watch Screen casts.
- Read technology related magazines
Example of my four picks
- I’ve decided to side with .NET 2.0/3.0/3.5, PowerShell, SQL Server, MOSS, and some other technologies for fun.
- These are the Blogs that I read
- These are the Podcasts I listen to
- These are the Screencasts I watch
- These are the publications I read
Luckily, my commute provides a lot of time to listen to many podcasts. I have free time late at night and early in the morning to watch the screencasts. The magazines are always good to leave lying around the house or at work for break-time reading.
Conclusion
As said by Scott Hanselman (and many others – myself included), software development is not a 8-5 job. It’s something that must be a full time part of your life because if its not, you’ll never stay up to speed with what’s going on in the world around you. Then once everything has passed you by you will be wondering how you can catch up. If you want to go to work at
Leave a Reply
You must be logged in to post a comment.