Slashdot Mirror


Coders, Your Days Are Numbered

snydeq writes "Fatal Exception's Neil McAllister argues that communication skills, not coding skills, are a developer's greatest asset in a bear economy. 'Too many software development teams are still staffed like secretarial pools. Ideas are generated at the top and then passed downward through general managers, product managers, technical leads, and team leads. Objectives are carved up into deliverables, which are parceled off to coders, often overseas,' McAllister writes. 'The idea that this structure can be sustainable, when the US private sector shed three-quarters of a million jobs in March 2009 alone, is simple foolishness.' Instead, companies should emulate the open source model of development, shifting decision-making power to the few developers with the deepest architectural understanding of, and closest interaction with, the code. And this shift will require managers to look beyond résumés 'choked with acronyms and lists of technologies' to find those who 'can understand, influence, and guide development efforts, rather than simply taking dictation.'" Update: 04/04 19:52 GMT by T : InfoWorld's link to the archived version of the story on open source development no longer works; updated with Google's cached version.

24 of 305 comments (clear)

  1. So it helps to be.. by Gorobei · · Score: 5, Insightful

    So, I might do well if:

    1) I can actually communicate with the people that are paying me.
    2) I can write code that doesn't suck.
    3) I actually understand the business needs for the code I'm writing.

    Wow. I'll be much more effective now. Thanks.

    1. Re:So it helps to be.. by bigman2003 · · Score: 4, Interesting

      Sadly, the HR departments of the world have no understanding of this. All they care about is matching up the acronyms and buzzwords.

      I've been turned down for jobs because of this bias by the hiring group.

      "What is your greatest strength?"

      My method is to understand the business process, communicate with users, and develop code to achieve the business goals.

      "Oh, we're looking for a senior advanced journeyman JAVA coder."

      Well eff me. Offshore the job and write me a letter when your system doesn't do what you wanted it to.

      --
      No reason to lie.
    2. Re:So it helps to be.. by Gorobei · · Score: 4, Insightful

      That's why we don't let our HR department do anything more than post ads, collect resumes, run background checks, type up offer letters, deal with lawyers, and handle workplace issues.

      If you let these people get their well-meaning tentacles into your business, you are screwed. These people are the code-monkey version of management: willfully proud of knowing nothing about the actual business needs, and inordinately satisfied with their mad HR skills. Only thing worse than an HR "specialist" is an MBA who works on his MBA skillz rather than learning the business he is being paid to support.

      We flushed out a lot of the middle-management parasites twenty years ago. Now they seem to be back with new job titles.

  2. Either trivial or bullshit by azgard · · Score: 4, Insightful

    What he argues is either trivial or bullshit. I don't understand what he says, to be honest, so there are 3 possibilities:

    1. He says that everybody needs to learn communicate. That's trivial. Everybody, even manual workers, need to communicate. You can excel, but if you cannot cooperate, you cannot work in modern society.

    2. He says that communication, not other skills, is where real money/power is. This is also trivial. To scale beyond the abilities of a single person, you have to control other humans, and for that, you need people skills more than other specific skills.

    3. He says that the U.S. economy in the future won't need any people with technical skills, only managers, as technical skills can be outsourced. This is bullshit, as the U.S. is going to experience the hard way in the upcoming years.

    1. Re:Either trivial or bullshit by julesh · · Score: 4, Insightful

      1. He says that everybody needs to learn communicate. That's trivial.

      Trivial or not, there are many so-called "professional" programmers out there who don't seem to understand it. They think their job is to produce code and avoid communicating with others as much as possible. Witness the common reaction to the idea of pair programming: "it'll disturb my concentration... it's hard to hold the details of your coding in your head if you're talking to someone". Well, frankly, you need to be able to communicate those details, so you _should_ be able to talk to somebody about the coding while you're doing it. The focus is on the implementation, not the communication. It should be the other way around.

      3. He says that the U.S. economy in the future won't need any people with technical skills, only managers, as technical skills can be outsourced. This is bullshit, as the U.S. is going to experience the hard way in the upcoming years.

      Did you read the same article as me? I seriously don't see where it says this. What it says it that lead-from-the-top teams where jobs are parcelled out by an architect with a vision and are implemented by junior programmers will go the way of dinosaurs; it says that everyone is going to need to understand the whole product they're implementing it, the business reason why it's necessary, and to interact with the eventual users of the system to ensure that what they're implementing is the right thing.

      This isn't news to some of us, but there are still a lot of people out there who don't seem to understand this.

    2. Re:Either trivial or bullshit by phantomfive · · Score: 5, Insightful

      Witness the common reaction to the idea of pair programming: "it'll disturb my concentration... it's hard to hold the details of your coding in your head if you're talking to someone".

      Yeah right, that's just the reaction on the outside. On the inside the guy is thinking, "He wants me to do pair programming? He's an idiot. Maybe I'll give him tons of reasons and he'll go away." If you have decent programmers, pair programming is a waste of resources. Much better to have team programming, where each person is working on the different parts of the same project. Then when you have problems, you can discuss them with your partner, not on every single line (should we use a while loop or a for loop here?)

      Incidentally, he is right. When I code, I don't think in words, I think in code. If someone speaks to me while I am coding, it can take a second for me to get back into English mode. A similar effect happens when I'm thinking in Spanish and someone unexpectedly says something to me in English. Or when I am playing the piano and someone talks to me.

      And for the record: a few years ago there was a study published in Communications of the ACM that showed while pair programming is more efficient than a single solitary programmer, it is not as efficient as two programmers with two keyboards. FYI.

      --
      Qxe4
    3. Re:Either trivial or bullshit by Anonymous Coward · · Score: 5, Insightful

      I'm sorry, but as someone who has recently been exposed to pair programming I can say you're talking out of your backside. If a programmer can't deal with pair programming them they're a very poor programmer. Pair programming is about getting together, thinking and knocking out some code that both programmers agree is the best solution. If you can't do it then it's likely that your ego is taking over and you're ignoring better solutions.
      Two decent programmers sitting together pair programming will set out some good, robust code with a lot less bugs as the other is pointing out problems as they go.

      I'd suggest that you're a poorer programmer than you think and that you should rethink how you go about problem solving.

    4. Re:Either trivial or bullshit by Have+Brain+Will+Rent · · Score: 5, Insightful

      And for the record: a few years ago there was a study published in Communications of the ACM that showed while pair programming is more efficient than a single solitary programmer, it is not as efficient as two programmers with two keyboards. FYI.

      It's much older than that - IIRC "The Mythical Man Month" first formalized the idea that N programmers do not produce working code N times as fast as 1 programmer, and that's essentially what is happening with paired programming.

      The real problem was discussed long ago in "Programmers and Managers" by Kraft. Two skilled programmers operating independently will indeed produce good code faster than two programmers paired. The problem lies with the idea that there is a large supply of "skilled" programmers. There aren't and most of software development methodology for the last thirty or forty years has been aimed at creating processes by which mediocre programmers can produce reasonable quality code in a reasonable time. Unfortunately nothing will ever change the fact that the productivity range of programmers spans an order of magnitude, possibly two depending on who you listen to.

      Want good quality results? Hire 5 good programmers, not 15 mediocre programmers. That means that you'll probably have to pay them pretty good coin and treat them well and that is management's real problem. Management dreams of cheap replaceable labor working on an assembly line. After all assembling cars and developing highly sophisticated software have so much in common!

      As for the comments on disturbing concentration - absolutely! Any significant chunk of code is highly complex and detailed. It needs to be kept in the head as a whole, in an organized fashion and in detail. It is nothing short of mind boggling that anyone can imagine that a process that requires being continually interrupted and distracted will aid that task. This is nothing but another doomed attempt to take the bottom 10% of the talent pool and try and squeeze some productivity out of them.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    5. Re:Either trivial or bullshit by julesh · · Score: 4, Informative

      And for the record: a few years ago there was a study published in Communications of the ACM that showed while pair programming is more efficient than a single solitary programmer, it is not as efficient as two programmers with two keyboards. FYI.

      That's one study. I imagine the one you're talking about is "All I really need to know about pair programming I learned in kindergarten" by Williams and Kessler. This study has been criticised for its focus on performance over and above accuracy. I'd suggest you look at some of the broader studies that have been published since that one, e.g. Williams, L. Kessler, R.R. Cunningham, W. Jeffries, R. "Strenghtening the case for pair programming" (IEEE Software), finding that a 50% speedup over a single programmer, which is in the same order as two programmers working independently, but more importantly a 13-17% reduction in the number of bugs discovered after signoff, whereas you would usually expect an increase with two programmers working independently. Nosek 1998 (also a Communications paper) found a 41% speedup, which is less than you would expect from two programmers individually, but also found a 43% increase in evaluations of code readability and a 33% increase in evaluations of resulting functionality of the software developed.

      So, yeah, basically the point is that while two people at separate keyboards may produce a larger volume of code, the code produced during pairing is more likely to solve the problem that it was actually required for, and will be more maintainable afterwards. And we haven't even touched on the fact that pair programming spreads knowledge of the design of the codebase the team is working on, thus helping the team maintain the software at a later date, or that most programmers find they can keep up pairing for longer periods of time than they can code by themselves, or that job satisfaction is generally higher for programmers who pair.

      And your description of how you think when you code betrays that you have dismissed this without trying it. You think differently when you're pairing. It's just as effective (if not more so), and the interruption is not a problem.

    6. Re:Either trivial or bullshit by Daniel+Dvorkin · · Score: 4, Insightful

      I'm sorry, but as someone who has recently been exposed to pair programming I can say you're talking out of your backside. If a programmer can't deal with pair programming them they're a very poor programmer.

      Or maybe they just don't want to deal with insulting twits who think that the latest and greatest buzzword is the One True Way to write code.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
  3. Re:This is extremely old news. by ushering05401 · · Score: 4, Interesting

    The subject is being revived by the current economic situation, so not as stale as one might think.

  4. Engineers should run tech companies not MBAs by TheNarrator · · Score: 5, Insightful

    I think the anti-pattern I see in most companies that are weak in the technology area is the guy at the top is great at landing deals, public speaking, and sales but he can't figure out what those damned pesky nerds are doing and why they need to get paid so much money.

    As a general rule, most successful tech companies are started and run by people with engineering and/or cs backgrounds (Google, Paypal, Ebay, Microsoft to name a few). Many companies these days, which are in the information handling business (finance, etc), have little competitive advantage over their competition except for their technology platform and are thus essentially tech companies, even though they might not know it yet. Now with the down economy they actually have to be better than the competition and can't just survive by endlessly rolling over credit lines. Hence, the greater need for engineers who can create a technological vision for the company instead of just doing what they are told to do by clueless bosses.

  5. One size doesn't fit all by blueforce · · Score: 5, Insightful

    I'm always amused when I read stories like this about how X or Y is the only possible future of development.

    What works for one application or company doesn't necessarily work for the next. This isn't a one-size-fits-all industry. If it were every company would be using the same languages with the same methodologies.

    Meh.

    --
    If you do what you always did, you get what you always got.
  6. Partially right by TrailerTrash · · Score: 5, Insightful

    Leaving development decisions to core programmers can lead to chaos in development priorities. A hard core coder may spend large amounts of time chasing down just that little bit of latency in the process scheduler; but what the business needs is a rewrite in order to simplify processes.

    This is why the OS model has a hard time living in the corporate environment. Many times what needs to be done for the business is tedious programming driven by idiots (== users). No one wants to do that. So a core group of programmers ends up adding a plethora of new features that are elegant in implementation, advanced in design, and useless for users.

    The other major factor in corporate America (can't speak for the other 96% of the world) is the vast armies of "business analysts". These people allegedly have communication skills with both users and coders. In reality, however, they are incented to drag out projects in requirements and testing phases in order to make their own functions seem more useful. Many projects I've worked on have burned upwards of 3/4 of the hours billed to business analysts.

    The remedy? Coders who can speak Business, are WILLING to speak Business, are willing to let the needs of the users drive their projects, and the ability to code. In that order. These people are far and few between, sadly.

  7. News? by drolli · · Score: 4, Interesting

    Coding skills are still a necessity. However they never have been sufficient (as the Example of the Reiser vs. Kernel developers shows). If you look in many completely failed projects of the past, and you read the story carefully, a lack of communcation is a very likely reason for *big* trouble (Read the Commodore story....).

  8. Blame open source by clarkkent09 · · Score: 4, Interesting

    The problem wouldn't have arisen in the first place if the programmers have not as a rule undersold their skills (not least by happily working for free) to the point where they are treated like shit and paid accordingly. The way to do it is to emulate lawyers (as a rule less intelligent than programmers, but not when it comes to money) and sell themselves as highly skilled practitioners of a mystical craft that can only be performed in high priced suits with gold rolexes and not for less than 300K/year

    --
    Negative moral value of force outweighs the positive value of good intentions.
    1. Re:Blame open source by Stiletto · · Score: 4, Insightful

      Lawyers can charge what they do and sell themselves as highly skilled practitioners because they passed the Bar exam, which acts as both a hurdle to keep everyone and their uncle out, and as an indicator of some standard level of performance.

      "Coders" have no such yard stick. Anyone and their uncle can call themselves "coders" or, even more outrageously, call themselves software engineers. There's really no certification, standardized exam, or prestigious private college out there whereby one can stand out as highly skilled. So, the field is flooded with tons of mediocre and unskilled coders, punctuated by the rare skilled programmer. This drives salaries down. Everyone in the field is forced to undersell themselves lest they be underbid by one of the many who are all talk and no skill.

      What software engineers need are credible and selective certification programs so that the few very talented professionals who pass can authoritatively show themselves to be skilled. This would definitely help weed the field of posers and amateurs and bring salaries up to where they should be.

    2. Re:Blame open source by mysidia · · Score: 4, Interesting

      A MCSE does not certify a software developer. It's an entry-level certification for Windows technician skills.

      MCSD comes a little closer -- it certifies the ability to utilize certain development tools; however, it doesn't really certify engineering skills.

      The best certification I know of for software development skills is to have been the main contibutor and maintainer for a successful open source project for 12 months. Where 'main' contributor is defined as having written at least 30% of the code.

      And 'successful' means you have a (PROGRAMNAME)-users mailing list or forum with at least 100 active subscribers, who have all downloaded the product, and you can measure your number of downloads of any new version of the software in the hundreds of thousands.

  9. This has been happening since the late-1980's by mikael · · Score: 4, Interesting

    Even back in the late 1980's it was obvious that thin pyramid management structures were being toppled through downsizing. Some of my relatives took early retirement from companies due to this. Long chains of management over 15 levels deep were definitely going out of fashion: director, assistant director, senior manager, assistant senior manager, supervising manager, project manager, assistant project manager, team leader, lead programmer, senior programmer, programmer, junior programmer and intern.

    Start up companies just a far simpler structure: director, software/hardware architect, team leader, senior programmer and programmer.

    Everyone knew about the hazards of "dead man's shoes" and how important it was to keep your skills up to date or lose your career.

    --
    Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
  10. In defense of business analysts... by Stiletto · · Score: 4, Insightful

    I've seen my share of products fail miserably because nobody brought in the business analysts or consultants to gather functional and end-user requirements and spec out the system, and, generally, drive the project. Consequently, the engineers are left with an incomplete or incorrect idea of what to build or of what the acceptance criteria should actually be.

  11. Where are they going to find these managers? by weston · · Score: 4, Interesting

    And this shift will require managers to look beyond résumés 'choked with acronyms and lists of technologies' to find those who 'can understand, influence, and guide development efforts, rather than simply taking dictation.'

    I think an equal question is where they're going to find more managers who aren't the habit of seeing coders as black boxes into which their decisions go in and desired code comes out.

    People like to talk about the archetype of the "techie" who is, of course, good with technology but doesn't understand much else. I suppose I've met people who embody this, but generally, my experience is a little different: I frequently meet programmers who are three dimensional people who may be good at writing, music, presentation... even sales. So I wonder sometimes where this persistent stereotype of the "techie" comes from.

    Mind you, this happens the other direction as well: I see programmers who are convinced the "soft skills" of other professionals are easy to pick up and practice and they could be doing any job in the company.

    1. Re:Where are they going to find these managers? by David+Gerard · · Score: 4, Interesting

      Yeah, people like that are why female geeks leave the industry. Developers who think they're brilliant communicators until they actually have to talk to a human.

      ...

      The number of female IT professionals in the UK is falling, according to the British Computer Society, despite similar or superior academic scores and recruitment in the sector as a whole having risen in the same timeframe. The lack of flexibility offered by employers is blamed.

      "It's a free market world," said Ubuntu Linux developer Hiram Nerdboy. "It's about competence and getting the job done. Working sixteen hours a day on a project you really love is par for the course. That we're all eighteen to twenty-five is from the accelerated Internet-based learning of the new generation, not exploitation of young workers who donâ(TM)t know any better."

      Over a third of women in IT had complained of sexism up to sexual harassment at work. "Itâ(TM)s women who just don't have social skills," said Nerdboy. "They object to the guys freely choosing to all go down the strip club after work. Theyâ(TM)re just not team players."

      Open source projects have worse figures than industry, with male to female ratios approaching fifty-to-one. Many women cite gross sexism on mailing lists and IRC. "In my experience, women just don't have a working sense of humour and canâ(TM)t take a joke. My girlfriend thought it was funny! Even leaving helpful comments on their blogs didnâ(TM)t work. 'Political correctness' is no exaggeration. Anyway, I met my girlfriend online!"

      "...," said his girlfriend, RealDoll Ada.

      "And it's not like you can get the applicants," added Nerdboy. "We can hardly get any girls to apply for a job here. They're obviously naturally not good enough geeks. It must be evolutionary. We need more pink computers."

      --
      http://rocknerd.co.uk
  12. Re:This is extremely old news. by EsbenMoseHansen · · Score: 4, Insightful

    Open source development is not Agile. One of the critical activities in Agile development is paying some attention to the users.

    Actually, open source developers do. Sometimes, it's just that the users are themselves.

    Besides, Agile isn't about paying attention to the users per se... it's paying attention to the people who the payer wants to enable. Again, in the open source world, that might well be the developer himself (paying in time, not money).

    --
    Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
  13. I'm set.... by feepness · · Score: 4, Funny

    Well-well look. I already told you: I deal with the god damn customers so the engineers don't have to. I have people skills; I am good at dealing with people. Can't you understand that? What the hell is wrong with you people?