I sometimes have a feeling that progress in the field of software development tools and technologies is coming too fast. Not that I'm complaining, there are of course good ends of it too. But it seems that many software developers feel uncomfortable because they have to spend decent fraction of their time on learning and what they already know becomes obsolete too fast. I also do not mean that developers should not learn anything new at all. Constant learning is important for every professional, not only for software developers. But should learning prevail over coding?
I'm writing this inspired by the recent post of Roy Osherove, in which he provides a list of new things he plan to learn to "don't feel stupid talking about them too much".
So, what the problem is?
Software developers as any other intellectual workers use their knowledge in their job. That is the main treasure of their professionalism, along with experience and talent. The problem is that the knowledge should not be constant. It should be continually aligned with the changes around us. Software developers are put in an environment that is changing too quickly around them. And that is one of the main developer's fears, to fall behind the progress.
So, developers have to intensively learn new technologies, programming languages and tools. And that is not a problem; the problem is that they have to learn too much to be able to effectively use what they have learned before. So, it becomes learning for learning, not learning for coding, as it should be. This problem becomes more complicated because of the fact that some good time usually needed for a software developer to cope with a something new, as we deal with a very complex technologies.
For software architects this problem is even more serious. They have to choose what technology or tool to use. And it seems to be impossible to base such decisions on own experience as it should be.
Even if you are focusing only on .Net development, there are so many tools, products and technologies are being released. Here is the short list that comes to my mind: Silverlight, WPF, WCF, WWF, F#, ASP.NET MVC, IronRuby, Linq and other new features of C#/VB.net, VS2008 with all its new features, Expression Blend, Search Server 2008, SLP Server 2008 and Code Protector, SQL Server 2008, Windows Server 2008 with its IIS 7.0 and so on… And that is not complete list of new technologies for .NET developer that came out last year.
Why that happens?
I think that happens because of these primary reasons:
- Developers like to create products for developers. That is favorite niche for software developers, isn't it?
- Software giants push new technologies because they are selling them. It's clear; we can do nothing with this. We just have to learn and buy their products to learn them.
What should we do?
The best way overcome this issue is to gain new knowledge effectively. Try to find the most effective way to receive information that works for you. If you are working in team of developers, try to conduct regular workshops where different people will speak by turn. Attend conferences where you can listen about new technologies and speak with other developers. Read blogs! Find several good blogs and read them. You can usually ask a question or comment blog post and receive feedback from author.
Another approach I can think of (although I agree that it is controversial one) is to focus on some technology branch. For example, its better to be guru in ASP.NET and focus on news that relate only to it, than to know a little in all .NET related technologies. Of course it is still good if you have some basic knowledge in other technologies, but that is not so hard to have.