There’s really 3 major software stack categories that I find myself working in these days (well, more like 2.1 really, as it’s special as you’ll see). Thought I’d do a quick rundown on them after a couple recent discussions on development software. I’ve also read a number of articles and many forum questions from people that can’t possibly imagine the need for more than one (which is, of course, their favorite).
I’m currently spending most of my days in Java. That’s to be expected when working at Java shops! It’s a good solid language, with great libraries, and great (well, other than Apple’s, which is finally getting better now) virtual machines for cross-platform compatibility. The cross-platform stuff really does work. It’s an exceptionally rare occasion when I do something that isn’t cross-platform compatible. Even then, the majority of the time I find a way to make it compatible eventually (as in “I finally find a library routine that does what I originally wrote myself to call to the OS”). Most of the development time is in the Swing arena, since it’s primarily desktop apps and I dislike adding third party utilities unless necessary. Web side it’s in JSF, for the same reason as Swing on the desktop side. It’s all solid, reliable stuff. Not flashy perhaps, but gets the job done without the drama of going to a full-blown JEE app. Being able to drag and drop libraries/code between desktop and web side is also great. No real ugly surprises anywhere. One place where I have stepped outside of the pure Sun/Oracle environment is to add Clojure to my standard bag of tricks. It’s a really well done language, and running on the JVM makes it very useful. I’m not one to rewrite all kinds of crazy stuff in it though, I keep it to things that really make sense. In this case, it’s some occasional experimentation with ideas via the REPL and doing some of my more complex mathematical code. Really good IDEs are available as well. Eclipse is a bit bloated these days, but is still a good choice. Overall I prefer Netbeans right now as it’s still pretty fast and supports nearly everything I’ve ever wanted. All in all, a very good stack for common business use, especially where the OS may not be standard across desktops.
My .Net usage has been fairly limited, mostly just some quick updates on web sites that others have done, plus a couple mobile apps back the bad old days of CE, and a handful of small desktop apps over the years (including some recently). I’ve run into some weird library issues over the years, but other than that it’s also a very solid platform. C# is my favorite generic language in the family, but I’ve worked with the VB side as well. F# is also handy (for the same reasons as Clojure on the JVM), but just doesn’t fit me quite as well. Desktop, CLI, and web apps are all well supported here. The Visual Studio IDE is certainly usable, but I find it a bit clunky compared to Netbeans. With the current rate of improvement though, it may well surpass Netbeans in a couple years. I’m expecting to be doing more work in this stack in the future.
– Other (ADW Modula-2, MASM32, project specific & domain specific (SQL, etc))
So, that’s it, just a quick rundown on the major toolset divisions I look at when I’m working with a project. What’s yours?