sticking with what you know

There comes a time in every programmers life when they have to learn new things and step out the box. Yeah it’s difficult, for sure. It’s all too easy to create the latest application in your software empire, using a language you’ve been developing in for the last 10 years. However, the real problem is thinking this is the only choice. When is it time to abandon this certitude?

First, we cover the forced abandonment. This is when you are pushed kicking and screaming into pastures new, whether you like it or not, i.e. the new job. Here, not only is the new language curve ball thrown (viciously), but you also get whole new set of business rules into the bargain. So what do you do? You program the new language like the old one, only translating the syntax in your head. This is not the best way to learn a language though. Why? Well consider those C programmers trying to program imperatively in Java, Java programmers in JavaScript, C++ programmers in Ruby, and so on. When there is a change in paradigm this mapping strategy just doesn’t work – a similar situation exists with languages that contain a more powerful expression set. It also encourages the behaviour where people learning enough to get the job done, without understanding what is really happening, or that there may have been a better way using “unmappable” language’s features. A better approach would be to write something small, and new, that allows you to explore the language’s features. I’m sure most people can think of something they could write. Furthermore, if you can make it useful to other people, or even your new employer, then everyone’s a winner! This is something I touched on before.

For many people though, this is the only time they will ever consider abandoning. This is sad, and a poor characteristic in a programmer. And to be honest, I just don’t understand it. That’s not to say that I don’t accept that people just do programming as a job, then go home and don’t think about it. However, it’s like most things in life, it’s nice to progress?

As a programmer there will also be other signs that the tide is turning, and you don’t have to be too alert to spot these. Previously I wrote “Perl is Dead, Long Live…Perl?” and being a big Perl fan it was sad to see the language apparently dying, so I know what it’s like. Some signs to look out for may be:

  • the language features are not moving on (Java watch your back) – the people who created it no longer care,
  • the community surrounding the language is dwindling – the people who use it no longer care,
  • there is little in the way of choice when selecting libraries/frameworks – the experts have fled,
  • other programmers have never heard of it – there is no buzz,
  • jobs using it are few and far between – businesses have given up on it, the death kneel.

However, this is all not to say that you give up on your language just because it’s no longer cool – popularity is by no means a great indicator that something will suit your needs. It need not be the case that you give up on your language of choice, instead it could be that you contribute and drag the language forward. But be careful with this one.

Finally, any decent employer will want to see that you are continually developing your skill set – their business needs are continually evolving, so why aren’t you? You are much more likely to land a better job if you contribute to your own education in some way. It looks good and it’s also something to talk about.

So go out and learn something new today, and stop sticking with what you know.

the cost of developing software

I had the opportunity (or misfortune!) to visit an organisation recently whose computer systems are somewhat shambolic. They understand that their systems are not in a good shape, but as this is not their core business, spending money on it is really not what they want to be doing. In fact, it wasn’t a business at all, it was a charity.

This is a real dilemma for such an organisation. Vast sums of money tend to be hard to come by for most charities, and explaining to donators that you spent their cash on an IT system probably doesn’t look great either! But boy, do they need a new system.

The current system is essentially an old school Access database and nothing much else. This would not be a problem if it actually worked OK, but it doesn’t. The system was created around 10 years ago and no longer fits the “business” model. Sure, you eventually get what you need from it, but everything takes around 10 clicks, it doesn’t work with the latest MS Office, forms take 30s to 1 minute to load, the output frequently has to be adapted manually and frustration with the system is high.

Understandably, they are frightened of change though. Not change induced by moving away from their old system, but change as in how much change will they get from £10k to get a new system developed. Nothing I would suspect.

This is not good. But hey, we programmers need to eat, so we can’t expect to do stuff like this for nothing, right?. Maybe charities just need to get real with this situation. You either pay up and get the system you need, or you don’t have a system at all. Screw the inefficiencies created by the absence of such systems and also to the people who are affected. This is just the world that we live in. Eat or be eaten. I mean who wants to sit and develop software and not get paid for it?

Mmmmmm, well loads of people. We must be one of the only industries that give away our time for nothing, and for no reason other that we love doing it so much. So maybe instead of wasting our time developing another new open source web framework in whatever language, it might just be a great idea to develop the software for these charities. Sure, it ain’t going to be as exciting, but it may be much more rewarding.

Has this been done before? I dunno. I can’t find much after a quick search. However, if it has been attempted, I certainly don’t know about it and I suspect neither do lots of other developers. If someone has heard of something similar please leave a comment with the details.

The undertaking of such a task would by no means be plain sailing. It would require lots of input from the staff at charities and their volunteers – because as the software developers we ultimately need to know what to develop. This is achievable though, right? And in the era of open communication afforded to us by the internet, there may never have been a better time. If open source projects can work, then I see no reason why this idea should not be possible, it just needs momentum.