During this time of year, I always take time to reflect and try to think of ways to improve myself. In the three years since I started writing for TechRepublic, my writing style and the topics that I discuss in this space have changed dramatically as a result of this process. So, after some self-examination and considering reader feedback, here’s a general roadmap of what I plan to write about in 2009. Happy New Year!
Legacy code holding you back?
There is an extremely visible divide in the development community: Programmers who are working without the burden of legacy code, and those who are being held back by legacy code. The people in the first group are in relatively new companies, or maybe working on projects that are completely separate from the rest of the IT infrastructure. These programmers usually have the freedom to try the latest and greatest, experiment with new languages, or develop code using a product or library currently in a pre-release state, knowing that the final version will be shipping before the product they are working on goes into production. In addition, these developers have a lot more flexibility in development methodologies since their teams are often new.
The developers in the second group, while they may be interested in the new technologies, tend to be at least two years behind on new technologies. Many of them are five years behind, and a substantial portion of them are nearly a decade behind the ball. There are, for example, a good number of developers maintaining VB6 code. A number of people commenting in the forums over the last year have remarked that they are just now moving from .NET 1.X to .NET 2.0 and Visual Studio 2005. The developers using Visual Studio 2008 are a minority, and even less of them are truly using the .NET 3.X features like LINQ, Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), and so on.
In addition, learning a new skill requires a lot of reading, trial and error, buying and reading books, and other methods that makes it difficult for people to keep up. It is hard to justify that kind of commitment to a technology that may not even be useful to you, unless you enjoy learning simply for the sake of learning.
As a result, I will work hard in 2009 to bring an objective look at some new technologies and to have hands-on experiences with them. I am going to try my best to present the business case for each item, so that you can determine whether it is technology that you can use in your environment. This will help you decide what technologies are worth looking into and which ones are not relevant to you, and allow you to spend your learning time more profitably.
In 2008, a number of vendors contacted me, and I ended up writing about their products. For many of these products, I was not able to speak from the vantage point of hands-on usage. I wasn’t very happy with that, and I noticed that reader response to those types of articles was usually quite weak.
This year, I am going to try to do more of what I did with the Delphi for PHP product, which was to write an article from the perspective of what the company has to say about it, another from my hands-on perspective, and if I really like it, a brief tutorial about how to get started with it.
What I plan to learn
I also plan on learning some new technologies (new to me, at least) over the course of this year. While I am interested in learning about many new technologies, I do not have the luxury of spending time on things that are not potentially useful to me. And, I’d like to be able to report back about technologies that you can actually use.
The technologies I am considering learning and writing about represent the potential future of our industry. The technologies I plan to learn include the following:
- Ruby (possibly Ruby on Rails as well, and probably IronRuby)
- Mobile development
Ruby programmers show the same level of commitment as Macintosh and Linux supporters, while being a lot less assertive in evangelizing their favored platform — that’s an attractive community to me. After taking a look at CodeGear’s 3rdRail, I got to know a little bit about Ruby from hands-on experience, and I liked what I saw. I believe that Ruby is well positioned to potentially do to PHP what PHP did to Perl. I am not saying that it is a guarantee, but everything I’ve seen of the Ruby/Ruby on Rails system leads me to believe that this is a strong possibility.
By the time you read this, I should be well on my way to knowing Ruby. In addition, I am trying to learn it by reading a quality, in-depth book first and then getting into the coding end of things, which is a radical change for me. I am wondering if this approach will save me a lot of headaches, while improving the quality of my code. I suspect that the depth and speed of my learning of some languages that I have used has been held back by the less rigorous, “less theory, more hands-on” approach that I traditionally follow.” I still find myself learning things about the .NET Framework and C# that I probably would have learned in the first 100 pages of a good primer on the topic.
With WPF, this is a question of “when” not “if.” The impression I get from Microsoft is that all of the cool stuff for Windows UI work will be appearing in WPF. At the same time, WPF uses XAML, which Silverlight uses as well. While I am not a super big fan of declarative syntaxes (I am a control freak, I admit it), the interfaces that I have seen that were written in WPF are universally quite attractive. By learning WPF, I believe that I will be giving myself a skill that will be useful for both Web development and for desktop development, as well as being a skill that can help me make better applications.
Everything that I have heard about LINQ is extremely positive. They only negative feedback I hear is from people who are afraid that it enables developers to write queries that should be written by DBAs and put the queries inline with code instead of properly separated from the code. These are very real concerns, but they are cultural.
First of all, the same DB permissions that prevent those “code cowboys” from writing inline SQL will prevent them from doing the same with LINQ. For another thing, it is entirely possible to separate the LINQ statements into a separate code file and still achieve the proper separation of concerns. On top of that, it looks like LINQ-to-SQL is being deprecated in favor of the ADO.NET Entity Framework, with LINQ-to-Entities on top of it. Finally, LINQ is not just about accessing databases; the consistency of syntax across different kinds of information stores is very appealing to me.
Overall, LINQ is quite powerful, and I suspect that in the future, losing a bit of control over the precise wording of queries is going to be considered less important than its advantages.
For the last six months or so, I have devoted a lot of time to administering a growing Windows network. During this period of time, I’ve been using PowerShell sparingly. In other words, when the documentation asks me to enter a PowerShell command I will, but that is about it. Over the last few weeks, I have dipped my toes slightly deeper into it, and I like it. Anyone who says that it is nothing that *Nix shells have had for years is plain wrong. I know because I was one of those people. Yes, it borrows the *Nix preference heavily for pipes. But it goes so much farther than *Nix, particularly since it is piping programmatic objects, not binary or textual data like *Nix does. That really does warrant the PowerShell name, in my brief experience. I will definitely be learning more PowerShell in 2009; it’s a job requirement for me!
I am very attracted to mobile development, but I just do not have the equipment for it (my cell phone is very basic). If I were to get a smartphone at some point, I may take a look at mobile development. It looks really interesting to me, and I do believe this huge market is still wide open. But at the same time, the applications I am interested in developing (professionally and personally) tend to be applications that won’t work well on a mobile platform. If I were to learn this, it would be more for tweaking a device to meet my needs, not as a job skill.
I always love to get reader feedback, so post your comments in the discussion, and let me know what you think about the topics I plan to write about and if there are topics that aren’t on my list that you think should be.
Disclosure of Justin’s industry affiliations: Justin James has a working arrangement with Microsoft to write an article for MSDN Magazine. He also has a contract with Spiceworks to write product buying guides.
Get weekly development tips in your inbox
Keep your developer skills sharp by signing up for TechRepublic’s free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!