is ruby killing your career?

I’m probably at the point with Ruby where I consider it my programming language of choice (I program in both Ruby and C++ in my day job).

Over the last few years I’ve kind of grown to love Ruby but I’m not really one to get passionate over someone else’s choice of programming language – apart from Java, which, I’m sorry, I hate. However, when it comes to employment, there is no doubt in my mind that being competent in a particular programming language can strongly influence A) getting an interview and B) getting the job.

This is why ruby developers, like me, are killing their career. Sure Ruby is cool and Rails is awesome but do a quick check on job boards and see how many people are looking for a ruby developer. Actually, let me save you the time I’ve done some of the work already.

I’m not claiming this to be scientific in anyway what-so-ever but it does warrant some thought. I only searched using the programming language as a keyword, which, I know, may not give the full story but should convince you there is some merit in the point that I’m trying to make. Additionally (and I suppose somewhat importantly) my search area was restricted to Scotland.

First up I carried out a search on s1jobs.com. The table below gives a summary of the results:

Language Number of jobs matching keyword
Ruby 3
Java 18
C# 26
C++ 9
PHP 7

I then tried a cwjobs.co.uk:

Language Number of jobs matching keyword
Ruby 2
Java 35
C# 45
C++ 45
PHP 4

As you can see, the job prospects for Ruby developers here in Scotland are somewhat dire. Sure, people don’t always look for a particular programming language when employing someone (which is a decent policy) but, as I said above, it helps a lot.

I decided to take my crude search a little further as I thought “Hell, there will be waaaaaaay more cool Ruby jobs in London”. Below we have the results, just cwjobs this time:

Language Number of jobs matching keyword
Ruby 57
Java 792
C# 838
C++ 611
PHP 196

That was kind of disappointing! Ruby still doesn’t do that great – even worse when you realise there were over 200 that mentioned Perl and 150 Python. By the looks of it if you want to maximise your chances of getting a job in the UK, and already doing Java or C# in your day job, you’d be better off learning C/C++ in your spare time.

Is all this going to stop me coding in Ruby? Probably not. Is it worth thinking about for a minute? Yes sure. If I was starting my own company and was hoping to get some developers in then I’m likely to be faced with a problem. Yes you can train people up, but that costs time and money. When they leave it may be worse, as the chances of finding replacements at the required skill level will be difficult. Finding a Java/C#/C++ programmer is bound to be far easier.

So is it all bad news for us Ruby developers? Well not if you plan to move to California – yeah yeah I know I’ve went on about it before. I’m not exactly sure of the popular job boards in the US so I went with the only one I knew off the top of my head, careers.stackoverflow.com. The results for the Bay Area are as follows:

Language Number of jobs matching keyword
Ruby 27
Java 33
C# 10
C++ 23
PHP 17

Maybe this was a skewed sample set but impressive all the same. So moral of the story is if you want to be a well paid Ruby hacker make sure you don’t stay in Scotland :-).

what’s it like in silicon valley?

As a computer geek Silicon Valley can almost be seen as the point around which our world spins. For those that haven’t been there I can’t recommend enough heading out to see what all the fuss is about. I mean forget that the climate is, well, pretty fucking special and that cycling to work (in any season) doesn’t mean making sure everything you buy is windproof and waterproof. What blew me away most of all was the staggering number of tech companies.

Within walking distance of my accommodation there was a Yahoo!, McAfee, Cisco, Intel (this place seemed to stretch for miles), not to mention hundreds of other smaller tech companies scattered around the area. If you can’t get a job as a developer in the Valley then you must really question your hygiene.

So is there any chance of this sort of thing happening in this country (the UK) or in particular Scotland? Ehhhh, no chance. Why?

Well I don’t claim to know exactly why, in fact, I admit it’s somewhat of a guess. One thing that I’m certain matters is the number of people who are studying computing at university. In recent years this number has plummeted. For me this is a key point. Until you have got talent, and lots of it, pouring out of universities there is no chance that the Google, the Microsofts and Facebooks of this world are going to even consider a small office, never mind a campus. It’s just not worth it.

There is also a different mindset amongst the graduates here than there is at, say, Standford. It’s just staggering how many undergraduates are considering coming straight out of collage and starting their own business (Startup School was just full of them). It’s ingrained into their psyche. I’d almost guarantee you that if I went to a lecture theatre full of final year students here in Glasgow tomorrow and asked how many are seriously considering starting their own business I’d be able to count them on the one hand and have four fingers left over.

Most students will be happy getting a job at JP Morgan or some other mundane banking establishment where you are simply a cost centre.

This is a vicious circle as the reason that Google, Yahoo!, Twitter, Facebook (to an extent) all have large campuses in Silicon Valley is because this is where they were born. So without this embryonic growth pattern it’s hard to see how places like Scotland can create and attract these large software companies. The fact is the talent is just not here in sufficient numbers. To get the gist of the situation, just ask yourself how many people in your current job are really really smart and productive, it will be low, now imagine how you get 500+ more of them.

I hate to be knocking us as a nation but something has to change and it has to be BIG for there to be any hope of being part of this technical revolution. Or maybe that boat has already well and truly sailed.

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.

it’s easy to live in perfect hell

Just the other night I was watching a video of a live music performance on YouTube of my favourite band of all time Manic Street Preachers. While watching I observed how young they looked in the video. It then struck me how I remember the era when the video was recorded as if it were yesterday. The only problem is that it was nearly 13 years ago!

I’m pretty sure that I had many more ambitions and hopes back then – I would have been around 18-19 at the time. Certainly over the years my hopes and ambitions have changed. For better or for worse? I’m not sure.

There are things that I knew I really wanted. One of them was to attended university, my parents never forced me into this, I simply wanted to go (I was the first person in my family to do so). During my 4 years at uni I became certain that I wanted to do a PhD. However, by the end of my 4th year, the only real post-graduate opportunity was at the University of Bath, and I wasn’t really interested in moving. As a result, I ended up taking a job at OKI. The week after accepting the job, I was contacted by someone at a local children’s hospital about an opportunity to undertake research for a PhD in 3D modelling of the eye for the early detection of certain diseases in children. I turned it down. I thought to accept it would be unfair on my new employer.

After working at OKI for a year I moved on to work with at Cisco Systems. Eventually after 3 years at Cisco (the last year being pretty miserable, but I was kind of holding out for a possible redundancy payment) I got made redundant. As it happens, just before I got made redundant, I had applied for a PhD position in the area of algorithms, and was fortunate enough to have been accepted (I ended up obtaining a really great supervisor and was glad I held off). So not only did I get a pay off as part of my redundancy, I also had been accepted for my PhD prior to being made officially redundant. Sweet. Persistence pays off.

So, why the life story I hear you all say. Well, it was basically to illustrate the point that if you want something, you really need to go and get it. During my time at OKI and Cisco I had become stale – you just settle in and accept what is coming to you. It was rare when I tried to force what I wanted in those jobs – and in actual fact when you did, you were usually met with resistance. When you meet this resistance to ideas it is probably the time to move on. In large companies you have too many people protecting their own jobs.

Now, what exactly is the relationship between what I’m saying and the music video? Well if the band in the music video has aged that much, then I have to – despite the fact that it doesn’t quite feel like I have! And I think the older you get the less likely you are to make bold moves in your life. But you shouldn’t let this happen. You should always have goals, if you don’t believe me, believe Seth Godin.

I often find myself writing/talking about poor management and poor working conditions. However, it’s not just me, with the increase in the number of blogs and social network sites, people are finding it easier than ever to express their opinion. It’s not too difficult to find people saying: “I need two monitors and a Herman Millar chair”, and “My manager doesn’t have a clue how to do his job”. The thing is, many will be like me, that is, they have never been a manager and never owned a company. Both myself and others have a total barefaced cheek to criticize something we have no experience of, but it also shouldn’t stop us.

So, this brings me round to my point. If we are going to complain about, our managers, our co-workers, or the company we work for, then maybe we should get off our arses and do something. Stop sitting about telling people how things should be done or moaning that nobody listens. The cost of doing something for yourself these days in minimal, so if we all really believe that we can do things better then do something about it. This is what moves society and technology forward.

Not everyone is going to read this and think “Yeah let’s do it”. You will have the folk who say “It’ll never work”. You just have to ensure that you don’t surround yourself with these people – I’m not saying ignore advice here, as you may genuinely be exploring something that is never going to work, but ignore advice from those who say a lot but do very little. It will be the same folk that say “He was just lucky with that business”, or “I could have done that”.  Their procrastine nature will only dampen your enthusiasm.

Surely there can’t be a person who is happy to live in mediocrity? The only glowing benefit of Capitalism (and it’s the one that allows it to beat all other systems into the ground) is that it promotes the bettering of oneself and in turn society in general. It’s easy to mistake Capitalism for greed, but they are two different things.  So if you find yourself hit by the credit crunch and unable to find work, moaning about your job, or moaning about how everyone else appears to be making all the money, stop it and try to do something positive. I’m not the only one saying this. The legendary Paul Graham wrote and essay about it and many people who own their own software companies are saying sales are as strong as ever.

Just remember “Libraries gave us power, and then work came and made us free”.

nonsense job adverts

I’m not currently looking for employment, but last week I was browsing the job adverts on a certain web-based recruitment site. One of the first adverts that I looked at had a description that went something like this:

We are looking for a web developer whose skills include the following: Java, Perl, Ruby, Python, HTML, XHTML, CSS, JavaScript, and Flex.

Exactly what language is their product written in? Is it all of them? I mean for god’s sake what a ridiculous, unreasonable and unobtainable set of requirements to be looking for. This was not an isolated incident though, there were a few adverts that contained this kind of nonsense in them – they were usually looking for someone with 2-3 years experience into the bargain. So, who applies for these jobs?

It may be someone who thinks they know each of these things inside out. But, forgive me if I’m wrong, I’m willing to bet that no such person exists – especially in their target audience. Any candidate who says they are experts in all of these things would have me suspicious right away.

Next, we have the folks that think: “Screw it, I only have a few of those skills, but I’m going to go for it anyway”. For me, the alarm bells would be ringing about the type of company that creates such a poor job spec. However, the person applying may be desperate. Now, given that that are unlikely to obtain many people applying for the job with the complete array of required skills, and presuming they actually want to fill the position, they are going to have to accept someone who is less qualified.  So, is possessing only two of the required skills enough to get you an interview? Or is there one skill in particular, say Java, that they are really looking for? If this is the case then JUST SAY THAT ON THE JOB SPEC YOU MORONS. It’s not that difficult, here, let’s give it a go:

Knowledge of Java is essential and experience of dynamic languages and web technologies will be looked upon favourably.

The companies core product must be written in some specific language, does it not make sense to promote the need for this skill? I cannot imagine any organisation creating a product with this myriad of technology. It’s just absurd.

So what are these companies achieving with job specs containing such utter nonsense? I don’t know. If my previous observations are valid, then it’s stupid candidates that think they know everything or people who are desperate. Is that a good thing? I think not.

I have never applied for a job through an agency, or website like this, but I know many who have – often you have no idea who the employer is before you enquire and I hate that (for fear of it being a bank). It is my personal opinion that it’s better to look for a job on, say, a companies website rather than through an agency – it takes a bit of work to identify companies in your area, but it’s worth it in the end. If a company can’t be bothered updating their website to include their latest job advert, they they probably ain’t worth working for; it’s either laziness or bureaucracy preventing this them putting it up, either way, they are probably best avoided.

Enough of the company bashing though. There is one other thing that I would like to talk about in more detail, and that is the candidates. In the past year or so I have heard a few “interesting” stories about people who have showed up for interviews at various companies. I would like to share them with you.

The first is about some dude who turned up for an interview at a rather large web-based company that sells, well just about everything these days, in a pair of denims and a running shoes. I mean what in the face of this Earth would make you think that dressing in this manner was how you go about getting a job. I’m all for dressing casual, and I wouldn’t work for a company that made me wear a shirt and tie to sit at a desk writing code, but it’s an interview for the love of god, dress appropriately.

In another incident a young fellow turned up for an interview and when asked why he wanted the job he said that his Mum had forced him to go to the interview. I was astounded when I heard this – I did piss myself laughing though. Maybe he just didn’t fancy the job and was too nice to say this. I must admit, though, I have done something similar: basically, I was asked if I would go and “talk” to someone who was looking for a developer, and as it turned out, I didn’t want the job, but the guys were so nice, I found it difficult to tell them I wasn’t interested (the work they were doing was simply “not my thing”). I ended up stringing it out for several interviews, I even answered my mobile phone in the interview (I had a legitimate reason mind you), and they still invited me back. This nicely brings me onto my last, and most recent, story.

Only a few weeks ago a friend told me about a guy who had turned up for an interview and when they went down to greet him he was on his mobile. Not only did he not hang up, he put his hand up to their faces and said “I will be with you soon” and continued on with his phone conversation. As far as I’m aware this conversation was of no particular importance, and as he had applied for the job (in my case I hadn’t), so you have to assume that he wanted it. Hardly the way to go about getting it.

Anyway, I’m always interested in hearing about the stupidity of candidates and employers, so feel free to leave your stories in the comments.

shattering illusions – is google losing its googly culture?

I have forever viewed Google as the ubiquitous dream maker for the software engineer.  You work on great products (Google Search, Gmail, Google Reader, Google Apps,  Google App Engine, the list goes on), and they appear to treat developers well (20% time, free lunches and drinks, gym membership, and more). However, it seems that not everyone is happy if a recent article (entitled Why Google Employees Quit) on Tech Crunch is anything to go by.

It’s understandable that people who no longer work at Google may have reasons to slate their previous employer.  However, these people did not go out their way to highlight problems at Google, instead Google actually asked them why they left.  I think we can safely say that many of the points raised in this collection of responses contain valid issues.

By far the most common complaint is with regard to the recruitment process.  It apparently takes forever. It obviously never stopped these people from joining, but left a lasting impression.  However, if they could get over this hang-up with the recruitment process, what really is the problem?

First, as much as people like to pretend that it doesn’t matter, money plays its part. This seems especially relevant to the ex-Microsoft employees.  These employees seemed to justify the money drop experienced when moving from Microsoft to Google as being “worth it” to work in a “Googly” culture – where Googly tends to translate into FUN.  It seems strange that Google does not have similar pay scales to Microsoft, as they are direct competitors on this front. This may become more of an issue for Google if it appears that their Googly culture is in recession.

Another point that popped up on more than one occasion was management. This is always an easy shot though let’s face it, but it was reiterated by enough people to take a look. My initial impression is that there exists the typical competitive race for promotions (as in looking good, not necessarily doing good), this always leaves certain people unhappy, myself included, it always brings out the worst in people.  I’m genuinely surprised and sad that this sort of behaviour has seeped its way into Google, and it seems the inevitable outcome of a standard management hierarchy in large corporations. Will we never learn anything from Gore’sSelf-management and the flattened hierarchy“? It seems not.

So, is it too soon to say that Google may be losing its highly valued culture? Such a shift can surely only play into the hands of Microsoft, with no difference in culture, and higher salaries, it seems like a no brainer for the top candidates.

My own personal opinion of Google (as an employer) has diminished somewhat after reading the aforementioned article – whose contents must present itself as a PR nightmare for Google. I have maintained (indirectly) for quite some time now that people will only accept smaller salaries if the environment is FUN to work.  Fun seems harder to maintain though as a company grows, and becomes filled with those with glittering ambitions for their own career. Unfortunately the ethos of working together to obtain mutual reward seems sort of out of place in the new millennium. I suspect even this recession, or a prolonged depression, will not stifle the greed of those that are selfish and do not care.

does not being aware of np-completeness make you dumb?

I have recently been reading a series of posts ([1][2][3]) from authors about the pros and cons of having or not having a degree in CS.  I’m sure the argument goes both ways, but my thoughts are focused on how does someone who has not spent 4 years obtaining a degree, accrue the knowledge they may need.

For the purpose of this post I will use the concept of NP-completeness (or in fact algorithmics in general) as an example.  I think from experience I have learned that NP-completeness is a topic that quite a few developers are not familiar with despite its importance in the field.  Many may be aware of it through Jeff Atwood‘s post over at codinghorror, where he suffered at the hands of the topic’s rigour.

So how does someone who has never obtained a CS degree find out about such a topic?  My feeling is that they don’t.  OK some people will go out their way to find such topics but I haven’t met too many that do.  Some may even point out that NP-completeness did (does) not appear on their course curriculum, in which case it probably boils down to Dan Dyer‘s point about the virtues of choosing a good university course.  What I’m trying to say is that someone who goes to a decent university and obtains a good degree has spent (possibly) 4 years learning about the foundations of computing, giving them a good base to make important technical decisions.

For example.  You are hit with a problem at work, let’s say some sort of job scheduling problem or even allocation of people to resources.  The problem seems easy when described and the agile developer takes over you and you start churning out code.  However, if this person had only taken a simple algorithms course at university, he might have thought twice about jumping into such a problem – as many variants of such problems are known to be NP-hard.

This brings me back round to my question, where do such developers learn about these things?  They may read articles on sites like dZone or reddit, but c’mon, let’s face it, these sites are pretty good at giving you the latest articles about Java, .NET, jQuery, but it’s rare that you see an article about algorithmic issues rise to the top of the popularity list.  I mean who wants to read the details of what a B+ Tree, Trie, Boyer-Moore string matching algorithm, etc are, because it’s hard going, instead most will take the easy option of reading guff like 7 ways to write beautiful code.  However, if you attend university you are forced to know many of the finer details of CS, as you are examined on them. OK, you may not need them for a simple web app, but an employer is certainly going to be happier that you have the details in your head should you need them.  The point is that you never know when you are going to need such things, and knowing when you do is maybe what you spend 4 years gaining.