Are your programmers working for you?

Well I’m cruising 36,000 feet above the Atlantic cramped in economy class with better things to do. I came across this article in CIO about developers and what they get up to.

The gist of the story is that developers usually have their own agenda which is at variance with the employer’s interests.  I looked back on my experiences in this line and saw many occurrences of this.

Many years back I had a realization: most developers (programmers in other words) don’t really know what their jobs are!

This may sound a bit alarmist or snide, but I have found it to be an actual fact. After handling this stumbling block in my business I started to get more reliable and usable systems developed. Our company actually started challenging companies 10 times larger and winning!  I had overcome the so called ‘Technology debt’ or main stumbling block in development: developing effective, re-usable and maintainable code.

Software devellopement companies don’t get it, but one of their biggest stops is what I call developer inertia and employee individuation.

These two things are the bane of software development.

By developer inertia I am referring to things like: ‘It needs to be rewritten in Java’, ‘I don’t do C++’, ‘It’s very complicated to do’, ‘I can’t tell how long it will take’, ‘It’s not object oriented’ and so on. You see in my mind any programmer who comes up with one of these is not a programmer but a ‘Hobbyist’! I hope that doesn’t offend anyone but if you look at it that’s what it shows. A professional gets the job done, he or she creates a solution that fulfills the business need because he actually gets what is needed and sees the bigger picture.

By employee individuation I am referring to the guy (or gal) who seperates himself from his team, his employer. He is the one who tries out the latest fad in some development because he will learn something new, not help his employer by delivering an effective solution. He is also the one who says it can’t be done, but then shoots down an external contractor who is willing to actually do it! Any of these sound familiar? I’ve had my share, both as the employer and the external consultant trying to get a good solution.

Well behind these two is just the fact that the employed programmer or consulting programmer does not know what his job really is! It’s that simple. The moment you sign your employment contract you are agreeing to not be a hobbyist but someone who helps the company by creating effective and maintainable/reusable code. It’s no longer just for your fun. The fun expands to being fun to make your employer/company win! That is the difference. That’s the no individuation. That’s being a part of the team, part of the group and so on.

This is not necessarily the programmer’s fault. It’s the employer’s responsibility to make the programmer part of the team and inform him clearly of what is wanted. Here also the employer needs some knowledge as well so he is not hoodwinked. The programmer needs to be a real team player with the teams goals in mind, then we all win.

The ‘innovation’ myth

We hear a lot about innovation in the software industry these days. It is sold as the ultimate thing to aim for in any software endeavor.

I was looking at this the other day and it seemed like there was something missing there.

Lets look at really successful technology companies.

How about Microsoft. Well for one they are successful. Like it or not they are, but are they innovative? Im sure they have introduced some innovations, but none spring to mind as I look! Thats interesting! How about Google. Now they are definitely very successful, and what innovation did they bring to the table? Search engine? No! I think Yahoo was first!

Ok lets look at the biggest tech company by market capitalization, yes good old Apple. Now they are just full of innovation! Are they?! Well HTC came out with a touch phone before them I think! I had it actually, not a bad device. They didn’t invent the Personal Computer.

MMM So where is all this innovation! Or maybe to phrase it better where are all the companies that created all these innovations!

I think this idea of ‘Innovation’ is just a red herring. Its what computer magazines like to talk about to get interest!

All the above successful companies improved their products, found out what was needed and wanted and then produced it. Thats all they did! People needed an operating system and office suite for their PC’s and Microsoft provided that, and they still do! They did not innovate! They just provided what was needed and wanted and put it out there!

Despite all the press around these things, thats all Apple, Microsoft, Google, Oracle and others that have some success have been doing.

Apple listened to their users and kept perfecting their iPhone to the point where it now has a dedicated following. Google did the same with their search engine, and then later with Android! No real innovation per se in both these camps.

So the concept of innovation hides what was really done to achieve success. People can spend time endlessly trying to innovate, instead of just providing what is needed and wanted and doing a good job at just that!

So the moral of the story is don’t worry about innovation. Just focus in being creative providing what is needed and wanted, and do a good creative job at that and I guarantee you you will succeed!

Apprenticeships – the missing ingredient

I started my first computer job in 1985, July to be exact. Just after completing what was called “National Service”.

Lucky for me I got a good amount of computer experience doing my National Service. I learned RTL2, RSX 11M the PDP Operating System, and got to do some numerical optimisation algorithms that were tested in real life!

Anyway when I arrived for my new job as Software Designer (mmm better than Programmer) my boss Greg threw a copy of “The C Programming Language” by Kernigan and Ritchie onto my desk and said: well around here we are going to use this language.

Eager to please I began devouring the book. What was nice it had lots of practical examples. I worked my way through and in just under a week I showed my boss my word counting program. He said I must write a spell checker, with a dynamically updatable dictionary. I started to get used to the idea of parsing text streams. And this was getting exciting.

Now unknown to me, It seems that somehow I had learnt this language in under two weeks and the other old hats had not got to grips with it yet! Just shows you, If you have enough necessity you can do most anything. Well I had no clue, but really enjoyed all the things I could do with this language.

Next we needed a document pre-processor. It needed to include and exclude sections of text based on command line arguments, It had “If” sections and allowed inclusions and exclusions of text in the “If” section or “else” sections.

Challenge was nesting these, and I made my first use of recursion to handle this simply. I even had boolean (Evaluating to True or False) expressions in the “If” sections. This started a monster which I will cover later.

Anyway the point I am making here is that I was apprenticed by Greg and Chris both experts in this programming field. They tasked me and corrected me and kept me learning. This gave me confidence, and caused a large transfer of competence from these two bosses with years of experience to me.

I am very grateful to these mentors. After working with them I got the confidence, I knew how to code, I could do anything in code, all I needed was business requirements!

The sad thing is I don’t see that happening these days. I have seen so many Honours and Masters graduates starting at companies and not knowing HOW to get things done in programming. They have a fair amount of data about programming and what is incomputable and what is provably correct et cetera, but no knowledge how to DO programming and create systems.  In fact what I noticed most was that the longer they had studied, they more they knew was impossible or very difficult to do in computing!

The drop in expertise of the average programmer is very evident to me looking back over these times. And I think the key element causing this is this dropping out of Apprenticeship.