Log in

No account? Create an account
03 September 2009 @ 04:17 pm
I was writing a response to a piece of email, and realized I'd written some things about tools and jobs and my opinions on both that were worth jotting down somewhere.

I'm looking to get out of my current field, which is a lot of the hard part. Doing low-level OS and framework programming for painful non-garbage-collected C and C++ embedded stuff is only going to last so long... Five years from now, it's going to be clear it's a dinosaur technology for die-hards who won't quit. Sort of a shame, 'cause I'm good at it :-)

I'm looking at web programming as the next place to go because it's broadly necessary and provides a lot of value to a lot of people -- I see it as having more time before it evaporates. I'm sure ten years out I'll be doing something different, and I'm not planning more than ten years out. By then we'll all be cyborgs in hovercars anyway :-)

I'm interested in newer programming languages (Ruby/Rails, Python, etc) because fundamentally, I see C/C++ going the way of the dodo. There are still going to be jobs there (hey, COBOL's not dead yet), but staying in C-land is going to be more of a squeeze year by year, and C++ has already fallen behind C for userbase, and continues to get smaller. My taste has been vindicated, 15+ years later ;-)

I like Rails as a framework, and I think a lot of the tricks Ruby and Rails do are quite elegant. That is, I like them as tools. I'd accept most jobs in Rails because, y'know, good tools help a lot if the job doesn't suck too much. I speak as somebody who put something like 7 years of spare time into a MUD library simply because the tool it was built on, DGD, was fabulously capable and good to work with, even though it had no community or prospects to speak of.

The problems with the tools you mention: C++ is going to keep dying. PHP is never going to be much fun to use. Java is more credible, but it's been COBOL-like since the early days -- many, many companies use it, and nobody outside of Sun is really passionate about it. New, exciting stuff is rarely or never done in Java first, though it gets there eventually. Or to put all of that another way: it's really not my thing. It doesn't turn my crank.

I'm mentioning two separate, contradictory goals here: stable, long-term work possibilities and tools that don't suck. I'm aware that these things pull in different directions. Rails and its relatives seem to actually be in the sweet spot where there's a fair bit of each of those things, and I'm willing to bet on that working out. I've worked extensively with those tools and, no shit, they're really useful and valuable. It seems like a decent bet. And I'd really like to work with tools that don't suck. C is nice, but it was a cranky old geezer of a language when I learned it -- we just didn't have this crop of promising upstart languages to make it look bad.

I'd potentially be willing to consider work with other tools. Rails isn't the only cool thing out there, and Python was a good language, to name another reasonable contender. Hell, for the right task, even Perl is pretty good. But fundamentally, most tools suck. If I'm going to go to all the trouble of changing fields and spending years doing it, I'm going to move to tools that suck a lot less than what I'm using now.

Rails is that.

And if I'm going to change fields, I'm going to do so to get to one with some durability in it. Web programming is good that way -- the web is really not going away, and it's a big field, and a lot of these tools will last more or less forever in one form or another.

So that's why web programming. That and I've put more than two years of spare time into learning all the little ancillary things that go with it. HTML, CSS, HTTP, JavaScript, XML, JSON, AJAX, Prototype, MySQL -- all very new to me a few years ago, and none quite as simple as it looks from outside. These things take a lot of time to learn, and the equivalents for another field would take awhile too.
meganmh75 on September 4th, 2009 03:52 am (UTC)
are you looking for jobs elsewhere? Just curious.
Josh is currently learning Ruby for a new project and work, and there is a chance my office is going to hire another programmer - if we do, its a position you'd be greatly qualified for.
Noahangelbob on September 4th, 2009 03:58 am (UTC)
While we'd be okay with the idea of moving, we're not really looking in Seattle. Basically, if we move, we want to move somewhere we'd be able to buy a nicer house than the SF Bay Area, but where I'd still be able to find work without too much trouble.

Seattle's just about as expensive as the Bay, sadly...
meganmh75 on September 4th, 2009 04:15 am (UTC)
yeah, i know you'd talked about Pittsburgh before.

I didn't think Seattle was as expensive at the Bay area? (Not trying to argue, i'm just curious - i thought we were a bit cheaper.)

Oh well.
Noahangelbob on September 4th, 2009 04:20 am (UTC)
Seattle's slightly cheaper, but only slightly. Same problem as Boston, which is also slightly cheaper and still has tech jobs.
Krissyrightkindofme on September 4th, 2009 05:04 am (UTC)
It's slightly cheaper but not cheap enough that we could walk into almost no mortgage.

The Mr. Noah is also tactfully not mentioning that I have a long history with Seattle and I'm not sure it would be a great place for me to live given old social stuff up there. :)
Anthonyterpsichoros on September 4th, 2009 12:52 pm (UTC)
Programming in C for embedded devices seems like it will stick around for a long time - people keep coming up with new devices. Whether that market will stay in Silicon Valley, or support the same number of programmers is a completely different story, though. (Who does the programming for microwave ovens? Where?)

But you're right about web programming - making nice web interfaces to big-ass databases is going to stick around for a while.
Noahangelbob on September 4th, 2009 01:41 pm (UTC)
It will definitely stick around for awhile, but understand that "embedded devices so small you have to program in C" is the category that will shrink. Java and other garbage-collected languages are going to each most of that niche alive. The frameworks and underpinnings will stay in C. The apps will all move to Java or C#, and then to something more scripty after that.
eqeeqe on September 8th, 2009 07:50 am (UTC)
I don't think it'll actually shrink -- we keep finding new ways to make tiny devices more powerful using more absurd software stacks, witness Arduino. In 10 years the average RFID tag will bring a Linux kernel out of suspend and process an SSL request using just the backscatter power delivered to the antenna.
Noahangelbob on September 8th, 2009 03:42 pm (UTC)
Sure, but how much demand will there be for those devices? I'm sure there will be some neat applications, but fewer and fewer. Much like embedded realtime code for vital systems in an automobile, you'll see many, many instances of it in the world, programmed by a relatively small number of people. Rather like COBOL or OS/2 at this point, actually, which are both also alive and well in some sense, but not what you want to be programming for.
msde on September 4th, 2009 07:05 pm (UTC)
I know you're too invested in Ruby at this point, but I've really enjoyed working with groovy and grails, and it's a much easier migration from a legacy java app.
Noahangelbob on September 4th, 2009 07:10 pm (UTC)
Groovy sounded neat, especially as a Java alternative. I'm just not looking for something that hooks into Java particularly...