Ask HN: How do you inspire programmers to work with older tech?

15 points by jasonhanley ↗ HN
My company has been building a system to manage clinical trial health research for the past 5 years.

It's a really cool, useful application that helps people in the real world do really important stuff.

However -- it's not build with the latest, "coolest" technology.

I find a lot of programmers turn up their nose when asked to work on something that's not using the latest beta buzzy framework or language.

Instead, it seems like they'd rather work on the latest doomed social network craplication as long as they can program only using libraries with version numbers < 1.0.

So how do you present an opportunity working with a really cool, useful application, when it doesn't use the latest tech?

34 comments

[ 2.5 ms ] story [ 65.8 ms ] thread
It depends how old. It sounds like you're working on COBOL or something. Most programmers are pretty flexible I think -- at least I am.

What's your Joel test score? http://www.joelonsoftware.com/articles/fog0000000043.html

It may be an indication why developers are avoiding you.

It's PHP -- but solid object-oriented PHP with a popular framework (Symfony).

Hadn't seen the Joel Test before -- thanks for pointing it out.

1. Do you use source control? Yes (Git) 2. Can you make a build in one step? Yes (one command) 3. Do you make daily builds? Yes (continuous integration) 4. Do you have a bug database? Yes 5. Do you fix bugs before writing new code? Yes 6. Do you have an up-to-date schedule? Yes 7. Do you have a spec? Many 8. Do programmers have quiet working conditions? Yes (remote) 9. Do you use the best tools money can buy? Mid-range 10. Do you have testers? To an extent 11. Do new candidates write code during their interview? Yes 12. Do you do hallway usability testing? No

So we've got like a good 10/12 (I'm giving a half point each for 9 and 10 :)

I am sorry to say, but in this case, at least some people I know would refuse not because it's "old", but because it's PHP. They would joke about rather using COBOL than PHP, indeed.

(I count among them, and yes, I do remember enough to somehow get by in ISPF on IBM mainframe ;))

Your problem isn't that PHP is old. PHP is the same age as Java and there are plenty of people willing to use that. Objective-C is trendy now, and that's 12 years older than PHP.

Your problem is that PHP has probably the worst reputation of any programming language since COBOL.

A good friend of mine chose to take a job doing java at a big company rather then a hot tech startup because he would be using PHP(And he is a start up kind of person). It's not the fact that PHP is bad, its that there are so many other maturing and robust languages.
I would strive for a culture that emphasizes life balance. Reasonable deadlines, recognition, flexibility. Look for the people with kids. Offer part time. Things that the new cool can't touch.
So is there no NEW development going on? Is this just maintenance? If there are new pieces, maybe they'd have a chance to work in newer tech.

Also? The way you framed this question seethes with condescension. "beta buzzy framework" and "craplication" and "version numbers < 1.0" suggest a very negative attitude. Perhaps potential employees are reacting to this perceived hostility, not the lack of hip new tech. I might not mind less than bleeding edge, but I don't want to work for or with Mr Youkidsgetoffmylawn. And I AM an old fart who has been doing this for 20 years!

You make a fair point.

I have been programming for a long time now (~26 years) and I do tend to roll my eyes every time some fancy "new" language/framework/library comes out that's just a re-re-re-implementation of something 20, 30, or 40 years old.

It's simply not practical to keep rewriting large, stable applications using a completely new language and architecture for marginal benefits on an ongoing basis.

I've programmed in everything from BASIC to Pascal to C/C++ to C#, Lisp, Python, PHP, Java, Javascript, can't even rememeber what else and let's be honest -- there's no silver bullet.

They all have their strengths and weaknesses, and they all compile down to machine code.

I just have trouble understanding why people refuse to work with language or framework that's more than a year old.

I don't roll my eyes at new tech, but I do roll my eyes at the idea that new tech can fundamentally solve problems, because the hard problems aren't language problems. I do, however, roll my eyes at using crufty old tech for new projects when better tech is available. I dayjob in the enterprise Java world, but I'm working on a startup at home. I'm still not quite settled on all my tools for the startup code, but I'm definitely settled on the 12 Factor App approach (http://www.12factor.net), and it's led me to the conclusion that mainstream enterprise middleware as expressed in J2EE is fundamentally wrong. Application servers are an inherently bad idea.

That said, my own coding is currently leaning toward Node.js for server stuff. I'm using Neo4j for data and it turns problems right on their ear - for my space (not all spaces), it's a million times better than relational and a thousand times better than document databases. So I'm looking for languages/frameworks that make my particular use of Neo4j more graceful. Started with Rails, but gave it up as the ActiveRecord ORM is kind of Neo4j-hostile in practice. I expect this is true of most ORM solutions (hence the R, for "relational"), so maybe I can make it better in a lighter-weight system.

At any rate, there are no silver bullets, but plenty of wooden ones. I lump PHP in that category. If there's an existing PHP app, then by all means maintain it, but don't use it for new projects!

Well that's insightful. At least I realize the problem I have is perhaps not the problem that I thought I had.

It may just be a strong bias against PHP.

But even if we did choose to rewrite at some point, how do you choose?

Java is "enterprise-y" and people generally hate it.

As you mention, Ruby has fallen out of fashion, and it's always had a reputation for being a resource hog.

Python is a great language overall, but was never really meant for web programming so ends up being a bit kludgy.

Node is super popular with the bleeding edge crowd, but it's only been around for 3 years and speaking of wooden bullets -- Javascript has more language pitfalls than PHP! And there's still no clear winner in terms of framework stack.

Meanwhile, Google has invented its own proprietary languages , which seems like a real Microsoft in the 1990s kind of move.

So even if we started over, it's pretty unclear what we'd choose to build with.

> But even if we did choose to rewrite at some point, how do you choose?

I'd pack my bags tomorrow for a Lisp job.

I have a question about "Application servers are an inherently bad idea." This is the first time I see such statement, but it's stated as a fact. Could you point me to some online resources I can read up on, didn't find anything in google yet.
Oh, and yes, there's lots of new features being implemented constantly, so not just maintenance work.
You pay them a lot of money, obviously. Or do something else that makes up for the fact that you're not using technologies that developers are drawn to.

It's pretty simple economics. If you are using "cool" technologies, you basically get a discount on your developers because there are so many of them that want to work with the tech. The less desirable your tech stack is, the more you have to pay (in cash or benefits) to make up for it.

Or you outsource it to India!
:) Been there, tried that. Did not go well.
I get that, but unfortunately I've seen very little correlation between performance and pay.

In fact, often the most expensive "hired guns" will perform the worth in the long term.

What I'm looking for are people who are genuinely interested in the problem space.

Part of the reason people want to work with the "coolest" technologies is that they want skills that will be relevant/desirable by a wide range of employers. If the skills they pick up working for you are not relevant in other areas, then they're basically wasting their time.
Tell us what tech you are using and we will tell you why no one wants to work with it.
PHP. Unfortunately it's earned itself a terrible reputation due to its popularity with beginners. You can start throwing tomatoes now :)
Yea... I don't work with PHP.

I don't think its popularity with beginners is what earned it a 'terrible reputation' though.

There are quite a few other good reasons to not like it.

I have a hard time thinking of PHP as "old". :) C is old. FORTRAN is old. And I'd argue that PHP's terrible reputation isn't because it's old, but rather because it's primitive. It has all sorts of nasty coupling between layers, and encourages bad programming habits. On the other hand, something like 75% of the world's websites run on it, so it can't be that hard to find PHP programmers.
C is old ? I'm a 31 year old developer and I really enjoy working in C, maybe I'm just old ;)
Well the problem is if this tech isn't relevant how are they going to get their next job. The days of company loyalty are done. Insix months if you do a layoff what will they do?
OK, maybe the "technology" is out of date, how about what you are allowing them do with it?

In my circles there are folks still writing and building new tools for the Commodore 64. Same old 6510/Commodore BASIC but employing new programs with new methods and some new add-on hardware.

So, as another respondent asked, are you offering them the ability enhance and update that older yet cool useful application (using the tried and true technology), or just merely maintaining it?

You show them traction. Show them the money, the business model and sell the dream. That said, if you like someone, be open to their ideas about using new tools. Just make sure they have an incremental plan, not shotgun re-write.
What is it? What is it built with?

Do you offer part time? Telecommute?

It's a system that manages clinical trial research data, built with PHP. Yes and yes.
Well there's the problem. It isn't that php isn't the newest technology -- but rather, that php is a horror to work with.

I'd jump at the chance to work with Lisp (which is far older than php) because it's a joy to work with.

I'd dearly love to work part-time so I could devote more time to writing and personal projects. And I'd love to be able to telecommute so I could do some traveling while working. And for those opportunities I'd happily work in Pascal, BASIC or even COBOL.

But I just can't bring myself to touch php again.

Old stuff is fine with me. I once considered taking a job as a mainframe programmer (RPG). There is always my free time to tinker with new stuff ( which is what I always do).
You don't, you find programmers who want to work with that technology instead. It's much easier to find someone who's goals align with your own rather than trying to convince someone that their goals are wrong.
You convince people that they will have a career with your company and then hire for that. There are people who are looking for a good career over "bleeding edge" -- some of them are even good. (I've worked with some, although even in such institutions, those who are good are in the minority -- and often incorporating newer technologies into side or non-critical projects where they make sense and save time/effort/money/bureaucracy.)

If you can't convince such talent that you can offer a career, then you may be screwed.

P.S. Is PHP significantly coincident with such "career" type positions, these days?

The problem is that php itself has been undergoing a lot of change in the past 4-5 years, and tbh, even symfony 2 is not the "coolest" PHP tech out there. In php land, laravel 4 is the rad thing these days, and from the looks of it, its gonna stay that for several more years. And since its new PHP, most of the people using it are not those who are into "new" techs, per se, but those who used to CI, or Kohana, or Cake, and avoided Symfony because of its blatant copy of Java ecosystem. As a pretty decent php-dev, I can surely say that php 5.3+ can be easily used to create better abstractions and tool-kits than Java.

Also, If you haven't yet, take a look at composer and packagist. Their are several cool php libs up there.

I am also pretty interested in knowing what are you doing about this problem, because my forte is php and JS, a bit more better at at php, and i am pretty confused about which tech to make a product I have in mind in. Since its a distributed system, PHP might offer a better reach (also because of its popularity as "easy" amongst non-devs). But JS over node is a much better lang to work with, though it would hinder getting talent and traction and would require huge amount of marketing etc.