In my quest to acquire gainful employment as a programmer, I have wrestled long and hard with what skills to concentrate on in order to maximize “employability.”
I recently attended a local “unconference” on cloud computing which brought even more questions to the surface.
I also cannot count how many forums and blogs I have read written by those already in the industry on how to get into it.
And what have I come up with?
- Markets differ in their advisable skills sets.
- There are many different kinds of developers.
It seems that, right now, most open positions can be split into three camps: Java, .NET, and Web.
- Java is popular in the open source community. The majority of the Java jobs in my area require experience using J2EE in an enterprise environment. Not only that, they also typically desire two of the following: Spring/Hibernate, MySQL/PostgreSQL, and SOAP/JMS. One of the following may also be beneficial: application server experience (Tomcat/JBoss) or minimal Web skills (AJAX, CSS, etc).
- Web jobs require JavaScript, HTML and CSS at a minimum. Python, Perl or PHP skills help, and it is a good idea to have experience with SOA using REST. (If you are doing JS and have spare time and brainpower, familiarize yourself with a popular JS framework like jQuery or Django.)
- .NET doesn’t have the kind of open source following that GNU/Linux has, although it could be said that that is changing (slowly). It would pay to be well versed in one of Microsoft’s .NET languages (C# or VB.NET). There aren’t many open source .NET (Mono, IronPython, etc.) opportunities locally. In addition, .NET jobs seem to further split into Web and database.
-
- If you like .Net Web, ASP.NET is a must, along with AJAX (or at least JavaScript).
-
- If the database is your thing, get your feet wet with SQL Server, and for heaven’s sake, learn SQL (and XML if you have time).
(Be sure to add a dash of design patterns for flavor.)
There are truckloads of technologies that orbit around these core sets, and it can be tempting to learn the “hot” technologies to increase marketability.
I found I had a hard enough time trying to identify core skill areas and personal strengths and weaknesses. Everything else just served to divide my energy and attention, ensuring that I didn’t clock in any appreciable time using ANY of them. As a result, my mind became a vortex of frustration, confusion, trends, buzzwords and acronyms.
When all is said and done, you must stay true to yourself. Reflect and examine. Will you mind learning skills you don’t particularly want to learn? Do you want to do it for a living? What kinds of applications do you like to create? What kind of environment do you like to hack in? What software blogs do you find yourself reading, and what kinds of local user events do you attend (if any)? Would it be advisable to leverage that past experience?
As far as I was concerned:
- I graduated with my computer science degree last year (Java curriculum). Ever since then, I have been leveraging my Java knowledge to get up to speed on C# and .NET.
- The Java code I have right now is execrable, mostly because the larger apps were student projects. Spaghetti, anyone?
- I haven’t done much Java work since I graduated.
- I have been attending regular meetings of the Portland Area .NET User Group.
- I have just completed an Excel project here at work which required me to get up to speed quick on Visual Basic for Applications. It also required me to get cozy with SQL Server.
- I am in the middle of another project that uses C# and WinForms, also a desktop app.
With all that in mind, the C#/database track looks to be the wise choice. But if I want to make it a career, how does my local job market look? A cursory examination of many local job boards (Monster, craigslist, CareerBuilder, Jobdango, Dice, Indeed…) revealed numerous opportunities.
So do I mind living the .NET world for a while?
The framework is rich (well, rich enough) and its usage is widespread. .NET gives me the opportunity to tackle everything I’d like to at this point in time.
Going forward, I think C#, SQL and XML will continue to be the best areas to apply my energy. (Whew, glad THAT’S done…)
So….
public class devocatDotNet
{
public static void Main()
{
System.Console.WriteLine(“Hello, .NET!”);
}
}
A postscript: (16-Jul) Given the prevalence of Web programming, I have decided to get my feet wet with REST as well. With C# and XML being among my areas of focus, REST seemed like a wise and logical avenue.



