Pramatr Blog

A collection of articles from pramatr.com on technology, security, software and anything we find interesting

  • Subscribe

  • Disclaimer

    The opinions expressed here are my own and are not necessarily shared by my employer, any other organization, or any other individual. Any trademarked names or labels used in this blog remain the property of their respective trademark owners. No guarantees are made regarding the accuracy or usefulness of content on this blog, though every effort is made to be accurate.
  • Meta

Beware, The Developer Who Isn't Interested In Development!

Posted by pramatr on August 23rd, 2008

When I first started my software engineering degree, there were plenty of people I met who simply didn’t want to be there. After a few months they’d had enough and moved onto something else, and after a couple of years the classes had halved in size. I’ve actually met a few people in the industry who behave like they don’t want to be here either, but I was hoping they were in the minority. After speaking to a former colleague however, I’ve found that the problem might be much worse than I had thought. The contradiction of the developer who isn’t interested in development.

Let me just start by saying, if you’ve got this far you really aren’t one of the people I’m talking about! Hopefully you’ll see this as a good thing :-) .

A previous project I worked on was mainly composed of short-term contract staff. The project saw large staff turnover and the code quality was generally quite poor. Many of the developers simply weren’t interested in the project and why should they be? Team members that don’t have to take long term ownership of a project don’t really have to worry about it’s quality or longevity. They can stumble through a project putting in the minimum amount of effort required to get the job done. They can move onto a new project and leave behind all the problems for someone else. When working with transient staff, you just have to be pragmatic about this, it’s just life. Some of these staff will be true professionals and give a project their all, others won’t.

Now I know this sounds like an obvious thing to say, but when putting a team together, you need to hire developers who actually take an interest in what they do! Many people involved in the hiring of staff really don’t understand this, and instead focus on finding someone who claims to be buzzword compliant. Having the right skills is an obvious requirement, but this isn’t the only consideration that needs to be made. A large percentage of developers out there, just aren’t interested in the project they are working on and more importantly they aren’t interested in software development in general. The more developers I talk to and the more horror stories I hear from them, the more I’m convinced that these people are on the rise.

Developers that aren’t interested in what they do, don’t invest in themselves and don’t strive to improve not only their skills, but also those of their team mates. They don’t take pride in the code they develop, and a real danger if you work under a developer like this is that you will stop taking pride in yours as well. They will never read technology blogs or articles, they will never be found viewing DZone, TSS, infoQ and they will never pick up a technology book. They have no interest in development outside the hours of 9am-5pm and they probably never will. They are basically happy treading water, just getting by.

They are probably perfectly nice people and outside of work you might have plenty of things in common with them. In a workplace however, teams incorporating individuals like this are always fighting an uphill battle. The knowledge transfer will always be a one-way process. Opinions in important decisions will seem like a diversion from everything else they could be doing. The most reaction you’ll ever get in a discussion is a nod of their head or a shrug of their shoulders. In the past I’ve found this can actually be somewhat infectious and it gradually starts to have a negative effect on the entire team.

You’ve basically got the worst kind of code monkey. One that doesn’t really know what they are doing, doesn’t understand what they should be doing, doesn’t care that this is the case and just isn’t interested!

Now if you are a code monkey who’s happy hacking away for eight hours a day, you aren’t interested in what you do and you really don’t want to learn, that’s absolutely fine and good luck to you! In my experience however, if you want to build a team that’s going to produce a product of quality and longevity, you need to steer well clear of these people! These people will drain your other team members, slow you down and will generally cost you lots of money!

You’ll find these people everywhere. They’ll always be too busy to help, but they won’t be shy in asking other people to help them. They won’t want to develop things the same way everyone else does and instead they’ll develop their own style. They will never want to get their hands dirty and instead want to do the cool R&D jobs. When everyone is too busy to help, instead of rolling up their sleeves they’ll turn to the wealth of free labour on the Internet forums. The majority of posts on forums are from hard working developers, but you’ll also spot the other type as well.

So as a cautionary tale, if you have employees who fit this profile, do a quick search on the Internet for package and class names that match your project. You might find nothing, on the other hand you might find the original author of your code on an Internet forum. Why not contact them and offer them a job, you might as well if they are writing code for you anyway.

If someone really isn’t working out in the team, you need to do something about it. The longer this goes on, the greater the negative impact will be on the team. This can very quickly go from one problem to several. If there is a hint of promise at all in this developer (and as an eternal optimist I’d like to believe there always is), work with them to try and understand what the problems are.

Get them involved in the team: find something they are good at or interested in and try and develop this talent. Encourage them to go off and find out more about this and report this back to the team, make them feel important and make them the subject area expert. You need to do everything you can to make these people integrated and motivated. If nothing interests or motivates your developer you’re in trouble. If it doesn’t work out, in many cases it’s better for these people to do nothing at all, such is their negative impact on team performance. At the end of the day, do you really need people like this in your team?

When you are looking to hire new team members, you need more than just buzzwords. Go for the developer that shows real enthusiasm and interest in what they do. Go for the developer that’s contributed to open source software or forums to help other people out. Go for the developer who is willing to admit they don’t know the answer to your question, but they do know how to find it. Go for the developer that asks questions and has opinions on things that matter. Go for the developer who is excited that you have a library of books for them to read. These are the people you can work with, you can encourage and you can help to become better developers. These are the people that will be an asset to your team and will help you become a better developer as well. One developer who’s passionate and highly motivated, is worth so much more than a bunch that aren’t!

Above all else, avoid the contradiction of the developer who isn’t interested in development.

  • NottsGeezer
    Just thought I'd add my 2 pence worth. I agree generally with a lot of the posts on this topic.I myself at times have become a little disillusioned on projects particularly when co-workers or even the customer does'nt care about the projects success. This can happen in the public sector where it is a case of just spending the IT budget.

    I think part of the issue is trying to bring about amore professional image of IT and in particular Sw Engineering. This may be a case for IT professionals to become accredited like Doctors,Lawyers, Architects before they are let loose. Whilst IT has grown from cottage industry roots and some of the best IT folk are entirely self taught there needs to be some professional standards. This often gets attention in the IT press but nobody wants to take ownership, neither industry bodies or major industry players. Until this gets addresses and IT pros are giving the same respect as other professionals these attitudes are likely to remain in IT bods who are often seen as backroom staff, not always fee earning directly.
  • Anonymous
    I think another cause of this problem is people that start of as being enthusiastic but develop a non-caring attitude. This can be caused when they are in an environment with someone else who doesn't care, and where there is no reward for improving, hence you work hard to improve, they don't, and you all get the same pay rise that is unrelated to even the teams performance. After a while the enthusiastice person is infected with the non caring attitude.


    My 2 cents.
  • Aditya
    Seems that the disinterested developer is a classic example of choosing careers without thinking things through. The generic problem of disinterest in one's work/profession is discussed to some extent in Paul Graham's essay on "How to do what you love". Quote from the essay:
    "A friend of mine who is a quite successful doctor complains constantly about her job..... Now she has a life chosen for her by a high-school kid."
  • Andreas
    A summary of the post and comments in Spanish.
  • Zeus God
    I dont have the time to read all the comment of all people right now, but all i have to said is that you describe a big bunch of people that just live to get paid for do nothing... lets try to improve our skills, and become better software developers, not because of the salary, do it because you like it, and you fell great when you finish a project... if you dont feel like this, change your career
  • theKnight
    Everyone who does something that he likes not, does it in a bad way...
    This is the problem of these people which become our problem also...

    Doing the work in a good way is good, but doing it and liking what we are doing is the best ....
  • mario.gleichmann
    True words!


    I've experienced such projects with unmotivated people or at least people who doesn't care about the quality of their results more than once.



    But there could be a number of other reasons:





    I've seen people, who are employed at a company (of the customer), involved in software development - in contrast to the short term contractors. Those employees hadn't the motivation to learn and excel, because they seemed to be full without any stimulation for further efforts.



    I've seen people who are willing to learn, longing for producing quality. But they are so pressured by their management, that they are not 'allowed' to produce high quality (that doesn't seem to be the goal of those consulting companies). Of course those people will evolve, but they haven't the chance to 'apply' and live out their motivation at work, which is extremely unmotivating in the long term, letting them leave the company.



    Coming back to the first mentioned category of developers: sometimes there is really a little chance to turn their view. You have to awake their curiosity! Sometimes it doesn't take much to do so. You only have to inspire them, simply by showing your enthusiasm and curiosity.



    I've got such an satisfying experiance myself for two or three times. Simply by speaking about some issues like 'Domain Driven Design' or trying to apply some principles (DRY, TDA, KISS) that show some real advantages, made them think. And that's the first step towards developers who are interested in producing better result and hence interested in development at all.



    Greetings



    Mario
  • Mike Thomson
    I think this is a very well written blog, if the subject wasn't so sad I actually would have said I 'enjoyed' reading it.


    I strongly agree with the author that motivation and passion are extremely import aspects of a developer. A love for what you are doing and a natural desire to improve yourself are just as important, or even more important than raw talent.



    My own team has such a 'developer' who does not really seem to be interested in what he's doing. During work I often catch him reading some non-computer related news site (like cnn) and outside of work he never ever reads anything to improve his knowledge. Needless to say that during work he doesn't read that either.



    The result; this guy has been on the development team for 6 years. Before that he worked as a developer for another year or 2.



    After all that time, this guy still didn't know about some of the most basic stuff in development. He absolutely has NO notion about what a design pattern is. Ask him to name any pattern, any at all, and he would just return you a blank stare. Explain the MVC model to him, and he gets angry, calling it "needless complexity for nothing". (we have a +300.000 LOC code base).



    He hacked together his own SQL escaping method since he simply didn't know the Java platform (which we use) already provides something for that (PreparedStatements). After being in Java development for more than 6 years, he still thought that declaring a variable is about the same as creating an instance. In his code, all variables that should have been local to methods, were declared as instance variables. His reasoning; "I do this for performance reasons, otherwise the variable would have to be created each time I call the method".



    This guy simply started programming at day 1, acquired the most basic set of skills, and in 6 years never bothered to improve on them or validate that his assumptions about the world were correct.



    A good developer not only strives to learn new stuff, he also constantly tries to validate his knowledge. For instance, in Java one may at some point in time learn a bit about how Java bytecode actually works, or how the VM works internally. Of course this does not directly help in "getting the job done". However, over time it solidifies the developers understanding of the world, making him more likely to make the right decisions. Making the right decisions helps a lot for improving the quality of the code base, which in turn does help in "getting the job done" when bugs need to be fixed or extensions need to be made.
  • Pramatr
    "I met people who are very passionate about development, but they are lazy and, instead of doing their job (making the project reaching it's deadline and doing it in a good way), they are improving their personal skills."I have met people like this as well, and I would agree these people are disruptive. Trying to find the perfect developer is hard and I'm not sure if they really exist :).
  • Anonymous
    I want to add just one idea related to the subject.
    Even if you are willing to hire people who are passionate about what are they doing and read articles, to know what's new about the industry and so on, this doesn't mean this is a good developer.

    And I can tell you I met people who are very passionate about development, but they are lazy and, instead of doing their job (making the project reaching it's deadline and doing it in a good way), they are improving their personal skills.



    These people, though, are rare, but you can find one in your project and will not do any good.
  • Pramatr
    I just want to thank you for the feedback Dave, it really is appreciated!"

    I would expect people to take an interest, but business is business and if the developer does not perform then I reach for the P45."

    I just find it strange how some developers feel they've done you a favour by turning up for work. They produce garbage, and expect that to pass as ok. They refuse to improve and won't take any advice on board. I think your harsh but fair approach is probably the answer :)."

    Absolutely not! I would rather work with developers that have your outlook, however my point being you cannot have a room full of people that all have strong opinions because you cannot achieve anything without someone having to compromise."

    I completely agree with you here, lots of strong opinions breeds politics and I didn't fancy spending all my time as a politician. My original point however was simply hire people who care and want to work for you, if they don't when you hire them you are starting off on the wrong foot."Too many cooks spoil the broth"Indeed ;)
  • Dave Becks
    "If a developer really doesn't want to learn and produce better code EVEN in work time, won't listen to the advice senior developers are giving, isn't interested in what you are telling them and doesn't really care about if what they are producing is cruft, what's do you do?"


    You let them go and learn from the process. Next time your going to be more wary when interviewing. I've done this, and I've got some great developers working for me now :) but I've had to let people go because they do not perform.



    "Is this an acceptable situation? If you are paying someone to do a job, between those hours surely you have to expect people to at least feign interest and try to do a good job?"



    I would expect people to take an interest, but business is business and if the developer does not perform then I reach for the P45.



    "I accept this might be a naive view, but I'm not saying these people are bad, I'm just saying do you want to work with them?"



    Absolutely not! I would rather work with developers that have your outlook, however my point being you cannot have a room full of people that all have strong opinions because you cannot acheive anything without someone having to compromise. "Too many cooks spoil the broth"
  • Anonymous
    I'm not sure about the title of the blog but I appreciate what it was trying to get at and I agree with lots of the sentiment.


    Most professional industries expect certain levels of competence and as we are supposed to be dealing with software engineering I would have thought this would be especially true.



    If we are paid to do a job, we should try and do a good one.
  • Pramatr
    "The trick from a management perspective is to find a balance and create a team with different talents that complement each other, there is no excuse for bad development, but people get into this industry for different reasons and labelling them bad because they don’t conform to your expectations or want to look at the world in a different way is IMHO naive."

    Dave I completely agree with your comments regarding balance, you do need different developer types on a project to make it work. Not everyone can be an R&D guru and likewise not everyone wants to be one.

    I would disagree however that I have labelled any of the developer stereotypes you mentioned as bad. Someone who wants to get better, someone who comes up with better ideas, someone who wants to be told what to do, someone who just wants a job, that's all good. As you say there is absolutely nothing wrong with that, and I don't believe I said there was.As you say there is no excuse for bad development and that is really the crux of what I was trying to describe. If a developer really doesn't want to learn and produce better code EVEN in work time, won't listen to the advice senior developers are giving, isn't interested in what you are telling them and doesn't really care about if what they are producing is cruft, what's do you do? Is this an acceptable situation? If you are paying someone to do a job, between those hours surely you have to expect people to at least feign interest and try to do a good job? I accept this might be a naive view, but I'm not saying these people are bad, I'm just saying do you want to work with them?"

    You may be on a mission to become a better developer but its disingenuous to label those that aren't as committed as you. Some do not have the luxury of time, some have commitments, some have families etc. One size does certainly not fit all."

    One size doesn't fit all and I agree that people have other commitments. I actually work sensible hours these days as there are much more important things in my life. The commitment to improvement isn't really the issue and maybe I should have chosen another title, "Beware, the developer who isn't really bothered if they do a good job or not, doesn't really want to participate in the team and might be happy to keep producing cruft. Traits that these developers sometimes exhibit".
  • Dave Becks
    There a lot of developers out there that excel in R&D but fail to perform in a managed environment. These developers feed the IT industry through their ideas, their ingenuity and their passion for creating new and exciting products (in TrippleDES terms these would be coders). There are also developers that prefer to work from requirements and be told how a product should react and perform in given circumstances (in TrippleDES terms these would be developers but I would prefer the term programmers). Some developers want to learn and improve their output by producing better quality designs or improved efficiency, some developers want to come up with better ideas and solve bigger problems. Some developers just want a job and are happy in their understanding of the technology; there is certainly nothing wrong with this either.The trick from a management perspective is to find a balance and create a team with different talents that complement each other, there is no excuse for bad development, but people get into this industry for different reasons and labeling them bad because they don’t conform to your expectations or want to look at the world in a different way is IMHO naive. You may be on a mission to become a better developer but its disingenuous to label those that aren't as committed as you. Some do not have the luxury of time, some have commitments, some have families etc. One size does certainly not fit all.
  • Anonymous
    In my experience, I think a lot of developer apathy is the direct result of management's attitude to their employees.


    Before 2001, before the offshoring trend, before the empire, developers were seen as valued employees, and many developers I observed were interested in their chosen field. But now the IT industry seems to regard developers as commodities that can and should be exchanged for cheap offshore labor. If we have any intrinsic value anymore it's as potential instructors for the people who will be replacing us. We are even encouraged by management to seek a career change, and some former coworkers of mine have actually done so. (One went to law school, as if we need more lawyers.)



    We are not encouraged to learn (and if we do it's entirely on our own time), we are often denied opportunities to work on projects that would exercise any newly learned skills (these go to India), we are not promoted, and we do not want to be promoted (because it would make us expensive); the sense of futility is pervasive. Why improve ourselves in this particular area (programming) if there's no perceived benefit? Might as well spend the spare time getting some exercise!



    Although I personally enjoy visiting sites such as DZone to see what's new and reading up on the latest fads such as Ruby on Rails, I can't deny the demoralizing effects of the environment I've had to work in. I wouldn't be surprised if many developers in the industry are feeling the same way.



    "It's not a career, it's a job."
  • Mike
    Really enjoyed this article and agree completely.
  • Anonymous
    I agree.
  • Pramatr
    "I think you may have confused being uninterested in your work with just being a bad programmer. Admittedly there is a large overlap between these two groups, however."

    "I still ensure that what I do at work does actually work and that I keep up with current developments on my platform (Java), but only on company time."

    Whilst I would agree there is a distinction here, what I am specificically talking about are the developers who aren't interested in development in general (both inside or outside of work) and the negative impact this has on their development mentality and product.

    As I said in the article this can manifest itself in many ways. You ensure you code works, you keep up to date with technology, you are spending time improving your skills! The distinction of whether this is done between 9am-5pm isn't really that important. The simple fact is you are an asset to your team because you not only want to do a good job you are improving your skills.We all do development that doesn't interest us, that's just life and there's nothing wrong with that.

    Regardless of how interesting a project is however, bad developers who are interested in getting better, are a better asset in a team then average ones who just don't care.
  • Pramatr
    "You can't expect people to give all they have and at the same time offer them poor conditions"

    I'm not at all suggesting that under poor conditions you should still be producing a quality product. All I'm saying is, when you are working on a project, doing a good job should still be important. If the environment is such that this isn't possible that's not your fault. It's quite easy to beat this out of people when a project is obviously going to the wall, but then again do you want to continue working on a project like this?
  • Anonymous
    I think you may have confused being uninterested in your work with just being a bad programmer.


    Admittedly there is a large overlap between these two groups, however. Speaking as a developer who doesn't really have any interest in his current project or computing in general outside of work, I still ensure that what I do at work does actually work and that I keep up with current developments on my platform (Java), but only on company time. My code base is well maintained, properly object oriented, and meets all its requirements. It may not use as many new fangled bits of technology as some of my co-workers, but it does what it is supposed to.



    I just find that doing other non-computer related activities outside of work much more interesting and refreshing.
  • Jose Noheda
    The third paragraph summarizes it all: "mainly composed of short-term contract staff"


    I couldn't agree less with this by the way: "Some of these staff will be true professionals and give a project their all, others won't.". You can't expect people to give all they have and at the same time offer them poor conditions.
  • Bloggingg
    I totally agree with you, there is a lot of people who don't care about development.


    Bloggingg
  • TrippleDES
    Over the years ive grouped people into two distinct types, coders and developers - you can use any name you see fit but the main differences are: Developers are average coders, they are only in the job to get paid and nothing more, you know you find lots of them in big coporations. Coder on the otherhand excel in development because they have the luxury of their past time also being related to coding. They love to code and they have an aptitude for thinking logically all the time.The passion each type has for what the project they work on is also reflected similarly.Maybe this is one of those moments i should quote Conway's Law, 'Any piece of software reflects the organizational structure that produced it'.
  • OJ
    It's a shame that what you describe covers 99.9% of the coding population. Most developers don't care about development. They just want to get paid.


    I enjoyed reading your post.
blog comments powered by Disqus