Software Development

Looking ahead at 2009: New development technologies, products, and more

Justin James offers a roadmap of what development topics he plans to cover this year -- from new technologies to Ruby to WPF and more. Let him know if these topics interest you.

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.

Product coverage

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.

Related CodeGear's Delphi for PHP: Initial impressions

Getting started with Delphi for PHP

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)
  • WPF
  • LINQ
  • PowerShell
  • Mobile development
Ruby 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.

WPF 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. Related

Windows Presentation Foundation: Another piece of the .NET puzzle

LINQ 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.

Related

Easily manipulate data with LINQ

Working with LINQ in Visual Studio 2008

Access XML data using LINQ to XML

PowerShell 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! Related

Pop Quiz: Microsoft Windows PowerShell basics10 cool things you can do with Windows PowerShell

Simplify PowerShell script creation with PowerGUI

Mobile development

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.

Topic suggestions?

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.

J.Ja

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!

About

Justin James is the Lead Architect for Conigent.

20 comments
aheilbronner
aheilbronner

Definitely interested in reading more on Ruby...

villagemanduo
villagemanduo

For Africa, in my opinion and looking at what is relevant in my geographical area, mobile web is here to stay, especially with close to 70 percent of the population using this ubiquitous device. I think there should be more focus on the proliferation of the mobile appliacation development industry as this will be the future of technology and a possible solution to the teeming number of enterpreneurs out there. A smartphone is relatively cheaper than a laptop and can second most of the information work demands and communication needs of a start up. I think mobile apps should be it in 2009. Villagemanduo

jslarochelle
jslarochelle

Great stuff Justin. I particularly enjoyed the multiple "Related" links. I look forward to your experiments with MONO and hope that you will have time to look at it and update us on this topic. I also hope that you will continue to follow the development on the language front (I'm a language addict). Of course not just the language themselfs but also the tools available to work with them including alternate compilers and implementation. On this topic I want to bring to your attention an interesting development for all Java lovers out there ;). It's called Ja.NET and is basically a Java 1.5 compiler for the .NET platform (who would have guessed). JS

liviumacoviciuc2000
liviumacoviciuc2000

First, PHP did nothing to Perl.Perl died by its tongue.I remmeber some guys who liked to bragg about the fact that the Perl code they used to write was very hard to understand by other people.Not to mention the awkard syntax for someone coming form C/C++... Second, I don't think that Ruby will kill PHP.From what I heard(twitter.com case), Ruby has some serious issues regarding the integration with Apache(as a server module).Besides, other than RoR, I haven't heard anything about Ruby.However. if someone would compare RoR with Symphony...Not to mention Joomla,Drupal,Magento,phpBB,vBulletin,etc... I am not saying that PHP is the best language.But it does serve me well and is like a C scripting counterpart(and I love C)

Saurondor
Saurondor

I'd like to see more on tools to manage the development rather than develop more with new stuff. Testing and debugging is high on my list. So tools to test JavaScript, web application flow, security and databases among others would be a plus. Profiling to see how well it works. Tools to get metrics from your recently finished web service or application. Project management tools to implement user requirements in the project (code not Word documentation) and enforce it. Also tools to manage the project in terms of dependencies (from outside and inside the development team) and integration tests. My interest this year is to have tools that will easily keep my projects current as new tools and versions come out. Thus being able to take a module out of a .NET 1.x environment and move it to a .NET 2.x or 3.x and quickly modify it, test it and deploy to the workgroup.

Tony Hopkinson
Tony Hopkinson

How about using say SOA to bring new/substantially changed functionality in to legacy code bases. Or using COM wrappers round .net to use in win32 apps. Shifting from a tradition database backend to more of a Document Model. We are looking at all of these things to try and get rid of that damn legacy code. :p

Justin James
Justin James

Right now, I'm wide open to suggestions. Is there anything in particular that you would like to see written about here? Am I making a mistake with my learning plans for 2009? J.Ja

Justin James
Justin James

Yes, I agree that learning mobile application development is critical if you want to get into developing nations! The economics of laptops and desktops (including the OLPC project) make no sense compared to cellphones and smartphones, and the numbers support that. A few years ago, "The Economist" said that the cellphone, not the PC, was the most important piece of technology driving change in developing regions! So take heed folks, if this is your target market, go mobile, not laptop/desktop. J.Ja

Justin James
Justin James

Thanks for the tip on Ja.NET! I've been curious as to when we'd see something like this; Microsoft basically left J# out to wither, I don't think that it even ships in Visual Studio anymore. Java in and of itself is not a bad language; 95% of my difficulties with it have to do with the J2EE ecosystem. Little things, like trying to figure out if a "JDK 1.2" is the same thing as "Java 5" (making up the version numbers, but I am sure that you know what I mean). Or trying to decipher if "Jakarta" is "Tomcat" or what the difference between "Spring" and "Hibernate" is. That's the stuff that gets me tied up into knots every time I head to java.sun.com with the intention of giving Java a try. :( I think that C# and Java, while different in a few ways, share the same benefits and the same drawbacks, and I can live with C#. :) I think that when/if Sun lets the community have more control of Java, there is a really good chance that the ecosystem issues will clear up. My personal opinion, is that Sun loves the benefits of "community", but likes to have too much control of it at the same time, which causes a lot of problems. We saw this with Solaris, too. By the time they opened it up a bit, its market share was plummetting... Ah well, I digress! J.Ja

jslarochelle
jslarochelle

Using JRuby (the Java based Ruby compiler and interpreter) you can use JRuby with Apache Tomcat, Derby and other technologies. Using JRuby will also provide performance gains JS

Justin James
Justin James

Yes, PHP did indeed do something to Perl... it pushed it back to its intended place in the language pantheon! Before PHP hit its stride, Perl had somehow been co-opted into being the language that most dynamic Web sites were written in. PHP was the first reasonable alternative to Perl, and once PHP got a little bit of traction, it was a very quick demise. ColdFusion wasn't replacing Perl, ASP/VBScript wasn't doing it, and it looked unlikely for JSP/J2EE to do it either. PHP was a winner because its syntax was close enough to Perl's (remember, it originally was a Perl module!) to let Perl developers transition easily, while at the same time, being explicitly designed for the Web. If a language was going to replace Perl quickly, it was going to be (and was in reality) PHP. I agree, a lot of Perl was not well written. That's like saying a lot of people drive too fast. It's not the car's fault, it's the people who write sloppy code. In terms of Ruby... like I say, it may very well not displace PHP. But *if* a language were to be pushing PHP aside, it is going to be Ruby. PHP has co-existed with ASP.Net and J2EE for quite a while now, and no one has any reason to jump ship from one camp to another; each one has its pros and cons. But Ruby/RoR most closely resembles PHP, in many, many, many ways. Maybe not at a *technical* level, but in other ways: * Scripting language * The RoR framework is super-focused on the Web * Strong, open source community * Rooted in *Nix, but works equally fine on Windows I may also note a few things... RoR is *not* comparable to Joomla, Drupla, etc. It is comparable to PHP the language + PHP as a Web development framework. Joomla, Drupal, phpBB are various products built in PHP. Also, I think that the Ruby performance issue is not as important as one might think. PHP has a bad reputation on performance for a long, long time, and still does in some circles. Then again, so does J2EE and ASP.Net. In fact, every major Web development system out there is said to be rather slow! So clearly, performance alone is not a decisive factor in adoption. At the same time, Twitter supposedly corrected their issues with Ruby... and still had problems. Twitter's problems are clearly caused by poor architecture, not by any language or another. Finally, the VAST majority of Web applications are not written at the scale of Twitter anyways! The reality is, a 10% performance slowdown under heavy loads is not noticable on most applications, because they just don't need to scale. I am not saying that performance is not important. But from what I can tell, Ruby is not bad under moderate loads, just the heavy ones. So yes, while I don't think that Ruby will *definitely* replace PHP, I think it is a possibility! J.Ja

johnbaerg
johnbaerg

We can't ignore legacy code, but SOA is a good way to deal with it, while simultaneously improving your company's software landscape. My requests: 1. WCF, using .NET. 2. SOA, using .NET. Note: In case you were wondering, #2 is different than #1, which only takes you to the Service Endpoint. I'd like to see who is using .NET to build the following SOA pieces... Enterprise Service Bus (ESB) Service Broker Repository / Registry (using SQL Server?) SOA Supervisor SOA Monitor

mark
mark

The reason so many organizations are still maintaining huge VB6 applications is because the cost, risk and disruption of upgrading them is simply unapproachable. These huge legacy applications can contain hundreds of person-years of IT and business investment in the form of hundreds of thousands of lines of code. To make matters worse, legacy modernization is typically only on IT's radar; it is simply not important or interesting to business sponsors. Furthermore, because the legacy code is written for a different platform most IT teams summarily decide it cannot be useful, so they push for the "complete rewrite from scratch" approach. However, when these teams try to estimate the "from scratch" effort they find that re-doing hundreds of person-years of business and IT work will be very expensive and disruptive. As a result, they cannot make the business case, so the migration is shelved ? again and again. Incremental migrations help, but they also hurt as the organization must face additional complexities and ongoing inefficiency from riding the technology fence. Several years ago, I was system architecture manager at BMW Financial Services. We had over a million lines of VB6 code in production. We already knew the need/opportunities fo adopting .NET. We had socialized policies with the business that said we would steer clear of unsupported technology; and we were successfully using C# for a new SOA and some emerging application frameworks. It was not rocket science to figure out that we could not "just rewrite" 400-person years of development work. We knew we needed a way to leverage the entire codebase for what it was ? an extremely detailed, complete specification of our application portfolio that had been tested through years of use in production. We partnered with a small translation technology firm, Great Migrations, who worked with us to develop a VB6-to-C# tool that would help us transform our legacy VB6 codes into C# codes that were functionally correct and fit our .NET architecture standards. Having this custom tool allowed us to do the migration work in house. We did it as part of our standard releases cycles, without impacting our other commitments to the business. We ended up finishing the migration on schedule and under budget. It is also notable to mention that we did not have to beef up our release testing processes very much. I look forward to reading what Justin comes up with as he explorers the business case for new technologies. The series will be particularly useful if he offers tips on how to minimize the cost and disruption of implementation as well as how to sell the business value.

anthony.albutt
anthony.albutt

In my opinion, .Net Entity Framework is the missing link between databases and applications that will accelerate application development. I have been using it for a week and it rocks.

jck
jck

just ambitious. :) Things I'd like to see? Since Linux is kinda the underdog, and MS has so much exposure. Maybe discuss things to do with Linux development. And, maybe even do a basic discussion of something in an article that you write about a Linux tech. Like you mention Ruby. I've never even seen it. I know you probably wanna fit it in with some broader topic. I just would like to see 3-5 line blurb about what it is and basic use and implementation. There's so many technologies/scripting languages out there, I get lost. Thanks for asking tho. :)

jslarochelle
jslarochelle

Now that I have done a fair amount of programming using both I can safely say that C# is M$ version of Java (of course C# has a few features that are missing in Java because M$ is force feeding every possible language features that it can into it. However I think this is becoming more a problem than an advantage). In fact I think Ja.NET is not of much interest for programmers already using any other M$ .NET language. It is however very interesting for a company like mine where we have a lot of mathematical algorithm written in Java that would be good candidate to be recompiled under .NET for other business units. On some projects they have had to rewrite portions of those algorithm in C# =:O Bad, very bad. Of course Ja.NET will need to evolved for this kind of port to work and they will need to supply at least part of the Java libraries (the core I/O, collections, etc...). JS

Tony Hopkinson
Tony Hopkinson

isn't that big a deal, compared to doing any other thing in .net. Defining what you can sensibly make a service, is the real ball game. Personally I'm a big believer in iterative design for that sort of thing. Start out with something simple and well understood, discover all the problems you never thought of. :p Then start beefing it up. Especially when you are integrating with legacy apps. WCF is simple in theory, and potentially complex in practice. It covers a basic chat using UDP, to fully encrypted, super secure, IPV6 multi point transactions. The beauty of WCF is it divorces all the potential complexity of communication from the end points. I was at Tech Ed and they started off with four nodes one thriggering three others. Then they encrypted it, then they made it transactional. About twenty lines of code added and some config changes, loverly. Like any form of layering though you have to stick to it religiously. Start blurring the edges with nasty bodges to get things out of the door, and you lose all/most of the benefits.

Justin James
Justin James

If it helps, I just did a book review of a book on that very topic: http://blogs.techrepublic.com.com/programming-and-development/?p=773 :) I agree that the .Net Entity Framework looks very interesting. For the time being, it looks like I will be doing extraordinarily little work that talks to a database in the next year, but I agree that it looks very interesting, assuming that it meets the promise that so many other tools have made and broken in the past ("never touch the DB again! When the DB changes, your components update! No broken apps!"). J.Ja

Tony Hopkinson
Tony Hopkinson

Mind you seeing as near every SOA implementation reaches straight for web services.. Perhaps certain people pushing it could do with the heads up....

Justin James
Justin James

I really feel like SOA is an architectural concept, and to discuss it within the context of particular language or framework just does not make much sense. On the other hand, WCF is most definitely a .Net specific technology, and it is something than can assist you in doing SOA. I may cover WCF, but if I do, it will likely be in the second half of the year. It's always possible that Tony Patton will do some posts on it too! J.Ja