Software Development

A developer's wish list for 2010

Developer Justin James has weighed in on what he thinks will be the development trends for 2010, and now he offers his personal wish list for the new year.

I weighed in on what I think will be the development trends for 2010, and now I offer my personal wish list for the new year.

The alternative language and system revolution

Don't get me wrong, I like .NET -- it's a great "kitchen sink" system with tons of advanced capabilities (LINQ, lambdas, parallel programming, etc.), especially in .NET 4. C# is pretty good, as far as mainstream general purpose languages go; and Java is pretty good too (although I haven't touched it since 2002). PHP is a workhorse system, but the innovation is not there right now. But I see a ton of upside in some of the alternative systems and languages.

F# can potentially make .NET a true contender in scientific and other algorithmic computing (combine it with Azure for instant supercomputing on the cheap). Alpha Five and OutSystems' Agile Platform are getting great reactions from users who say that their productivity is quite high with these systems. (Note: I hope to do a review of Alpha5 when V10 ships, and I have an agreement with OutSystems to write a series of developer diary style articles in the near future.)

As IT shops get value out of languages such as Ruby and Python, I hope the languages may be more receptive to alternative development environments. Right now, a lot of time and effort is wasted on very routine work that these less mainstream systems handle quite nicely and easily, freeing more manpower and brainpower for real problems.

The end of stupid Internet writing phrases

Folks, the correct phrase is epic failure not fail. The last year brought a slew of these really dumb phrases into mainstream writing, and I would love to see 2010 mark a return to normalcy.

More leisure time

I put way too many balls in the air in 2009. While I've was able to keep being a good father and husband, the things I enjoy to do in my leisure time, particularly reading and watching movies, greatly suffered. In the last month, I've been able to reclaim some of that time, and I really do not want to let it go again.

J.Ja

Disclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.

---------------------------------------------------------------------------------------

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.

16 comments
jean-simon.s.larochelle
jean-simon.s.larochelle

innovation in software development. I'm not sure people realize how much .NET has benefited from the knowledge accumulated through the whole JVM experience. Now that Java is open sourced we know the JVM will survived as a platform. However, there is still a lot of know-how at SUN and I hope the community can keep benefitting from this.

jshaw4343
jshaw4343

Are you trying to be funny using that term in the context of your complaint. I realize it is supposedly a commonly accepted term, but I've never liked it. Not a dig, just thought it was funny.

Slayer_
Slayer_

Why does nearly every language require 2 gigs worth of client side support files to run?

Justin James
Justin James

As a developer, what would you like to see change in 2010? J.Ja

Justin James
Justin James

The .NET and JVM communities feed off of each other, compete with each other, and copy off of each other. Sun brought an immense amount of technical talent (even if it was often out of step with what the rest of the community actually wanted/needed) to the table, which forced Microsoft to step their game up. As a .NET developer, I'm grateful for Java because .NET would still be barely struggling to get to 2.0 without the threat of Java around the corner! J.Ja

Mark Miller
Mark Miller

I've been waiting for a while for one of the major computer platforms to support bytecode natively, perhaps in a co-processor. I think it'll happen someday. As far as .Net goes, I imagine the reason why you still have to load 2 gigs of stuff is that customers haven't adopted the newest Windows platforms to a great extent. .Net was supposed to be included with the OS since Vista. Anyway, for one thing, with the languages that are used today, they're not called "virtual machines" for nothing. They are primitive computers in software, but they work differently than the computer hardware. The native computer hardware is designed for a bygone era. It only understands machine codes, primitive addressing, and a primitive stack. It doesn't understand garbage collection. It doesn't bytecode. It doesn't understand types, much less bounded ones. It doesn't understand references (only pointers/addresses). It doesn't understand access restrictions to objects/data. The underlying machine doesn't understand how to support the debugging of this kind of stuff. It doesn't understand how to parse or generate anything. The hardware does understand how to move data around (like a graphic object on a screen), and translate digital to audio, and vice-versa. Some hardware platforms understand the concept of protected memory so worms can't propagate. VMs take advantage of that. But currently, all of the stuff the hardware doesn't understand has to either be incorporated into the OS, or come separately. If a machine were built to handle the things I talk about above, which they can't do now, it would be incompatible with all the software that's compiled down to "native code". The machine that "native code" could run on would have to be emulated (with a VM). Also the C language would have to be modified to either not use pointers, or just emulate them (Go, anyone?). Microsoft has already done this to C++ when the compiler is set to use managed code, though I think it's still possible to mix native pointers with managed code. A dicey mix.

GoboSlayer
GoboSlayer

I can only speak for .NET, but VS2008 has a heavy footprint (2GB+), however the .NET Framework's footprint (runtime only) is pretty small. The folders on the file system for 2.0, 3.0 and 3.5 come in at 675Mb total on my system. I also agree with Justin, even with this, the application load time is still pretty good. Cheers,

Justin James
Justin James

The only thing that makes it OK (at least with .NET, I can't speak for others) is that the application itself does not load much of it at any given time... J.Ja

Tony Hopkinson
Tony Hopkinson

it right first. As opposed to a lot of corporate dithering leaving me with no option but to bodge it. Again..... Tools and methods are effectively irrelevant, if you aren't allowed to use them properly. Needless to say, i'd also like to win the lottery, and beome Bill Gates and Hugh Heffner's heir. Some times you have to settle for less....

jck
jck

As a developer, I'm actually looking to move away from programming. Reason? I used to find some solice in programming. I could get into it, write code, program things to make things go "tick tock", enjoy the challenge, etc. Anymore though, it's just not doing it for me. Lately (the past couple of years), it seems I've either been expected to: a) Do things with antiquated technology that cripple a development schedule and make it look like I can't do a good job. b) Do things with new tools that no one has designed/developed/architected yet (custom controls) c) Do things with a programming language that it wasn't meant to do, but I'm still expected to do or break the news to the top-level myself that it can't be done or would be most detrimental to schedule. Seems that the day of a Systems Programmer/Software Engineer being the "go-to guy" to find out what it would take to get something written is done and over. Seems where I've worked, you could do your best to schedule, milestone, and plan a project only to be told it isn't right...or to have them accept your schedule only to heap more work on you during that timeframe (and still expect you to keep within cost and schedule). If I had one wish that would keep me in the ballgame developing applications, it would be that IT would be given clout back in the workplace and not just considered the magic leprachauns of PCs that run around and make computer usage for end users "magically delicious".

Slayer_
Slayer_

If you made a 1 MB application, your total install is almost 700mb! That's terrible, plus countless registry entries and vulnerabilities must be added to a system for it to work. If languages, instead, only included what was required to run the application, it would be far better I think. And the speed IS terrible, Put any .NET language against C++ and see the difference.

Mark Miller
Mark Miller

[i]Do things with new tools that no one has designed/developed/architected yet (custom controls)[/i] I've experienced this. What I found kind of rewarding was getting the opportunity to do this wrong, and then doing it right by implementing my own architecture, but in a way that was compatible with the framework I was expected to use. Only thing was when I tried doing it right I went way over schedule and ended up eating about half my development time (working as a contractor). It wasn't really my fault, since my boss was the one who set the schedule the second time around, and he made it really unrealistic! [i]Seems where I've worked, you could do your best to schedule, milestone, and plan a project only to be told it isn't right...or to have them accept your schedule only to heap more work on you during that timeframe (and still expect you to keep within cost and schedule).[/i] I haven't experienced the first part, but I experienced the second part a lot. It was typical in IT services. I expected it. I was often told when I was taking SE in college that requirements documents were obsolete almost from the point where the project begins, because the customer will ALWAYS change the requirements mid-way through a project. What they didn't tell us is that typically our projects would be fixed-bid, and in that case you don't get an increase in your budget for handling the new requirements! So I guess the lesson is "always, always, ALWAYS pad your schedule and your budget. You'll be sorry if you don't." I got out of programming for a while, because I wanted to reorient my thinking about it. I got really inspired by seeing a systems approach to programming. I used to have this habit of thinking "I need to program an app.", always thinking I needed to specialize. My ultimate goal is to think more in terms of systems when I program, not "there's an app. for that". I realize this will most likely disqualify me from the typical IT positions. I am going through a career change, and it does feel a bit like jumping off a cliff. I may go back into computer science, just working as an academic, at some point.

Slayer_
Slayer_

I had to create an automated installer that could install several programs including .net 1.1 and .net2. For every legacy install that didn't support command line unmananged installs, my program had to click through the buttons on screen manually. The quickest and easiest language for the job worked out to be VB6 as all XP machines have the VB runtime files preinstalled with Windows.

Mark Miller
Mark Miller

Every time I've seen a C++ app. professionally deployed on Windows I've always seen it install its version of the MFC libraries, just to be sure the right version is installed for itself. I think there's a different, standard version of the MFC libraries installed on each version of Windows (though now there should be one predominant version with XP dominating the installs). The problem is it's never the newest version of the MFC library. It's always some old version. The thing is, it's usually not noticed when the software is installed, since the distribution version of the MFC library is around 1 MB. The install doesn't miss a beat with a file that size. With the professional apps. I've worked on in C++, often the MFC library is larger than the app. code itself, maybe around a half-megabyte or 1 MB at most for a big app. The only reason the MFC library is needed of course is that the native OS doesn't support objects, and neither do most of the system DLLs. The reason why MFC is so small compared to .Net is it's not comprehensive like the different framework libraries are in .Net. A lot of times in C++ apps. calls have to be made to the C-based Win32 API in the application code. From a system perspective it's no big deal, since C++ can make a C call. I always found it a pain, though, because I had to switch metaphors between the "MFC way" and the "Win32 way". I remember on the last MFC project I worked on I thought I needed to write a custom module for an installer (using the Windows Installer), to tweak a permission in a directory, so that the installed app. could access a file. It turned out I was doing this the hard way, but I didn't know that at the time. Anyway, I wanted so badly to write the module in .Net. The documentation for doing what I wanted to do was easy to find, and it would've taken maybe about 5 or 10 lines of code to accomplish what I wanted. Easy. The problem was the customer didn't have the .Net Framework installed on their systems, and I knew that in order to do this one little thing in .Net, it would require something like a 250 MB install (in the days of .Net 1.1), and this wasn't to support the app. itself, but just to get it installed. I knew that was absurd. So I wrote the module in C. From an installation perspective it made a lot more sense, though it required a lot more research on my part (the documentation for doing this in C was harder to find), and if memory serves it took twice as many lines of code, but it did the job, without making it a heavy install.

jck
jck

I've thought what might be best for me is pursuing a career in another field, and doing IT-esque things as a "side" or hobby. I used to teach part-time as a moneymaker, although some of the things I was teaching were absolutely boring (Lotus 1-2-3). But, I know what I'd love to get into if I could: teaching gifted students. I remember being a "brainy" kid and getting bored in school a lot. I'd like to deal with kids who want to do as much theorization and imagination as they do study and extrapolation. I think that sort of thing is key...thinking outside of the box.

Editor's Picks