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.

81 of 305 comments (clear)

  1. This is extremely old news. by Jane+Q.+Public · · Score: 3, Interesting

    Proponents of Agile development and similar philosophies have been saying exactly this for many years now. Where have you been?

    1. 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.

    2. Re:This is extremely old news. by julesh · · Score: 2, Interesting

      I wouldn't say agile development as a field is stale; it has been gradually attracting interest over the last 10 years, and is more popular now than ever. Yes, this kind of thinking might help it along. But it doesn't really _need_ that help.

    3. 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.
    4. Re:This is extremely old news. by SerpentMage · · Score: 3, Interesting

      I don't agree here...

      As Eric Raymond says, "scratch one's itch" does not imply listening to users.

      Put it as follows. We all drive cars, but using scratch one's itch it implies that we are all mechanics as well. And that is not the case, though it can be said that all mechanics do drive cars.

      What the article is getting at is that you understand the user that you are empowering. In my case it is being able to understand the formulas and mathematics of the trader trying to define a trading system.

      --

      "You can't make a race horse of a pig"
      "No," said Samuel, "but you can make very fast pig"
    5. Re:This is extremely old news. by EsbenMoseHansen · · Score: 2, Insightful

      I don't agree here...

      As Eric Raymond says, "scratch one's itch" does not imply listening to users.

      Put it as follows. We all drive cars, but using scratch one's itch it implies that we are all mechanics as well. And that is not the case, though it can be said that all mechanics do drive cars.

      What the article is getting at is that you understand the user that you are empowering. In my case it is being able to understand the formulas and mathematics of the trader trying to define a trading system.

      The main difference between the open source you're thinking of and the user situation is that these user's are actually willing to pay. Thus, any itch they have will the developer's itch, since the developer want them happy. Of course, for this to work, user happiness would need to actually figure in the bill payers success criterion, which is surprisingly often not the case. I'd argue that the developers would do themselves a favor making sure that it does, though.

      Still, for pure open source (scratch you itch) type of open source, the user (=developer) is listened to. Indeed, that does mean that everyone who is not a mechanic is not a user --- because everyone who is not a mechanic does not pay (in time).

      Is it clear now? Not entirely sober, so if I'm not I apologize.

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    6. Re:This is extremely old news. by ShieldW0lf · · Score: 3, Insightful

      Agile is about keeping coders dumb by not allowing them to look more than two feet in front of their nose. It's about protecting managers from being cut out of the decision process entirely. Which they should be.

      As for the actual article, seems to me that it's the managers whose days are numbered. Coders who have people skills will become managers, coders who don't will remain serfs, and managers who have no technical skills will become unemployed. It won't happen overnight... some existing businesses will continue to employ those managers. But that choice will kill those businesses, because they're basically putting blind men in charge. It'll take time though...

      --
      -1 Uncomfortable Truth
    7. Re:This is extremely old news. by HangingChad · · Score: 3, Interesting

      Where have you been?

      Same question crossed my mind. The last place I worked, coincidentally a Windows shop, was rife with bureaucratic decision making and process for the sake of process. Tasks that could be accomplished for thousands and take weeks ended up taking years and costing millions. The ironic justification for all the process was that the customer did not feel the old agile environment was providing good value for their development dollars. So they took the vague suspicion and turned it into a massive reality.

      The new contractor manager brought in an army of unproductive people. Including one with the spiffy title Configuration Control Manager. I never did figure out exactly what she did, other than act bossy, look stressed out and pretend to be busy all the time. Busy digging sand. They spent money on Rational licenses but not on training and no one ended up using it. Tried to fit development into a process that lost contact with the actual application users. They brought in five people to maintain an application built by two, instead of keeping the two who built it. What made this mass insanity more than passing amusement while I looked for another job was they were squandering taxpayer dollars. It was Iraq for IT.

      The days of massive IT development projects are over. They've actually been dead for several years but like a zombie those massive projects still limp aimlessly across the IT landscape looking for additional funding blood.

      --
      That's our life, the big wheel of shit. - The Fat Man, Blue Tango Salvage
    8. Re:This is extremely old news. by Jane+Q.+Public · · Score: 2, Interesting

      The highest-rated and highest-paid development shops in the U.S. right now are Agile. So what if it's last year? It's this year too.

      If you can think of something better, let's hear it. I'm not seeing any other methods making people rich just lately.

    9. Re:This is extremely old news. by wisty · · Score: 2, Insightful

      That's because there are no Pointy Haired Managers, and no dumb coders.

    10. Re:This is extremely old news. by guruevi · · Score: 2, Interesting

      We all drive cars, but using scratch one's itch it implies that we are all mechanics as well. The first drivers of a car where also mechanics though. They had an itch to scratch: how can I drive around town without looking at a horses butt and keeping up the stables etc.

      Even up until this day, mechanics and engineers think about what should go in a car. They drive around in a car and say: hey, you know what, it would be really cool if the lights went on automatically after dark because I always forget to turn mine on. Sure many customers might have taught about that but the implementation would most likely be very bad. Why, because they don't think about the way the car works or what can be done with it. They would put it connected to a clock or if they were really smart, put a sensor somewhere on the outside of the car because that's "where it belongs" and putting it inside would be "plain ugly". However they forget that sensors outside a car might get dirty, broken or weatherized really bad. Most consumers however don't see that because they buy a new car every 3 years or whenever something goes wrong with it. Mechanics and engineers however get to deal with 'dumb implementations' or 'customer error' everyday and they see how a car looks on the outside after 12 years, they also know where the least weatherizing goes on and the least stuff gets broken (the dashboard).

      Leave the customer to the end-goal. They get to say what they need out of it. The engineers and mechanics get to put it together and though maybe somewhat inconvenient to a customer or end-user, the job gets done well and usually cheap or reusable. I've seen stuff being done top-down and as you pass several layers of bureaucracy and more non-engineers and non-mechanics get to mess with an idea, the worse it gets.

      --
      Custom electronics and digital signage for your business: www.evcircuits.com
    11. Re:This is extremely old news. by ultranova · · Score: 2, Insightful

      Anyone ever complained to the factory that the engine should be 0.3 mm to the left in their car?

      I've often been tempted to call them and discuss the placement of components, whenever I've had to replace a headlight. People who design engine compartments should have a mandatory period of working as mechanics first.

      --

      Forget magic. Any technology distinguishable from divine power is insufficiently advanced.

    12. Re:This is extremely old news. by ShieldW0lf · · Score: 2, Interesting

      Management keeping you in the dark has nothing to do with the software development model adopted by an organization. It is a result of their business model. Waterfall (which, incidentally, was presented by Royce as a model that does not work) does not restrict management from communicating clearly and frequently any more than Agile does.

      Waterfall means think about what you're building, articulate what you're building, then implement what you're building.

      Agile means start building something, never think further ahead than what you can code in two weeks, and never articulate what you're building, period.

      It's great for disorganized shops producing trivial code for idiots who have no idea what is going on and don't want to. And there are a lot of such idiots with lots of money who want to get a piece of this internet thing but don't like being asked questions and forced to confront their own ignorance.

      If you're happy to make lots of money pissing your time away producing irrelevant garbage, Agile can probably help.

      --
      -1 Uncomfortable Truth
  2. I agree totally... by rlanctot · · Score: 3, Funny

    ...let the inmates run the asylum. I for one welcome our monkey-poo-flinging overlords!

  3. How about the model of development by antifoidulus · · Score: 2, Interesting

    where links are checked before they are submitted/published? Or are you just relying on the open-source crowd to tell you that you get a 404 when you click on the 2nd link?

  4. 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 MillionthMonkey · · Score: 2, Funny

      You should have used HTML bullets.

    2. 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.
    3. 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.

    4. Re:So it helps to be.. by timeOday · · Score: 2, Interesting
      And yet HR is very able to evaluate candidates in terms of what this headline claims is the most important - people skills. This draws the premise of the article into question.

      I am involved with hiring and firing where I work. I can tell you, for certain, we have gotten rid of numerous people with good soft skills, whom I personally liked, because I gave them specific technical tasks and they couldn't produce. Sure, the best people have both technical and social skills (and they move up almost too fast!) But given the choice of one over the other, give me somebody who might not sit with me at lunch, but who turns around assignments so quickly it surprises me. You know how it is, one person does in an afternoon what another somehow couldn't manage in 2 weeks.

    5. Re:So it helps to be.. by Jarik_Tentsu · · Score: 2, Insightful

      It makes sense. Any 15-year-old geek can code. What makes software engineers and good coders different? The fact they can communicate, work in teams and have experience working together.

      In fact Dad was telling me that just recently he hired some Law/InformationSystems graduate to do work that seemed more like a manager's aide. Within two years, he's promoted that guy up to be a junior manager. What he studied had nothing to do with what he's doing, rather, the double degree gave him intelligence and analytical skills which are top-notch and thus, very useful. AS opposed to his actual knowledge on the topics of law and information systems.

      ~Jarik

    6. Re:So it helps to be.. by Haeleth · · Score: 2, Insightful

      Any 15-year-old geek can code.

      Don't say that. That attitude does more harm than anything to the software industry.

      Imagine what our cities would be like if people took the line that "anyone who can stack two bricks can build"? Well, that's what our software world looks like, precisely because people have taken the line that "anyone who can stick two lines of VB together can code". See thedailywtf for a depressing amount of proof.

      The fact is, even in the middle of a downturn, managers don't want to pay for software engineers if they can afford code monkeys. (And they definitely don't want to pay for software engineers if the CEO's nephew is "really good" with computers and needs work experience.) If you want things to get better, don't tell them they need expensive coders -- tell them the truth, that most people who call themselves coders can't code.

    7. Re:So it helps to be.. by Jarik_Tentsu · · Score: 2, Insightful

      You make a fair point. I should change my statement from "Any 15-year-old geek can code" to "a large amount of professional software developers can code as much as 15-year-old geeks".

      I think the problem is a large amount of people who have coding as their careers just pick it up as purely a job - so they know how to code one language. They know Java, or they know C++, or more commonly, PHP/ASP/web-based languages. But their knowledge is very narrow and limited - what they've been taught in their course. While the 15-year-old geek is probably doing it for love of computers, and has a broader and more in depth knowledge on coding in general.

      It astounds me at times to talk to 'professional' web coders who don't know what a compiler is.

      ~Jarik

  5. 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 mdwh2 · · Score: 2, Insightful

      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

      I think this is one extreme to the other - I think pair programming is bad for many reasons, but that doesn't mean I can't communicate. It's important to be able to write documents, communicate with other developers, managers, customers, and so on. But that doesn't mean I want to have to be conversing 40 hours a week for everything I do.

      I might as well turn it the other way round and say that someone who thinks that communication is important is incapable of working on their own. Obviously, that would be unfair too - it's most effective to balance these things, rather than being at one extreme.

    4. Re:Either trivial or bullshit by murdocj · · Score: 2, Interesting

      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.

      I'm often complimented on my ability to communicate ideas and document clearly. I also hate pair programming, pretty much for the reason listed above. The way I like to work is to cycle between talking to one or two people hashing out the ideas, and designing / coding. But when I'm trying to read code in detail, or lay out the details of code, the last thing I need is someone interrupting me every time I'm about to do something. That just doesn't work for me. I have sat with people to pair on particular problems, and that works fine, but it comes in the natural flow, when we're both ready to do it. The "continuous pair programming" approach, as far as I can tell, has way more to do with power and control than it has to do with communication.

    5. 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.

    6. 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
    7. Re:Either trivial or bullshit by Gorobei · · Score: 2, Interesting

      Hmm, a lot of different programming models are optimal because there are a lot of different business models.

      Independent, decent programmers works great for the "grip it and flip it" model of getting software out the door.

      I've got 10 million lines of production code, and I want every single change to make that codebase better, not worse. So, yes, you check in a while loop when it should be a for loop, at least two people are going to tell you to fix it before it's considered for production. I bitch about poor function names, bad idioms, pointless abstractions, code that rolls past 140 columns or so: don't leave crap that slows down the next person.

      Oh, and each programmer gets 30 or so square feet of workspace, so they have 30 people within yelling distance if they need help while writing the code. Feels like CS-lab, but with rich programmers :)

    8. 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.

    9. Re:Either trivial or bullshit by AuMatar · · Score: 3, Interesting

      As someone who has done pair programming- you're wrong. Wen I have to constantly talk and discuss my work while I'm thinking my output falls by more than 50%. On top of that, almost no bugs other than trivial spelling bugs are caught by the pairing process- the type of bugs that the compile catches anyway. Pair programming doesn't work.

      There are only two situations in which pairing makes sense. One is mentoring- an experienced dev trying to train up a young engineer. The training for the young guy will speed up the learning process and be worth the temporary loss of productivity to the older programmer long term. The second is debugging obscure issues, where it may take multiple people's knowledge of the code to solve it. In any other situation, you'll get less than half, usually less than a quarter of the work you'd get out of having two programmers work independently.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    10. 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.
    11. Re:Either trivial or bullshit by bertok · · Score: 3, 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.

      I once tried pair programming for a few days, and I found the exact same thing. Yes, together, we were more efficient. I could catch bugs the other guy missed while he was typing, which saved him some debugging time. However, it wasn't a huge improvement, I'd say something like 50%, but it took 100% more manpower, so it was a net loss.

      What few people realize though is that pair programming is boring for the person without the keyboard. It's mind-numbingly boring. It's like watching someone do mathematics homework for a whole day. I enjoy programming, but watching other people code is a lot less fun.

    12. Re:Either trivial or bullshit by mdwh2 · · Score: 2, Insightful

      If a programmer can't deal with pair programming them they're a very poor programmer.

      Where did he say he couldn't deal with it?

      I might as well claim "If a programmer can't deal with programming on his own, they're a very poor programmer".

      Is that fair? Of course not. The debate here is about which is better, and I see no evidence that pair programming is better than two programmers working normally.

      The fact that advocates of pair programming can't argue their case, other than resorting to ad hominems of "You must be a crap programmer" for anyone who dares disagree makes me even more reluctant to accept it.

      Pair programming is about getting together, thinking and knocking out some code that both programmers agree is the best solution.

      Which is done in normal programming too. Just because you don't share a desk and computer 40 hours a week doesn't mean there is no communication.

      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.

      And your evidence for this is, compared with two decent programmers who don't work together 40 hours a week? How do they compare on productivity more generally?

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

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

    13. Re:Either trivial or bullshit by mdwh2 · · Score: 2, Insightful

      finding that a 50% speedup over a single programmer, which is in the same order as two programmers working independently

      Am I missing something? Given that most non-trivial companies can parallelise their workload for at least two people, I would expect two independent programmers to be 100% faster than a single programmer.

      So, yeah, basically the point is that while two people at separate keyboards may produce a larger volume of code

      It's not about "volume of code", it's about functionality.

      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

      All this can be done without pair programming too. The reason it usually doesn't happen in most companies is because they don't have the resources to hire twice as many people, so pair programming isn't an option there anyway. If companies could hire twice as many people, then even with non-pair programming, you could still double people up in each area of functionality, thus spreading the knowledge base.

      Pair programming only compares well to places with half as many developers, or a straw man version of non-pair programming where everyone works in a sealed box and never communicates with anyone else.

    14. Re:Either trivial or bullshit by mdwh2 · · Score: 2, Interesting

      What few people realize though is that pair programming is boring for the person without the keyboard. It's mind-numbingly boring. It's like watching someone do mathematics homework for a whole day. I enjoy programming, but watching other people code is a lot less fun.

      Yes, exactly. Even if somehow pair programming really was more than 100% of an improvement, thus making it worthwhile, from an employee point of view, it would be far less an attractive job. This isn't about being a good or bad programmer, it's just that my preferred job choice was that of "programmer", not "sit and watch someone else code".

    15. Re:Either trivial or bullshit by mahadiga · · Score: 2, Insightful

      In my experience pair debugging is more productive.

      --
      I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
    16. Re:Either trivial or bullshit by totally+bogus+dude · · Score: 2, Insightful

      Well I think the idea is to extend programming away from the keyboard, i.e. you can still be "programming" if you're not the one doing the typing, by thinking about the problem and your solution and how it fits with the rest of the program.

      What I've never understood is exactly how this is meant to work. Surely you need to do all the planning stuff before you start writing code, even if you have a buddy to assist. At that point all the pre-programming is done so you're just whacking it into the computer, and it's a bit pointless for the buddy to sit around watching you input it. If the concept isn't known to be sound or its integration with the rest of the program hasn't been fully thought out, why on earth would you be writing it already?

      Arguably it's better for someone to stop you half way through coding a module to say it ain't gonna work out then to wait until you're finished, but such realisations ought to come before the typing begins.

    17. Re:Either trivial or bullshit by julesh · · Score: 2, Interesting

      Am I missing something? Given that most non-trivial companies can parallelise their workload for at least two people, I would expect two independent programmers to be 100% faster than a single programmer.

      Most studies have found this not to be true. The extra overhead of communication between the programmers tends to cause an exponential decay in how much additional work is performed by each additional programmer added to the team. Given that most teams are already somewhere approaching the sweet spot on that curve, adding a new programmer doesn't usually result in that programmer achieving more than 50% of what a single programmer achieves. In large teams, it is often found that adding an extra programmer results in no increase in the amount of work performed (see Brooks, The Mythical Man Month). However, adding a new programmer as a pair to an existing programmer doesn't suffer the same problem. The idea enables teams that are twice as large, achieving around 50% more work, before paralysis sets in.

    18. Re:Either trivial or bullshit by mikael · · Score: 2, Interesting

      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!

      Trying to remain an experienced software developer seems to be like a Sumo wrestling match. You are trying to remain in the center of the ring, constantly gaining skills to feed the family and pay the mortgage. All the time, shareholders (investment companies/bankers) and directors are all trying to reduce costs by trying to turn skills into commodities, and taking on as many staff as possible. Universities are determined to make as much money as possible by churning out as many programmers as possible, all trying to pay off their debts. In between all these forces (Push and Pull from the Peter Principle) are the software developers.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
  6. 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.

  7. 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.
  8. 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.

  9. 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....).

    1. Re:News? by MichaelSmith · · Score: 2, Funny

      Actually I always thought that communication was the main problem between Hans and the Kernel team.

  10. This is actually more about innovation management by anomalous+cohort · · Score: 3, Interesting

    There is a lot to be said for the bazaar model of intellectual work. The open source model is certainly an early adopter but by no means does it have a lock on this approach.

    There is a whole new crop of innovation management tools that use crowd-sourcing techniques as a better way to work.

    May I humbly submit some of my own tools in this field as examples here? Take a look at this general purpose problem solving platform called Cogenuity? Cogenuity currently uses a challenge based approach with a heavy emphasis on social networking and collaboration.

    Another tool that I wrote is Code Roller which is a collaborative software development project life cycle management solution. It combines software engineering deliverables, process and workflow with project management practices, social networking features, and a crowd-sourcing style recommendation engine.

    Both of these tools are free as in beer.

    Oh, by the way, the infoworld link from the original submission here is broken.

  11. 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.

    3. Re:Blame open source by Microlith · · Score: 3, Insightful

      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.

      Wow, that's an incredibly arrogant and impossibly high bar to meet. I guess you want to limit the number of "certified" software developers to what, 300? And do what with the rest, fire them all?

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

      No, they can still be software engineers. Just not with that particular certification. In computer-related fields, people have a lot of flexibility and no one-cert is the be-all end-all that everyone has to have.

      Just like you can still be a computer security professional, even if you don't have a CISSP cert.

      You can still manage networks without a cisco cert.

      You can still admin Redhat systems, even if you don't have a RHCE, or Apple systems without a ACSP.

      You can be elected city mayor without passing a "Mayor Certification" test

      You can work as a java developer without a SCEA.

      On the other hand... certs whose major component isn't just passing a test, but also require real-world-like things to finalize or complete the cert (such as doing a project that was actually successful) ought to mean much more than Sun certifying you as a Java programmer or Java architect on the basis of passing a multiple choice quiz.

      Not to mention the possibility of cheaters on multiple-choice tests, or people who just memorize lists of all the possible questions (they got online from other test takers).. Which severely dilutes the value of all multi-question-test certs.

      A lot of uncertified people are really qualified, and avoided certs due to the high cost, in terms of fees.

      For one cert to ever become de-facto standard, there would have to be agreement in the industry which doesn't exist, or it would have to be totally vendor-blind which limits its value.

      You can't certify C++, C#, or Java developers with the same test, and ask specific questions, unless it either doesn't mention any language-specific features: or it provides questions with the code sample in all 3 languages, where the answer is the same for all 3.

      Because there are so many certs in every computing field, the value of any individual cert (or list of certs) is highly diluted.

      You put SCEA on your resume... the hiring manager may see your line that says "SCEA" and may very well think "What the hell is a SCEA?"

      You practically need a certification to indicate that you KNOW what the names are of all the computing and developer industry certs out there.

    5. Re:Blame open source by Rakishi · · Score: 3, Interesting

      Lawyers don't get paid a lot, some lawyers get paid a lot. Just passing the bar exam gives you more or less nothing.

      You have to go to a good school, rank highly at that school, do well on the bar exam, join a well known law firm, work your backside off for 80 hours a week and so on.

  12. Turf battle by oldhack · · Score: 2, Funny

    Guess this is meant for CEOs and CIOs. Interesting ammunition for office politics, but it's CYA time these days - not the best timing.

    --
    Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
  13. 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
  14. 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.

  15. 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
    2. Re:Where are they going to find these managers? by Anne+Thwacks · · Score: 2, Insightful
      I wonder sometimes where this persistent stereotype of the "techie" comes from.

      Dont you watch the mass media? The media are run by people who failed basic science, and assume that, because they are clueless about sci/tech, that anyone with sci/tech understanding must be as clueless about the rest of the world as they are about sci/tech.

      Not only that, they often have a huge personal comittment to protraying techies as "wierd" because it justifies their own willful ignorance.

      --
      Sent from my ASR33 using ASCII
  16. Yeah, right by thethibs · · Score: 3, Insightful

    Switch to the open source model of development where the only things that get implemented are the things the developers are interested in. With all due respect, this would be a return to the bad old days of mainframes when users had to put up with whatever the data processing department built and be happy that they had any automation at all.

    One of the dumbest ideas I've seen on my screen in one devil of a long time.

    --
    I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
  17. 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?

  18. Can't emulate open source by syousef · · Score: 2

    Instead, companies should emulate the open source model of development

    1. Your mother's basement isn't large enough for the whole company
    2. There may be liability issues if you put your company on a diet of pizza and coke
    3. Employees want to be paid.
    4. It's hard to ship product when all you do is squabble and pull the project in different directions
    5. Most of your employees will prefer to shower.

    If you mod this as troll you have no sense of humour whatsoever

    --
    These posts express my own personal views, not those of my employer
  19. The problem is the meritocracy by FATRanger · · Score: 2, Interesting

    The author states that code improvements should be driven by "the developers with the deepest architectural understanding of the code, the closest interaction with the code, and the most responsibility for the code". However, this is a programmer biased perspective and not at all how a business operates.

    A business is focused on making money. For the founders, the owners, the stakeholders with the most financial resources invested, that is what it comes down to. That is why if they find an employee that can generate more of it form them they are more likely to listen and give "the greatest decision-making power" to. Normally this ends up being the sales person, marketer, etc. They become the CEO. Those that are good at making things work become the COO.

    While things are going well and the company is successful people will not question this model. Customers will request features, companies will implement them. When resources are short they will hire more people, layers of management gets added, everyone feels like their job is/can go somewhere.

    The problem occurs when those in charge become lazy or egotistic. The lazy manager will stop gathering user input, or fail to understand why developers gawk at the 100th feature request that are not followed-up on for the month. The impact on morale is the real cancer that kills ideas and companies.

    The egotistic manager will achieve similar results, but for different motivations. The incessant push for their ideas, the attempt at pressuring coders to succeed for them, etc. is too shallow and most egotistic managers are not good enough leaders/manipulators to actually motivate people even if it were for purely selfish purposes.

    For a coder the best skill is not communication skills, although it is important, but business skills. If you can make money, you can do whatever you want. If you are good enough you can leave all the petty office politics behind and start your own enterprise.

    Following another manager, however great, will never lead to security for the pure developer. This is because in the scheme of things you are just carrying out the vision of someone who helps the company achieve financial success. Just as soldiers are trained not to think too much, that is what managers want out of their coders as well when they have an agenda.

    The times where I have seen managers ask developers for ideas and comments are when managers are out of ideas. In which case they do so less out of a willingness to communicate and more out of desperation. That is why many CEOs describe their job as cultivating a culture because in a "my way or the highway" environment there is no way people will bother suggesting alternatives.

    If a coder wants security they need to first prove their worthiness to decision makers that they can be one of them, then lead and succeed for the organization; basically become a manager themselves. All of this requires a lot of investment in time and effort away from the text editor/IDE and a lot more time in front of people.

    This is why there will always be a divide between managers and coders, the roles simply require different skill sets and to be good at either is not easy. The best of either class are good at reaching out, which still requires both parties to be willing to participate for the exchange to occur.

  20. Well, yes. And? by prefec2 · · Score: 2, Interesting

    I have worked with people who can be categorized as coders. Some of them are good in writing down code blocks some of them are not so good at it. However, most of them arm poor in communicating, contributing in the design phase, or shutting up and implementing the stuff they're asked to do.

    The problem is, that they like to code, but not to plan. But without proper planning no project ever gets finished. So the first problem is that they do not really contribute to the high-level design (if they are invited) then they are not very communicative when they are asked to contribute to the detailed design. Mostly for strange reasons:
    a) The high-level design is flawed in their eyes, but they never bothered to tell anybody when they were asked.
    b) The don't like one or two technical decisions. This demotivates them.
    When you reach implementation phase, they hate to read documentation of the design or underlying frameworks, which results in duplication of framework functions. They work that way because they like to code, but hate to read specs., framework documentation, or the design. Sometimes they deviate from the design, just because they think their idea is better than the concept in the design.

    So it is difficult to catch them before they go crazy and you have to look after them often. At least until they know the routine. And the frameworks used.

    It is easier to work with people with more CS knowledge, because they understand the necessary of proper planning and design. They are able to discuss design issues and most of them speak their mind. Also they are able to have a discussion and accept better arguments from their colleges. Also most of them are able to learn a new language more quickly.

    Well what I wrote above is very black and white, but sometimes you have to exaggerate to make a point.
       

  21. Our days are numbered. by Ironchew · · Score: 2, Funny

    For example, today is 04/04/2009. It's a very useful technique, maybe Slashdot just wanted to let us the power at our fingertips?

  22. Range and availability of Skilled People by omb · · Score: 2, Insightful

    The skill range is actually infinity, as there are people who just cant program.

    Of those that can 100:1 is normal

    The US is going to have to grow up, and get educated again, or other places really will eat their lunch. Fortunately Obama seems to realise this, but neither Mainstreet or the rest of the world will put up with the MBA/Wall street culture again.

    If you listened to the G20 proceedings you will realise just how surely the game is up

  23. Coders are Manual Laborers by Anonymous Coward · · Score: 2, Interesting

    Now I don't mean to be incendiary, but I notice a lot of arrogance on the parts of most so-called coders. Disparaging talk of 'manual labors' and exalted speech on the superlative intelligence of coders over other complicated and nuanced professions (i.e. lawyers) seems prevalent in this thread.
    But at the end of the day, coders are the manual laborers of the software world, and that is not a bad thing. Anyone who has worked a physical job will be able to immediately tell you the difference between a skilled manual laborer and an idiot who happens to own a hammer. But just as your house, your car, your clothes, your computer hardware, your appliances, and pretty much everything else you use was built by a manual laborer, so also is the software that you use coded by a manual laborer.
    The suggested paradigm shift of moving more of the decision making to the programmers makes sense to a degree, so long as those programmers are able to step outside of their insular worlds and be completely cognizant of the role they play.
    A construction site has staffed with a strata of management, crew leaders, foremen, etc. Each able to make increasingly more important decisions. A crew leader might be able to tweak the plans a bit to run the conduit here instead of there to make things actually work, but he would not be able to change the placement of the wall. Even if he thought he knew everything about the way the building was to be built, and the engineering of the structure, and the final use. It is not his call. He might be the best damned hammer swinger in the country, but the architect and engineers put the walls where they want them, and it is not his call (no matter how smart he may think he his) to move it.

    OK, so this was a long and rambling post, but the final point is that perhaps some of the communication problems that people (read non coders) have with coders is the arrogance and myopic, narcissistic visions they hold.

  24. How to guarantee relevancy: by shrikel · · Score: 2, Funny

    So the best way to make sure you'll still be not only hirable, but desirable?

    Learn Hindi.

    --
    Any sufficiently simple magic can be passed off as mere advanced technology.
  25. You can't assign creativity ... esp. to developers by BemoanAndMoan · · Score: 2, Insightful

    Programmers are neither abstractly creative nor socially comfortable by default; in my experience it is usually the reverse. To be blunt, they are the worst spellers, often haven't read a book (not text, paper or graphic novel...'book') since high school, and have the communication skills of, well, that chubby guy sitting in the corner staring at the ceiling.

    Besides, you only need *one* guy on a team who doesn't sweat like the proverbial whore in church every time he/she has to speak in front of a crowd. Call him king geek, let him speak on behalf the team, and let the rest of the guys get back to work. This is known as "the way it currently works".

    Give a programmer a debugger, a pack of Redbull and some clearly defined goals, and he'll work magic. Put him in a suit and tell him to pitch a few new ideas and he'll show up with a cheetos-stained tie and a stress-induced facial tic.

    Plato once suggested that we should all be assigned our jobs at birth, and that philosophers should be the leaders. This is sort of like that, but less realistic.

  26. Older then you think by Mycroft_514 · · Score: 3, Insightful

    This same bit of rhetoric happens ever time there is a downturn in the IT economy. It never happens the way it is predicted because coding ends up being harder then the authors think.

    As for Agile - another fad, this too shall pass. (We called it prototyping last time around and it failed then too.)

  27. Re:You can't assign creativity ... esp. to develop by Secret+Rabbit · · Score: 2, Informative

    Stereotypes aside, that's basically true. Except for the programmers being poor spellers, etc. It's not programmers. It's really pretty much everyone that's graduated in the past decade or so. That might be some hyperbole, but it's not far from the truth. I mean, just look at how the 30+ crowd writes, and then compare that to today's high school graduates. It's chilling.

  28. Matrix Layout by owlman17 · · Score: 2, Interesting

    Does anyone remember Matrix Layout (which later became Objects Layout) from the early 90s? You made flowcharts from ready-made blackboxes. The whole thing was drag and drop. It was pretty impressive during the days of DOS. You had a choice of generating EXEs, or C++, Pascal and BASIC (if you wanted to fine-tune your code). An ad in Byte magazine read: "Not a single damn line of code ever again!" And I had thought back then that the days of mainstream coding would be over by the next decade.

  29. You almost have it. by CFD339 · · Score: 3, Insightful

    Agile is good a the following:

    #1. Product managers and development team leaders can use the make believe "persona" as a way to beat each other over the head with their agenda.

    #2. Lets management push developers hard on short term wins that generate enough change to justify a short release schedule and drive up renewal revenue.

    What agile seems to be bad for:

    #1. Any hope of major architectural change is out the window, along with anything requiring more than a few months to make happen.

    #2. QA drops through the floor. Features come fast and furious and compromises have to be made. A strive for mediocrity rules the day.

    #3. Documentation ceases to exist in any meaningful sense.
     

    --
    The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
    1. Re:You almost have it. by Jane+Q.+Public · · Score: 2, Informative

      I give you exactly the same reply I gave the person above: If you really believe that, then you have never worked in a real Agile shop. My experience has been quite different, and I know quite a few people who would say the same.

  30. Can't Tame the Exam by Tablizer · · Score: 2, Interesting

    The problem with an "IT BAR exam" equivalent is that software engineering is not yet subject enough to the scientific process to make an objective exam. Can anyone really objectively *prove* that OOP is better than functional or visa versa? That Java is "better than" Lisp? That static typing is better than dynamic? Even objectively proving that goto's are "bad" has been difficult. There's a large psychological aspect to code design.

    At best such a test can verify that one is aware of and skilled at different methodologies, paradigms, and languages. But we already have certification programs for specific ones, which is what most HR departments want: a narrow fit.

    Plus, the law requires that legal practitioners are licensed before they perform certain activities, such as filing lawsuits. It's not just the knowledge; there's legal restrictions on the unlicensed. I doubt such will exist anytime soon in the software field, except maybe in narrow specialties, such as for medical devices.

    Software is weird stuff.

  31. Rain Man coders by Dillenger69 · · Score: 2, Insightful

    The last thing a business needs is some pack of rain man coders directing where projects go.
    Deep coders are too hyper-focused to understand business needs and the people running the business are too focused on that to understand the code.
    In the real world where jobs depend on money and deadlines there need to be abstraction layers between the people writing the code and the people running the project.

    --
    09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0
  32. The problem often is on the other end by S3D · · Score: 2, Interesting

    3) I actually understand the business needs for the code I'm writing.

    It's often business end people who don't understand the business needs for the code, and don't want to hear it.

  33. Japanese style management is needed by Billly+Gates · · Score: 2, Interesting

    Japanese always work in groups. The boss is the coach who negotiates with the team and goes over the business requirements. The team is rewarded or penalized based on results. The coach minimally is but not to the crazy extend as it is in American culture where the CEO gets credit for everything.

    Engineers need to make technical decisions and work together in a high performance work group and leaders for different things in the code base will alternate on their own depending on respect and who knows more in each area. The coach just makes sure the business processes are in properly and perhaps gives customer feedback.

    Many companies like HP already do this and this is why Japanese cars are so reliable. Engineers make the decisions and not cost saving accountants (with the exception of now Nissan who has American management). If only health insurance companies followed this mantra when accountants make critical medical decisions for the doctors and then the prices skyrocket as a result of mistakes.

      Paired programming is annoying but having the geeks hammer it out and do their thing works and the business analysts who has more limited power can make sure it does what it needs to do.

  34. User-developer connection by thaig · · Score: 2, Insightful

    I think that the more layers of people that there are between developers and users, the less appropriate or useful the product will eventually be.

    --
    This is all just my personal opinion.
  35. Outsourcing is horribly shortsighted by DrXym · · Score: 2, Interesting

    I work for a company which has development groups in lots of countries including India. For reasons that might have sounded great in theory, they farmed off a lot of maintenance development to India - hey it's 1/3rd the price!

    As a principal / architect I would often be tasked with overseeing their work, or trying to direct their solutions. That experience was incredibly frustrating for multiple reasons:

    a) Cultural differences. Indian developers were the most passive bunch I have ever worked with. They never took the initiative on anything, never offered alternative or better ways to do something, never took time to understand *why* they were asked to do something. Basically if a requirement or design said X they would implement X even if it was ambiguous or nonsensical from a business or coding point of view. Other groups in other countries would push back and the process would improve. This meant the devs had to be closely supervised and all changes reviewed and approved. Tasks took 2-3 times as long to complete which negated any cost savings and also pushed out roll-out times.
    b) Language issues. Email was fine. Phone communications were a complete nightmare. Many Indians simply couldn't be understood on the phone. Verbal communication is a critical skill for any programmer. I recognize English is not their first language but its still a requirement and many other countries manage it just fine.
    c) Revolving door development. Turnover in India was crippling and every fix or update was handled by different people. This made it impossible to imbue business knowledge, or good coding standards or common practice. Development took longer and the code rapidly becomes a mess of hacks and unsafe techniques.

    I'm not saying work can't be farmed out but there has to be a core team of long-term developers. Developers who have business knowledge, developers who will speak out when some requirement is bullshit, developers who have some vested interest in the quality of their code. If you treat developers as an interchangeable commodity you will get back complete shit for your efforts and quality will go down the tubes.