Skip to main content
Thoughts from David Cornelius

As an independent software developer, I make my living writing scripts and applications for others. In order to maximize my opportunities, I need to be a master of many environments. Since much of my career has involved Windows applications, I am spending quite a bit of effort in other areas.

Several months ago, I converted a Windows server application to a Linux module for a client. That was a lot of fun and a good departure from my usual coding. Another great experience was helping a client who is rewriting a retirement analysis package as a web-based application using an ASP.NET server and JavaScript on the front end. That work taught me a lot about the Bootstrap and Durandal frameworks. I have some possible C# work coming up in the future and a friend recently asked me to teach him Python. Finally, and on a very different platform, there's a possibility I'll get to work on some PLC components--that sounds intriguing!

Fortunately, I love learning new technologies. There are so many cool ways to do things, so many programming languages, so many frameworks and tools. It's impossible to know all of them, but in my position, I must be aware of the most popular ones--or at least the ones where I can find paying clients! More and more, those clients are expecting expertise in building web apps. That, of course, means JavaScript and several different frameworks. With Bootstrap under my belt, I'm now concentrating on AngularJS.

One problem with simply going through a tutorial book and learning the syntax of a language is that it doesn't give me real-world experience. One way to get experience is to work at a company that allows you to grow into new areas of expertise. Barring that, another way is to donate time to a local non-profit organization that you can later point to as an example of your work. It's time-consuming, but if you can swing it, opportunities like that can be a win-win for both sides.

Some people wonder why contractors charge so much, but when you think of the constant learning time that must be invested to stay relevant, not to mention a cushion for time off, it's actually quite a challenging endeavor. If one can manage it, the benefits of being your own boss and picking your own projects and tools are quite rewarding.