Obviously, the US financial crisis is on a lot of people’s mind. Given the downturn in real estate and the financial sector, investments are taking a beating. Of course, if you are an investor and have listened to practical investment advice, you have diversified your portfolio. If you have diversified, your investments still took a hit, but it is not as bad as others who have heavily invested in the financial industry.
So, what does this have to do with software developers? Nothing directly, but there are some basic ideas that we can apply from this. Some people say that it is better to specialize in specific technologies. In some cases, this can be a good idea, but in a down economy, you want to be as flexible as possible. You want to diversify your skillset. There are multiple reasons for diversification.
First, you get to learn new things and that tends to get you looking at problems from different angles. For example, if you are a server-side Java developer and you need to develop a new web application, you will probably choose Java related technology like JSP and JSF. This also directs many choices, like the application server to use, maybe Tomcat, and typical JDBC database access running against MySql. This is a standard Java application stack, and it works fine. However, it is also limiting. You cannot run Java on Google App Engine and you are not taking advantage of other “cloud” technologies. If you were familar with Python, you could take a different approach and use App Engine.
In your career, it is useful to have several technologies in your toolbox. In almost any application you will be reading data from a database. If you do not know how databases work, you can write some really bad queries. Finding a friendly DBA is not that hard, and they would be happy to help you learn more about databases. Granted, they have selfish reasons for helping, better queries typically means less work for the DBA. By having better knowledge of databases, you can structure your Java application to take better advantage of the database resources.
Another career benefit to diversifying your technology skillset is your value. Someone who only knows Java and only does server-side code is fairly easy to replace, not taking real skill into account of course. However, if you are mostly a Java programmer, have good database skills, and you are fairly good with HTML and CSS, you can become invaluable to your company. People who can take different roles or tasks on a project, and do them well, are worth their weight in gold. This is even more applicable in a startup environment. Almost everyone in a startup will be wearing multiple hats because there are so few people involved. You may even be asked to be the administrator for the Unix servers or the databases.
Is it always good to diversify your skills? Well, not always but a little knowledge can go a long way. Even if you specialize if high performance Java application architecture, it is a good idea to know a little about databases. Very narrow specializations can be very lucrative, but they can also limit job opportunities. In our current economy, I would prefer to keep my job than to lose it because the company can not afford to keep me around.