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.

305 comments

  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 thethibs · · Score: 0, Flamebait

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

      --
      I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
    4. 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.
    5. 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"
    6. 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.
    7. Re:This is extremely old news. by Jane+Q.+Public · · Score: 1

      I'm not saying it's stale at all... in fact that is part of my point. Agile is still quite popular and well. And the message hasn't changed. Therefore, author just wrote about this stuff as though he thought they were original ideas. They aren't.

      Repeat: where has he been?

    8. Re:This is extremely old news. by Jane+Q.+Public · · Score: 1

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

      I did not state anything, anywhere, that would contradict this. So who are you replying to? What's your point?

    9. Re:This is extremely old news. by Hognoxious · · Score: 1

      Agile is so last year.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    10. 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
    11. Re:This is extremely old news. by Anonymous Coward · · Score: 1, Insightful

      A whole hell of a lot of managers are managers because they can kiss ass, and not because they can manage. If and when their boss realizes this the #2 ass kisser then becomes managers..rinse and repeat..news at 10.

    12. 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
    13. Re:This is extremely old news. by Jane+Q.+Public · · Score: 1

      Have you ever worked in a real Agile shop? If you had, you would know that management specifies goals, developers decide how they are going to implement those goals. And there is back-and-forth communication about it. If you worked where management kept you in the dark about future plans or features, then you worked in a place that was mis-managed. Don't blame Agile for that.

      If management was keeping you in the dark (or you, as management, are keeping your coders in the dark), then it isn't a real Agile shop. It is a Waterfall shop with a pretense of Agile. Not the same thing at all.

      Seriously. That's not the way Agile works. If you thought it did, you were being deceived.

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

    15. Re:This is extremely old news. by Jane+Q.+Public · · Score: 1

      Well, hey, you know... COBOL programmers can still get jobs. Go figure.

    16. Re:This is extremely old news. by gmc74 · · Score: 1

      The problem with this approach is that the coder is not typically the subject matter expert, nor would you want them to be. When you have coders determining the direction of your application, you run the risk of their tunnel vision affecting the usability of your application. They are typically out of touch with the end users needs, and add features that are technically or visually appealing, but have a negative impact on the end user's experience.

    17. Re:This is extremely old news. by Jurily · · Score: 1

      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.

      This sounds more like the customer knows too much. The methodology is not their problem, and they're not the ones who know better, by definition. If they were, they would do it themselves. Just tell them a wizard did it and to STFU.

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

    18. Re:This is extremely old news. by Draek · · Score: 0, Redundant

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

      It is if your only intended user is yourself.

      Thing is, not all users are intended users. To continue with your car analogy, just because your neighbor puts his 5-years-old in front of the wheel doesn't mean we should put the pedals higher so he can reach 'em.

      --
      No problem is insoluble in all conceivable circumstances.
    19. Re:This is extremely old news. by wisty · · Score: 2, Insightful

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

    20. 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
    21. Re:This is extremely old news. by Bhrian · · Score: 1

      Most businesses implement only pieces of Agile and fail to understand, much less implement, the reasons for Agile.

    22. Re:This is extremely old news. by Anonymous Coward · · Score: 0

      Of course it's old news, and it's what I've found myself arguing for at various organizations for years. I'm not alone in the boat, either; Most devs with "deep understanding" of anything also have a deep resentment of having things parcelled up and handed to them like so many factory workers. That approach yields crap, boring jobs, and crap, boring software.

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

    24. Re:This is extremely old news. by Anonymous Coward · · Score: 0

      Where have you been?

      In the real wold, where most major companies don't slavishly follow all the latest fads.

      We don't do agile, for the same reason we develop our websites in Java or ASP rather than RoR.

    25. Re:This is extremely old news. by eam · · Score: 1

      You just brought back a memory of having to remove the battery to change the driver's side headlight in a car.

    26. Re:This is extremely old news. by thethibs · · Score: 1

      Proponents of Agile development and similar philosophies have not been touting the open source development model, as TFA does. My point is that Agile and open source communities solve different problems.

      --
      I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
    27. Re:This is extremely old news. by Jane+Q.+Public · · Score: 1

      Actually, the opposite is true. If you look at some of the most successful Agile code shops today (take HashRocket as just one example), you will find that not only do they use largely open-source tools, they are very big supporters of, and contributors to, the open-source community.

    28. Re:This is extremely old news. by CodeArtisan · · Score: 1

      If management was keeping you in the dark (or you, as management, are keeping your coders in the dark), then it isn't a real Agile shop. It is a Waterfall shop with a pretense of Agile. Not the same thing at all.

      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.

    29. Re:This is extremely old news. by Hognoxious · · Score: 0

      The highest-rated and highest-paid development shops in the U.S. right now are Agile.

      [citation needed] Go back to the dotcom boom. The highest-rated and highest-paid developers had 900 dollar chairs and spent half their time playing table football. So if a company buys 900 dollar chairs and lets their developers spend half the day playing aroound, they'll pwn everybody.

      If you can think of something better, let's hear it.

      Common sense?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    30. 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
    31. Re:This is extremely old news. by Eli+Gottlieb · · Score: 1

      Naw, you're making the false assumption that managers won't just hire other technologically incompetent managers out of good will towards fellow members of the Brotherhood of Pointy-Haired Bosses.

    32. Re:This is extremely old news. by toriver · · Score: 1

      Waterfall is about writing a bunch of prose that hopefully captures most needs, sending the prose off to some fucking monastery where undisturbed Software Priests do something and out pops a big monolithic system and if it ends up as something the customer still wants and/or the users actually like is random chance. Waterfall does not say shit about unit testing, refactoring etc. i.e. it ignores most advances in computer science the last thirty years. Waterfall is DEATH.

      You have NO understanding of real agile, whether XP, Scrum or Lean. Agile (at least in the Scrum way) is about the customer NOT knowing what he wants and the customer changing his mind throughout the project. It reflects REALITY. Computer scientists are no longer the suit or white coat-wearing "wizards" of old. Wake up.

    33. Re:This is extremely old news. by ShieldW0lf · · Score: 1

      Don't mind me... I've only been delivering software professionally for ten years with zero failed projects under my belt to companies who without exception grow dramatically after my software goes live or get bought out for millions of dollars... What the hell do I know...

      Tip for you... just because you don't know how to do requirements gathering and plan a project doesn't mean everyone else shares your incompetence.

      --
      -1 Uncomfortable Truth
    34. Re:This is extremely old news. by turbidostato · · Score: 1

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

      Of course it implies it. And in a very agile way too. Scratching one's itch implies listening to the very key-user of the project: me.

    35. Re:This is extremely old news. by Anonymous Coward · · Score: 0

      only 2 out of 15 of mine co-workers have common sense. methodologies are for them to be driven on a project. I'll move forward the project whatever the goal, whatever the road.

      the pointed haired boss wanted to build an oversized team on the cheap, and so now we are "agile".

      now I just want to kill myself.

    36. Re:This is extremely old news. by Jane+Q.+Public · · Score: 1

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

      You can be a world-class programmer yourself, and have a shop full of them, I don't care. That statement is just plain false.

      It is sad that you have had such a negative experience with Agile programming, but all I can say is once again: if that was your experience, then you have never worked in (or run) a genuine, good Agile shop. That's just not how they work. You can talk all you want about it but the fact is that the people who are making the big bucks today are Agile. And there is a reason for that.

    37. Re:This is extremely old news. by Jane+Q.+Public · · Score: 1

      That was then, this is now. The dot-com boom was not about Agile programming, it was about people building stupid websites and other people throwing stupid money at them. There is a huge difference. The programming methodology had little if anything to do with it: it was the business plans that were defunct.

      I am talking about NOW, recession or no recession. This was no "Agile programming bubble" that burst. The causes of this meltdown were in different parts of the economy entirely.

      If you think letting your programmers play around a bit is a destructive thing, then go tell that to Google. I am sure they will be all ears. They will change their multi-billion-dollar, diversified company just on your say-so, despite all the evidence.

    38. Re:This is extremely old news. by DragonWriter · · Score: 1

      Have you ever worked in a real Agile shop? If you had, you would know that management specifies goals, developers decide how they are going to implement those goals.

      My understanding of Agile is that customers specify goals, and that (whether an internal IT unit or on IT firm with external customers) management is rarely the customer (there are, of course, situations in which the firms management as such, rather than a different business unit, is the customer), but instead is more concerned with high-level resource allocation above the project level. There is usually someone in management responsible for oversight of the project as a whole (whether internal or external), but they should mostly be resolving any issues that bubble up from below and making sure the project is aligned with broader goals of the organization, not controlling the project on any kind of a detailed level.

      If management was keeping you in the dark (or you, as management, are keeping your coders in the dark), then it isn't a real Agile shop. It is a Waterfall shop with a pretense of Agile.

      Management keeping coders (or anyone else involved in a project) in the dark isn't part of any methodology I've ever heard of (it is, of course, astonishingly common, regardless of notional methodology.) If that's what is going on, its a dysfunctional shop on a level which transcends the notional development methodology in use.

    39. Re:This is extremely old news. by toddestan · · Score: 1

      Early 90's Honda owner?

    40. Re:This is extremely old news. by Hognoxious · · Score: 1

      And I'm talking of correlation != causation, and blindly following fads in the hope that if it works for comapny X, it'll work for your company. Are you saying that Google's sucess is down to the fact that they let the developers goof around? Entirely due to that? Because if you are, it seems you're one of the blind followers. If you aren't, then what are you trying to say?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    41. Re:This is extremely old news. by sjames · · Score: 1

      Actually no, coders will grow into programmers or go away. Managers will be replaced by architects.

      A coder is the guy who gets a nausiatingly detailed description of what is required and then translates it into code. He doesn't make a single move without a document that says he should.

    42. Re:This is extremely old news. by Anonymous Coward · · Score: 0

      I could not agree with you more.

  2. yup by Hognoxious · · Score: 1, Funny

    tru dat

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  3. I agree totally... by rlanctot · · Score: 3, Funny

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

    1. Re:I agree totally... by thaig · · Score: 1

      . . . but that's what's happening now . . . ??

      --
      This is all just my personal opinion.
  4. 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?

  5. 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 Z00L00K · · Score: 1

      I would say that your list should be the other way around and the most important factor is to understand and communicate not with the people that are paying you. They are often just accountants and similar people with little insight in how the customer actually behaves.

      The essential point here is that if you can understand the need of the customer really well then you are already ahead of the crowd. Every customer has their own semantics, business language and methods no matter how similar their products are to their competitors products.

      If you can't understand the customer you can produce something completely and utterly useless or even something that's harmful for the customers business. That regardless of how good code you write.

      But writing good code is of course also important. And if you select the right languages you can get a lot of help on the way to write good code. For Java you have FindBugs and a lot of other tools.

      And if you can communicate with the people that are paying you it's an added bonus, but if they consider you a grumpy and obnoxious nerd that still is able to do a good job and actually takes good care of the customer you may have your ways. A satisfied customer is good for the business.

      And even if you don't directly communicate with the customer in day to day work it's not wasted time to actually try to understand their case. Don't be afraid to check out what they actually do, and get a sense of their situation. Most customers aren't starting from zero, but have a long history of how things are done.

      But be very careful with cases where the application requirements are passed through several layers before reaching you as a developer because that is How Shit Happens.

      --
      If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
    5. Re:So it helps to be.. by jez9999 · · Score: 1

      No, he should've made a Powerpoint presentation and linked to that.

    6. Re:So it helps to be.. by rthille · · Score: 1, Funny

      Could you redo that in a Word 2009 doc, that I can't read and am forced to upgrade because of?

      Thanks,

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
    7. Re:So it helps to be.. by tsm_sf · · Score: 1

      I'm going to go ahead and distill your comment down to one sentence (which you may or may not agree with):

      User Interface is the single most important aspect of any project.

      --
      Literalism isn't a form of humor, it's you being irritating.
    8. 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.

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

    10. Re:So it helps to be.. by Gorobei · · Score: 1

      Agreed. The definition of a good HR person is soft skills and zero technical/professional talent (else they'd be doing something more useful and highly paying.) Give them rope, and they'll propose people like themselves: pleasant and unproductive.

      Although, I wouldn't hire a person I wouldn't be willing to eat lunch with: too much lack of mutual ground makes for high risk.

    11. Re:So it helps to be.. by Billly+Gates · · Score: 1

      Hr seems to do a great job with other aspects of the business like creating high performance work groups, japanese stlye management, and making sure the right people are hired who understand business proceses.

      For some reason I.T. is viewed as a cost center who add no value other than someone who comes in with a screw driver to open a desktop and fix it .. aka help desk. Gee people in India can do that job for alot less over the phone for half the cases.

      Anyway I.T. needs to be treated like engineering or product development specialists. Engineers are quized whether they know business processes. Why can't I.T.? I think they assume we just drink redbull and play around with html all day and do any *real* work.

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

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

    14. Re:So it helps to be.. by Anonymous Coward · · Score: 0

      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.

      4) Drop the sarcasm at the door :-)

      Otherwise you'll do fine.

      Anyway, as long as you can do the job and don't talk back, you'll have a job.

      from: your friend the Pointy Haired Boss

    15. Re:So it helps to be.. by Ender_Stonebender · · Score: 1

      Mod parent up...to +50 bazillion. If every programmer working on Linux or Linux apps understood this, it really could be the year of the Linux desktop!

      --
      Loose things are easy to lose. You're getting your hair cut. They're going there to see their aunt.
    16. Re:So it helps to be.. by ClosedSource · · Score: 1

      I guess I travel in different circles, but I've never worked with anyone who knew only one computer language.

      In any case, if somebody is doing only web work, who cares if they don't know anything about programming outside of that area? Many companies won't let you contribute outside of your designated area and self education is rarely counted in hiring unless you're a new grad.

    17. Re:So it helps to be.. by angel'o'sphere · · Score: 1

      Wow,

      you are so insightful!

      I understand your posting as you wanted to make a kind of joke and bring it to the point, or am I wrong?

      My experience is:

      99% of the coders are unable to follow your 1) 2) 3) example, as they suck on at least 2 of those 3 points.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  6. 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 H0p313ss · · Score: 1

      Damn... where are my mod points when I need them. MOD PARENT UP

      --
      XML is a known as a key material required to create SMD: Software of Mass Destruction
    8. Re:Either trivial or bullshit by Anonymous Coward · · Score: 1, 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".

      You're grouping all "coding" together. For experimental coding, pair programming might make very little sense, for example. Just because it involves typing that produces source code doesn't mean it's all the same.

      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.

      This seems misguided. Programming *is* communication. As SICP put it, "programs must be written for people to read, and only incidentally for machines to execute". Spoken word and source code each have their strengths. I can't ask a question of some source code, but I also can't grep that conversation we had 2 months ago.

      A good programmer should be able to communicate well with either medium. If you can't communicate in code (one-to-many persistent communication), communicating in speech (one-to-one volatile communication) won't help much.

      The focus is on the implementation, not the communication. It should be the other way around.

      Again, shoehorning. With experimental programming, the programming is not about implementation, but about generating ideas. But even if you're doing boring work, why do you need 2 people programming? Work out the ideas together first, and then the implementation is easy for one person to do.

      Looking at all the great programs and terrible (or aborted) programs, I see pair programming as an averager. Neither the great programs nor the horrible ones were pair-programmed. Pair programming seems like a hedge: you probably won't fail, but you probably won't make something great, either.

      To me, the conclusion is clear: people will try to use PP at companies when they're uncertain of their teams. And they'll produce average programs, and which will get beaten in the long run by some person in a garage with a cheapo PC, who can produce a new innovation, not just a competent implementation.

      Computer programming is a really new field, and yet, it's not taking any lessons from mature fields. When two authors write one book, you don't see them sitting down at a keyboard together. Nor two composers, or any other pairs. But more generally, most good creative (as in, the act of creating anything new, not necessarily 'artsy') work is done by *one* person. The problem with programming isn't that people need supervision; it's that our tools are still so low-level that one person can't reasonably design-and-write a whole program. You just don't see users passionate for programs today like you did in 1986, when they were written by one guy.

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

    10. Re:Either trivial or bullshit by Anonymous Coward · · Score: 0

      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.

      "

      The magic words are (American), "economy" & "need." Today, we measure the 'economy' soullessly in terms of $'s. The Dismal Science has never made room for anything but that which can be measured in terms of currency. Therefore, my value is commensurate with my salary, and anything else is irrelevant to an economist. Ergo, it does not matter what the U.S. 'experiences' in human terms. All that matters (to the dismal economist) is whether the GDP (no longer the GNP) is growing. Even when growth is measure in terms of inflated dollars and wages are falling in 'real' terms, this is true (to an economist). Change the premise and you change the equation.

      The message from World's Fair from the 1930's, constructed by it's most influential architects, Dow Chemical, GE, GM, Westinghouse, and the like, was that technology was good for you and me, not just the executives, the stockholders and the board of directors. The swindle was propa(nda)gated using the rhetoric of the economist. We were all told to accept that an increase in productivity (that which justifies the investment in technology) would lead to a better standard of living, a 4-day work week and more of everything, for all. Has it happened, no. Is it likely to happen in a world with unlimited cheap labor, no. Do you have to accept that, no. Do you have to live with it, yes. Because, unless you are willing to cease your participation, along with everyone else who is competing for the brass ring, the highest bidder owns your sorry ass. (Ha-ha. For every one of you complaining about the requirements of toil in your high paying techno-weenie, button-pushing, barrel hugging positions, there are 2 others who are ready, willing and able to take your place and more than enough H1-B Visas to go around).

      It's called, "competition," and the finish line is just around the next bend, through Bretton Woods, and over the next barrel. But don't worry, God is on your side, we are all in it together, and your government (chosen democratically by those who are 'informed' by Disney [ABC], GE [NBC] and some other multi-national conglomerate [CBS]) is here to help you because We The People are the ultimate source of power.

      Revolution ( )

      IF {you don't like the status quo}

      THEN {Shut up and start coding something useful}.

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

    12. 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?
    13. Re:Either trivial or bullshit by AuMatar · · Score: 1

      It's really about fixing flaws in the rest of XP. In XP, you're supposed to skip desig an div straight into coding. So when you code, you're doing design and implementation at the same time. Given that, it makes a lot more sense- using another programmer as a sounding board in design can be very helpful. So pair programming is necessitated by the lack of design- if there's an obvious design flaw its more likely to be caught. Of course, the real problem is you completely skipped an important stage of development and it would be both easier and more efficient to catch it then. But that's the problem with Agile- rather than try to figure out the right amount of time to spend on preparation, they threw the baby out with the bathwater.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    14. Re:Either trivial or bullshit by Anonymous Coward · · Score: 1, Insightful

      So you're only catching trivial bugs? Sounds like a communication problem where the other person doesn't understand what you're doing, or not critically thinking about the problem from another perspective... and hence is only looking for trivial spelling errors.

    15. Re:Either trivial or bullshit by Daniel+Dvorkin · · Score: 1

      Well, frankly, you need to be able to communicate those details,

      Yes.

      so you _should_ be able to talk to somebody about the coding while you're doing it.

      No.

      Talking about your code while you're writing it is not the same thing as writing effective documentation, or even explaining the code verbally, after the fact. The latter is vital to to any non-trivial programming project; the former may be an effective technique on occasion, but most of the time it's utterly destructive to good programming. The best code is written by one programmer staring at the screen and thinking really hard -- specifically, thinking a lot more than typing or talking.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    16. 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.
    17. Re:Either trivial or bullshit by AuMatar · · Score: 1

      Or we're not making anything other than trivial bugs. Or the bugs we are making require complex testing to find, much less see when writing. The fact is pair programming is just not well suited to finding bugs.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    18. 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.

    19. Re:Either trivial or bullshit by mikael · · Score: 1

      Pair programming is more to get the senior person train up the junior person and extract their knowledge, then shuffle them up into management, so they can't pass the knowledge onto anyone else:

      ST exec turns from topsoil to silicon

      EET: What was the culture of the EE like back then?

      Bosson: They were gurus, and you needed the OK to talk to those guys. You had to be very shy and approach them [as you would] wild animals. Our wish was to try to grab as much as we could from them. But they were guys who were protecting their jobs, too. You had to have a lot of white and gray hair, Monsieur Le Engineer.

      You were trying to observe them because you wanted to get as much as you could from their behavior, their approach, their way of working. It was like [being] with a teacher. A teacher is ready to share with you. But those EEs -- as with the wild animal, you had to get close to them step by step, watching their emotions step by step.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    20. Re:Either trivial or bullshit by Anonymous Coward · · Score: 0

      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.

      From TFA:

      As the global economy shrinks, the role of the rote coder is disappearing.

      He's talking about code monkeys, not actual technical skills/engineering type. Actually code monkeys are more what you get when you outsource.

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

    22. Re:Either trivial or bullshit by mdwh2 · · Score: 1

      So you can't catch bugs when working outside of pair programming? Sounds like a communication problem where you don't discuss the functionality with other developers, or not critically thinking about the problem from another perspective.

    23. Re:Either trivial or bullshit by mdwh2 · · Score: 1

      I entirely agree. Of course, a second perspective is good, but you can obviously get that without resorting to pair programming, simply by discussing with over developers. Moreover, pair programming has the problem that you both have been looking from it with the same perspective, having gone over the same route, and making the same mistakes. The idea that pair programming is a different perspective is rather ludicrous, when you've both been working together constantly - I'd argue getting a different fresh perspective, for someone who isn't biased by having done and seen everything that you've done, is better.

      I think there are also other issues. Working together having to explain every thought you have to the person looking over your shoulder does make things more stressful for a programmer. No doubt the AC will respond with "OMG that makes you a crap programmer!", but this is an important thing to take into account. Whilst I am quite capable of communicating with other developers, one of the reasons I like programming is that I prefer working a reasonable amount of time on my own. I imagine this is true of many programmers, and indeed, other professions such as authors. Not to mention other issues, such as losing a great deal of flexibility now having to go around with the other person (e.g., having to take lunch break at exactly the same time, sharing desk and computer). It's one extreme to the other - a job traditionally focused on individual work, going to one that requires far more constant social interaction than most other jobs. If programmers don't like that, they'll be more likely to look elsewhere, and that's something companies have to take into account too.

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

    25. 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".

    26. 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
    27. Re:Either trivial or bullshit by phantomfive · · Score: 1

      Your comment may be slightly flamebait, but no more than the GP and what you say is absolutely true.

      --
      Qxe4
    28. 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.

    29. Re:Either trivial or bullshit by Tablizer · · Score: 1

      Let's just all agree that those who do well at all three:

      1. Technical skills
      2. People skills
      3. Understand the domain (specific business at hand)

      will be better off. Those who only master one, or really suck at one, are in trouble when tough times come. There will be a few exceptions where the technical aspect overrides all others, such as a high-end Oracle or DB2 performance tuner. But for most of us, all 3 will matter.

    30. Re:Either trivial or bullshit by phantomfive · · Score: 1

      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.

      Thankyou for the interesting overview, I liked your comment. However, this last part is incorrect; I have tried pair programming. You are right that I didn't find the interruption to be a problem, but I still also prefer working on two different computers, for a lot of reasons.

      --
      Qxe4
    31. Re:Either trivial or bullshit by Daniel+Dvorkin · · Score: 1

      Thank you. Maybe I shouldn't have replied to an insult with an insult, but I thought that was really the most honest way to make my point. ;)

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    32. Re:Either trivial or bullshit by Anonymous Coward · · Score: 0

      You're like an orderly at a mental hospital who believes it when a patient tells you he's Napolean Bonaparte but you just can't figure out how it could be.

    33. Re:Either trivial or bullshit by plopez · · Score: 1

      It may seem trivial to you, but these basic principles have been violated on a number of jobs I have been on. To put it another way, "common sense is often neither".

      What seems obvious to us often seems beyond the grasp of other programmers/IT workers or mangers I have met.

      Beware, you may end up working with some of them some day.

      --
      putting the 'B' in LGBTQ+
    34. Re:Either trivial or bullshit by Anonymous Coward · · Score: 0

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

      Dogmatic fallacy.

    35. Re:Either trivial or bullshit by Sneeka2 · · Score: 1

      Any significant chunk of code is highly complex and detailed. It needs to be kept in the head as a whole...

      Indeed. Code sometimes simply doesn't make sense until a whole block of it is finished, but then it might be the optimal solution. I often keep notes or hypothetical variable states strewn about the code while I'm developing to help me develop the details from my general idea, often not even as comments, which invalidates any syntax. Once the idea is "out of my head" and has been written down into detailled steps, I go about cleaning the code up and testing it.

      I probably couldn't communicate every single piece of code to somebody else in this development phase, because it doesn't make complete sense to me either yet, as I'm still working out the details. Once it's finished I can communicate it perfectly, because I understand the general idea AND the detailled implementation.

      I imagine any moderately experienced developer works much the same way and just needs somebody to bounce bigger concepts off of every once in a while. But every itsy bitsy piece of code...? That indeed seems like trying to make two mediocres equal one good.

      --
      Bitten Apples are still better than dirty Windows...
    36. 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.

    37. Re:Either trivial or bullshit by Cederic · · Score: 1

      You'd benefit from pair programming.

      Your code is clearly too complicated. If you can't glance at it and tell what's going on, it's too complicated.

      Pair programming results in simpler, clearer code. It has to, for the partner to be able to keep up with the driver.

      As a moderately experienced developer I did work in the same way. As a very experienced developer I moved on from that to writing far simpler code.

      The only trade-off is a tiny overhead in performance, and if I ever write device drivers again I'll address that then.

    38. Re:Either trivial or bullshit by Cederic · · Score: 1

      You could gather all the requirements up front.
      Analyse them.
      Identify the patterns of interaction between the system and its environment.
      Specify a framework to enable re-use of common capabilities.
      Identify major system components needed to implement the functionality.
      Define an object model for each of those components.
      For each object of each component of each framework for each type of interaction you could specify the object interactions needed.
      You could use those to define operations on objects, their parameters and return types.
      You could document all pre- and post-conditions for calling those operations, including all possible error conditions.
      You could depict the interactions between the objects by identifying which operations are called from within each of the operations on any given object.
      You could use all this information to generate the objects, their operations, the input validation on their parameters.

      What I've never understood is exactly how this is meant to work.

      Sure, you're done all the planning stuff before you start writing C++, or Java, or VB. Unfortunately you've also written a lot of code. It's not in a formally defined programming language, but it's there, in your diagrams, your case tool, your documentation.

      Why would you code in those tools, where you're still several steps away from compilable code that you can easily automate testing? Why would you define to that level of detail without testing first.

      It happens. It's possible to do in an iterative development environment (as opposed to waterfall) too. It also has decades of failed projects demonstrating that for most business system development this approach is heavily sub-optimal.

      We're finally starting to get to the level where people can pull together pre-built components into a working system using drag-drop tools and minimal technical skill. I believe that can work, and over the next decade I expect to see a lot more of it.

      At that point you're constructing; to really work you need good construction materials. Right now we lack those and we lack the tools for working with them.

      In the meantime I'm going to advocate writing code in code. It's easier to test, it's easier to change, and if you pair-program then it's easier to design, to write and to get live with minimal bugs.

    39. Re:Either trivial or bullshit by Anonymous Coward · · Score: 0

      oh dear

      "Pair programming is great for people who can't code very well, but for leet super coders like me it is a bad thing"

      Sorry son, but I bet you are nowhere near as good as you think you are. Your aversion to pair programming is probably because deep down you know it too.

      I'm willing to bet that an hour long pairing session with me would feel like going back to school for you - and that scares you doesn't it?

      I'd probably pick up a few things from you too. Such a pity you are so scared of it.

    40. Re:Either trivial or bullshit by Sneeka2 · · Score: 1

      Your code is clearly too complicated. If you can't glance at it and tell what's going on, it's too complicated.

      I disagree. The phase of working out the details is usually a bit messy if you're working on any kind of involved code. Whether you're working out the details on paper or at the keyboard, alone or with somebody else. You need to go over it a few times and shuffle things around as necessary.

      That doesn't mean that the resulting code is messy. I'd say what I end up with is usually very minimalist, understandable and to the point. Write it out verbosely, cut redundancy afterwards, condense where possible, optimize where necessary.

      Or can you actually write everything straight, from start to finish, without changes, completely optimized?
      You always have a phase where things are rather in flux. I happen to go through this phase at the keyboard. With a second person I'd go through it verbally or on paper, then implement it in code when we can agree on a good solution. Either way, one person is writing the actual code. I don't see a need for somebody looking over my shoulder during that time.

      It's great to bounce ideas off of another experienced developer. It's great to discuss advantages and disadvantages of certain designs over others. But writing a block of code that implements these design decisions without bugs and to the specs/idea should be well within the capabilities of a single programmer.

      --
      Bitten Apples are still better than dirty Windows...
    41. Re:Either trivial or bullshit by Haeleth · · Score: 1

      Your code is clearly too complicated. If you can't glance at it and tell what's going on, it's too complicated.

      He can't glance at it and tell what's going on because half of it hasn't been written yet.

      Do you people even read the posts you're replying to, or do you just scan them for keywords and paste in ready-made responses from the Pair Programming Evangelist's Handbook?

    42. Re:Either trivial or bullshit by mdwh2 · · Score: 1

      and if you pair-program then it's easier to design, to write and to get live with minimal bugs.

      Of course, two people may well be better than one, but that's obvious.

      What you need to show is that pair-programming is more than twice as productive - in terms of adding functionality and reducing bugs.

    43. Re:Either trivial or bullshit by mdwh2 · · Score: 1

      But I'm not talking about two people working on the same area - yes, the man month is mythical, but that means in the sense of having two people working on the same issue. In large projects such as where I work, we have people working in very different areas, and communication directly between these people is not required (of course, we do communicate as when necessary, but clearly, the "pair" will still need to communicate to other pairs of programmers too, so there is no difference here).

      Basically, if you have enough money that you can double the number of employees, I'll agree that pair programming is worth trying. But the idea that most programmers in a development team result "in no increase in the amount of work performed" is ludicrous - if that's true, then you've got more serious problems that need resolving, that have nothing to do with not pair programming. (Given the book you quote, I suspect you're misquoting - as I say, the mythical man month is to do with adding extra programmers to a problem, and not companies that simply have more than one employee. By your reasoning, a company with 1,000 employees is mostly useless, and only slightly more productive than one with a handful of employees!)

      Indeed, if that was really true, why not extend the concept? I mean, if we have 10 developers split into pairs, surely by your logic, the 4th and 5th pairs don't really do very much. So perhaps we should all group them up - just have ten people sitting round a desk, working on the same bit of code. That'll be much more productive right? It must be true, because of the Mythical Man Month!

      The idea enables teams that are twice as large

      Most companies don't have the resources to suddenly double their development size. I think you're making the assumption that most places are already overstaffed by a factor of 2, and hence people are already doubled up in the same bits of code, where they don't really help. Yes, there the Mythical Man Month applies, and pair programming would be worth trying, as I say.

      But there are plenty of companies that aren't like that. My experience is that places are more likely to be understaffed, and need as many new developers as possible. At these places, pair programming is the last thing you want.

    44. Re:Either trivial or bullshit by julesh · · Score: 1

      But I'm not talking about two people working on the same area

      Well, that's the fundamental disconnect we have here. Yes, if you have separate areas you should assign individual programmers to those until you have them all covered (unless you consider bug-free results more important than speed of development: in safety critical areas I would suggest pairing as a basic safety technique to prevent errors). Then you should probably have teams of two people working independently, again as long as productivity is your main concern. After that, I think as soon as team size goes up to four you're better off with your members pairing rather than working individually.

    45. Re:Either trivial or bullshit by Cederic · · Score: 1

      Which part of "Any significant chunk of code is highly complex and detailed." did you fail to realise I was responding to?

      Are you really telling me that it's impossible to implement extensive features in a system without writing pseudo-code and understanding the whole solution in your head at once?

      Think that one through for a few minutes.

      If the code hasn't been written yet then there's nothing to understand. Forgive me for wanting some professionalism around here, but try taking an engineering approach to things.

      Write simple code. Build complex behaviour from simple start points. Unless you're doing some serious mathematics (in which case it'll have an elegance of its own to those that comprehend the maths) then there's no real need for complicated code that is hard to understand.

    46. Re:Either trivial or bullshit by Cederic · · Score: 1

      writing a block of code that implements these design decisions without bugs and to the specs/idea should be well within the capabilities of a single programmer

      I'd like to refer you to approximately fifty years of bitter experience that argues against your point.

      Sure, it should be well within the capabilities. There are millions of examples of where it isn't.

      Pair programming is one of the techniques identified that helps address that reality gap.

    47. Re:Either trivial or bullshit by Hognoxious · · Score: 1

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

      So no code written before 1998 works?

      I'll tell Linus he's shit if you'll tell RMS, I hear he has a bit of a bad temper.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    48. Re:Either trivial or bullshit by Hognoxious · · Score: 1

      On top of that, sitting that close together means you need to have a shower more often.

      At a minimum once a week. That's each, no setting up a rota.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    49. Re:Either trivial or bullshit by Hognoxious · · Score: 1

      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.

      What Brooks was talking about was the overhead of coordinating a task that has been fragnmented into many pieces. It was nothing to do with having more than one person working on each piece.

      Have you read it?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    50. Re:Either trivial or bullshit by daniel_newby · · Score: 1

      Write simple code. Build complex behaviour from simple start points. Unless you're doing some serious mathematics (in which case it'll have an elegance of its own to those that comprehend the maths) then there's no real need for complicated code that is hard to understand.

      You seem to not understand that some people can (1) bang out a big pile of work that is complete but scattered, then (2) see through it to the relationships underneath, then (3) perform a symbolic reduction to reach a state of simplicity, much like simplifying a complicated algebraic equation.

      As a matter of course. On everything that falls into their hands. Often doing step #1 mentally.

      They will find it painful and frustrating if the organization forces them to plod along, laboriously making every step of the work explicit to the back seat driver. The work will also tend to be of lower quality because their mind is constantly interrupted. Therefore they will tend to flee to another organization.

      Which means that they will not be there to promote to system architects and other leaders. The organization will have to make do with people who have a proven lower ability for seeing the big picture and doing synthetic reasoning. Or the org will have to recruit leaders from outsiders who (1) don't know the business, and (2) who want to divorce themselves from hands-on work (because the chain gang approach would drive them crazy).

      Now there may indeed be people who are more productive with pair programming. Or with whatever other scheme tickles your fancy. Their existence does not imply that the technique is generally, or even frequently, productive. There is so much variation in human cognition, not to mention personality, that any business operation scheme claiming generality is automatically suspect. There Are No Silver Bullets.

    51. Re:Either trivial or bullshit by Have+Brain+Will+Rent · · Score: 1

      Don't you get it? Having two people working on one piece of code is fragmenting the task of one person into two tasks - one per person. And the tasks are now different. Don't let the optics fool you just because there might be one keyboard and it looks like they are working on one task - they aren't. The number of tasks and the number of pieces of code aren't the same thing. As a result the overheads described in MMM come into play.

      N programmers working as a team on one piece of code, N programmers having what appears to be N independent pieces of code to work on. N CPUs being brought to bear on a chess problem. They all have the same problem - the same overheads - and they all have the same reason for it taking more than T/N time to complete.

      As to your question, yes I have read it. I've also understood it and thought about the real lessons of MMM, not just the facile literal interpretation.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    52. Re:Either trivial or bullshit by Sneeka2 · · Score: 1

      Which circles back to my original point of trying to make two mediocres equal one good. This may work to some degree, but I'd argue that if a developer can't live up to this simple requirement, a mentor-type relationship or training, training, training may be a better thing to try.

      Maybe some people can derive their training from PP, but then they should transcend that stage rather sooner than later and be able to "write a block of code to the specs and bug free" alone.

      Either way, PP seems to me to be either the wrong solution for a problem or just a temporary crutch, but not any kind of end-all-be-all solution to everybody.

      --
      Bitten Apples are still better than dirty Windows...
    53. Re:Either trivial or bullshit by Sneeka2 · · Score: 1

      If the code hasn't been written yet then there's nothing to understand. Forgive me for wanting some professionalism around here, but try taking an engineering approach to things.

      I think it is you who should try some professional engineering. You don't understand your application before there's any code? You don't even have a vague idea of what you want to do? You just start gluing random code together and hope it compiles and does what you want?

      You either need to think about this yourself for a few minutes or you have problems that are a lot bigger than the topic at hand.

      --
      Bitten Apples are still better than dirty Windows...
    54. Re:Either trivial or bullshit by ClosedSource · · Score: 1

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

      That's like saying that sculptor must be a poor artist if he can't handle sculpting with a partner.

      Being able to handle pair programming is a good talent to have since you may be required to do it, but it's really about communication skills, not programming skills.

    55. Re:Either trivial or bullshit by Have+Brain+Will+Rent · · Score: 1

      What I would ask in this case is how they measured the productivity of individual programmers and where in the talent spectrum did these programmers lie?

      IOW are the gains of pair programming the same for pairs of programmers selected from the top 5% of ability as for programmers at the median level of ability? My guess would be that it doesn't look so good in the former case.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    56. Re:Either trivial or bullshit by Dash-o-Salt · · Score: 1

      This is why at my work place our pair programming stations have mirrored monitors (with two sets of keyboards and mice).

      There can certainly be some contention when both programmers try to do something simultaneously, but most of the time you simply trade off doing things.

      This prevents utter boredom from enveloping either developer. If one of us wants to do something, we just do it.

      Caveats include having the video card power necessary to drive a mirrored monitor setup.

    57. Re:Either trivial or bullshit by Keynan · · Score: 1

      Your doing it wrong.

      Pair programming is a skill that must be practiced on like any other. Though you have part of the puzzle. Forget the extreme def of use it all the time. Think about it critically since it probably wasn't explained to you properly in the first place. Agile is about producing high quality code on time and on budget but maybe lacking the features the customer doesn't really want/need anyway.

      Agile also shifts from hierarchical to team based so that if any one person quits or gets hit by a bus the project isn't suddenly dead.

      Too this end pair programming provides the ability to:
      1) Train juniors (as you rightly mentioned)
      2) Transfer knowledge (verbal documentation) amongst the entire team
      3) catch design/test (high level) problems early (ie not a missing semicolon)
      4) Enhance team corroboration. (Succeed as a team or fail as a team)

      Pairing is not about coding faster; it's about coding better, over the long term.

      Pair programming works fine. It's like a screw driver; stop using it on nails.

    58. Re:Either trivial or bullshit by Keynan · · Score: 1

      Been there...

      The truth is that every programmer who pairs realizes this. Pairing, like a muscle, need to be worked out regularly but not continuously till you get good at it. A few things to try:

      1) When off keyboard focus more on the big picture, so the person on keyboard can focus on the details.
      2) keep the sessions short if you can. Two one hour sessions a day is reasonable to start then a just for what your team works best with.
      3) Try ping pong pairing during long sessions. This is when you write a unit test. Then the other guy writes the code to pass the test and then another test. Then you write to pass the test. Just keep switching off so that you both stay involved and on task.

    59. 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
    60. Re:Either trivial or bullshit by AuMatar · · Score: 1

      There's other, better methods for doing all of the above, except maybe train juniors (I allowed that its a useful mechanism for that).

      Transferring knowledge- code reviews. Which allow people to read the code at their own speed, do any necessary research to understand it, involve more than 2 people, and allows for several back and forths discussing options. Also, documentation. And before you whine about no one reading docs, docs getting out of date, or not having time to write them- documenting is part of your god damn job. Find time to write and update it, ignore your manager if you have to. The job isn't done until the documentation is up to date and ready.

      Design/test problems- Have actual designs up front and design reviews. Really, it works wonders.

      Enhance team corroboration- yeah, pair programming doesn't do this. In fact ti seems to make team members hate each other, who really wants to spend 8 hours a day with someone looking over their shoulder

      --
      I still have more fans than freaks. WTF is wrong with you people?
    61. Re:Either trivial or bullshit by Keynan · · Score: 1

      Code Reviews are a decent tool. However, as you pointed out documentation is almost never read and never updated. Agile is pragmatic, we live in reality, why try and fight human nature when there is a better way of achieving the same goal. I will concede that documentation has its place in the form of an API but only if the code is published to third parties.

      Up front design also has its place: on short lived projects (around 1 - 2 months), and on projects where the customer wants the requirements in contract and signed off on (government work comes to mind). However, while upfront design is more efficient on large projects this is only true as long as the scope doesn't change. Furthermore, upfront design has the nasty habit of delivering things the customer doesn't find out he didn't want until after the project is completed; and things they should have asked for aren't there.

      Pair programming is a great way to enhance team corroboration. It is not meant to be done eight hours a day except in the most fundamentalist XP camps (see below post for details).

      So, what ever you think you've been exposed to, there is a wide range of Agile/Pair programming with a great deal of variation. Try not to be so closed minded; leave the ivory tower once and a while.

    62. Re:Either trivial or bullshit by AuMatar · · Score: 1

      Like I saidx- if you don't update and read documentation, you fail as a developer. It *DOES* get read, it *DOES* get used, and in a decent workplace it *DOES* get updated. And it works one hell of a lot better than pair programming at spreading knowledge. For one thing it uses more than 2 people.

      Up front design only on short lived 1-2 month projects? Dear god, the longer the project is the more important it is to have the design up front, because the cost of design mistakes are far higher.

      This is why agile is such a freaking joke. In addition to being almost a meaningless buzzword, its entire design philosophy is abotu throwing out everything learned over the past few decades, and doing seat of your pants programming, getting just enough working almost right to get the program out the door. Agile doesn't produce good code, it produces a framework of barely working hacks.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    63. Re:Either trivial or bullshit by Anonymous Coward · · Score: 0

      Clearly we're not going to agree. Its too bad, since you've obviously never worked in an agile shop and because that is the direction that the industry is taking, hell, even Microsoft and IBM are starting to go agile.

      Well, best of luck in the future, you'll need it.

    64. Re:Either trivial or bullshit by angel'o'sphere · · Score: 1

      For some stupid reason everyone on slashdot thinks he has to explain his divine thoughts to his mediocre pair.
      But in truth the mediocre pair is doing all the time nothing than repeating the thoughts his master thoughts. And all the time he is stumbeling over something he can not comprehend he is asking his master: what are you doing here. And then the master explains proudly: I do an X!!!

      And then the mediocre pair shuts up and continuos thinking.

      After a while he asks the same question again, probably thinking about the first one: What are you doing here? And again the Master tells the truth!

      This goes a while until the mediocre programmer asks: "WHY are you doing this????" And after quite a discussion where the master tries to talk down the mediocre pair programmer he realizes that his pair was right.

      The problem with guys like you is:
      You are so DUMB ... the only thing that counts is your EXPERIENCE you have no interest to look beyond your horizon.

      Good programmers don't need pair programming and only benefit marginally from pair programming.

      while pair programming is more efficient than a single solitary programmer, it is not as efficient as two programmers with two keyboards.

      What about bad programmers? If a typical set of programming skills is:
      ABCDEFGHIJKL

      Two bad programmers likely have skill sets like:

      1) ABC G I L
      2) AB DE G I L

      You see!!! both don't even cover all the skills needed for programming.

      A third programmer hopefully can add stuff like:
      3) FHIJKL

      So, if pairs mix and 1) is programming with 3) and later 2) is programming with 3) hopefully skills get exchanged and over all coding experience is increased. The product will/should be better and there should be more fun, less errors.


      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.

      I can understand you are in flow mode. No offense, I can really understand you. I only object/answer to your posting because I feel/hear the common mistrust against pair programming through you.

      However: the article was about communication!! About communication between the customer, his business needs and the organization realizing his business needs and coding his application.

      You sound as if you are not even able to communicate with a co-worker/programmer.

      You find it a problem to have an other coder/programmer at your side. You thing you have to explain code you write to him. You think you have to discuss a while versus a for loop!?!?! HELLLLLLOOOOO!!!!! Are you sure you are playing the same game here and you are not in a SF novel? You have damn problems to communicate with a coworker but you still believe you are realizing your customers needs?

      No offense, I have no trouble if you are a factor 10 developer ... then you might feel pissed to be dragged down by mere mortals during pair programming. However there are more things in live than programming. When I was a factor 0.3 programmer all factor 20 programmers around me took every time I asked for to help me, to educate me, to guide me, to discuss with me. Often enough I was at the point to understand something and asked them: hm, why do you write this there? And they answered: "oh, smart! Yeah, I made a mistake here, I ment that"

      No mortal makes no mistakes. And even if you only make a few ones, in pair programming mistakes often show up before you run your compiler. If you really think you perhaps implement 10 features per day, probbaly 200 lines of code per day. You likely have still 1 bug per 100 lines (in real world programming people have one bug per 10lines), during pair programming 1 of the 2 bugs might be spotted by your pair, so bottom line your pair is not very productive, but your productivity increase

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    65. Re:Either trivial or bullshit by Hognoxious · · Score: 1

      Having two people working on one piece of code is fragmenting the task of one person into two tasks - one per person.

      Not if they're working on it together.

      I've also understood it and thought about the real lessons of MMM, not just the facile literal interpretation.

      You mean you made something up that wasn't in there? What do you think of his opinions on unicorns?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    66. Re:Either trivial or bullshit by Have+Brain+Will+Rent · · Score: 1

      Really? You think they are doing exactly the same thing at the same instant all day long? Wow that must be interesting to see with only one keyboard and two guys. Hmmm, maybe one guy is typing while the other guy is verifying what the first guy is doing. I'm sorry you can't see that they are now doing two tasks, even if they are working together; either you get that or you don't. It seems clear that you don't.

      As for your last comments all I can say is it is too bad you are so gratuitous and so literal minded.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
  7. 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.

    1. Re:Engineers should run tech companies not MBAs by phantomfive · · Score: 1, Interesting

      The problem is, eventually all technology becomes a commodity. Open Source is a big driver on this. For an example, take word processing: there are tons of good word processors, some are better and some were better than Microsoft Word. A word processor isn't even worth money, you can get it free. Yet why is Microsoft Word the defacto standard? Because Microsoft has the sharpest business skills. Microsoft isn't at the top of the heap because they know technology, it's because they have good business people. That is their competitive advantage.

      For the general public, it is better if technology becomes a commodity, because then the only way the players can compete is based on price. If you are trying to make a profit, it sucks. This is what Apple is doing: they don't want to compete head to head with the PC world, they want to avoid becoming a commodity and avoid having to sell their stuff for as cheap as possible. The MBAs usually know tricks to manage this. Tech people usually don't. Thus tech only companies tend to go out of business after a while, and the ones that stay around have been taken over by MBAs.

      --
      Qxe4
    2. Re:Engineers should run tech companies not MBAs by Anonymous Coward · · Score: 0

      See: Sun Microsystems, DEC, etc.

    3. Re:Engineers should run tech companies not MBAs by Anonymous Coward · · Score: 0

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

      Ahem. Google is run by a bunch of PhDs in Compuer Science. Microsoft is run by a person with some law education (Bill Gates is a college drop out) and his pals.

    4. Re:Engineers should run tech companies not MBAs by Anonymous Coward · · Score: 0

      I work for what you would think of as the opposite of a tech company, but they seem to have finally recognized us as a business driver rather than a money sink.

      In the last 5 years we've decreased time-per-customer, increased order accuracy, introduced credit/debit/gift cards and made things easier for our retail managers.

      We sell hamburgers.

    5. Re:Engineers should run tech companies not MBAs by Anonymous Coward · · Score: 0

      Read this, then rethink your stance a bit. It's fine to START a company with just geeks, and it's great to allow geeks to decide where things go, but you need the business folks to handle the parts geeks can't (or more likely don't want to) deal with due to time constraints.

  8. 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.
    1. Re:One size doesn't fit all by Anonymous Coward · · Score: 0

      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.

      You mean Java and Big Design Upfront, right?

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

    1. Re:Partially right by Anonymous Coward · · Score: 0

      At the other end of the scale, I've worked on projects that failed because us coders were the only people with a clue. Analogy time...

      Don't bother with the foundations, the end user just wants a roof over their head. Start with the roof and then we can go back and complete the rest later.

      Sounds stupid and yet this is the kind of bullshit software development teams have to put up with. Then there's the vendor-whore and the buzzword-victim/fanboi; insisting you use the wrong tool for the job.

      Hey, I know you guys want to use a mechanical digger but I've got a great deal on plastic trowels. Buckets! Plastic buckets are the hotness, I read an article on buckets recently and I just happen to have some in my garage. We also need to bring the next milestone forward.

    2. Re:Partially right by Anonymous Coward · · Score: 0

      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.

      You've just described one of the biggest "problems" with desktop linux. Nobody wants to write code for idiots or work on boring projects; they would rather spend their time making mplayer play video in ASCII art.

    3. Re:Partially right by jedidiah · · Score: 1

      That's only a PR problem. The existence of an ascii-art version of
      mplayer is the perfect fodder for Lemming Trolls to point to and
      whine about while ignoring the useful features of mplayer that even
      Windows users exploit.

      At least desktop Linux might have an actual user involved in the
      development process. Features and new versions won't be driven
      by some marketing department hell bent on exploiting the user
      rather than empowering them.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    4. Re:Partially right by Anonymous Coward · · Score: 0

      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.

      I respectfully disagree. Coders are often willing to speak business and be more involved in a requirements process than they are given credit for. Unfortunately, when coders actually speak business they usually fall on deaf ears of stubborn managers, users who don't know what they want, and battered QA people.

      If you want us to replace business analysts, at least acknowledge our ideas if you aren't going to pay us more.

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

    2. Re:News? by Hognoxious · · Score: 1

      Actually I always thought that communication was the main problem between Hans and his wife.

      FTFY.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  11. 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.

  12. 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 Simon+(S2) · · Score: 1

      not for less than 300K/year

      Your ideas are intriguing to me and I wish to subscribe to your newsletter

      --
      I just don't trust anything that bleeds for five days and doesn't die.
    3. Re:Blame open source by Dragonslicer · · Score: 1, Insightful

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

      You mean my MCSE doesn't make me a skilled software engineer?

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

    5. Re:Blame open source by roguetrick · · Score: 1

      I'm too tired to go into a real sociological discussion about this, but those sorts of things tend to bring wages up but also ensures it costs more to enter into the profession and weeds out talented individuals who just don't have the capital.

      --
      -The world would be a better place if everyone had a hoverboard
    6. 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?

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

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

    9. Re:Blame open source by Anonymous Coward · · Score: 0

      Given that lawyers are staggeringly better than I am at retaining facts and synthesizing arguments from said facts - I'm not willing to call them stupider than I am. As they also make 2-5x what I'm making, I think it's damn foolish of me to do so...

      One can easily argue that I'm the twit as I work longer hours in worse conditions for less money.

    10. Re:Blame open source by Secret+Rabbit · · Score: 1

      So, you're a manager then, yes.

    11. Re:Blame open source by egork · · Score: 1

      I just had a fellow lawyer at my place, it is Saturday, and he had to spend half an hour talking to his client. He was not really happy to do it on Saturday but probably could not say no. My fellow coders, on the other hand, are not avaliable on their mobile even after 6pm as a rule.

      As a side note, I really liked an expalantion of a coder about what he does. He said, coders dream. The deeper they go into their dreams the better code they produce. And talking to all that people just makes them sleep bad, dream less and produce less good code.

      May be if you'd think of it a bit longer, you would agree to this view. And then you'll see, you have to have a lot of luck to sell your dreams for 300K.

    12. Re:Blame open source by Anonymous Coward · · Score: 0

      "emulate lawyers (as a rule less intelligent than programmers"

      Unfortunately for us coders, if you look at the recent stats on tested mental performance versus occupation, lawyers and doctors rank 2 and 3 respectively. Engineers came in 7th, so on average, your lawyer is going to be mentally slightly more agile.

      For basic education, your lawyer has:
      (1) undergrad degree in applied sciences
      (2) possibly a masters or Ph.d in same
      (3) achieved around a 150+ on the LSAT exam to get into a basic law school (putting them in the top half of their group)
      (4) a 3-4 year juris doctor degree (US) and
      (6) state bar exam

      Compare to the hurdle for programmers: (1) undergrad degree or self taught. So I'm not surprised.

    13. Re:Blame open source by Tablizer · · Score: 1

      I agree, that was a poor comment. But I bet if you go to a lawyers' forum, you'll see them claim that they're smarter than software developers. It's comparing apples to oranges anyhow. Both require different kinds of knowledge and skills. And there are various levels of ability within each profession.

    14. Re:Blame open source by ciggieposeur · · Score: 1

      but also require real-world-like things to finalize or complete the cert (such as doing a project that was actually successful)

      A certification can't have "actually successful" as a criteria because success is not dependent on technical skill but rather luck of right-product-at-the-right-time. And in fact popular products are often technically crap -- would you want the "genius" behind MySpace to get certification but prevent it for the contractor(s) that made the Mars rover successful?

      Real engineering certifications (i.e. Professional Engineering licenses) have a technical bar (degree in related discipline + EIT/FE exam) and a practicum bar (5+ years relevant industrial experience). A software engineering certification should be similar. However, setting that kind of bar would require legislative action to establish a binding certifying authority, and I don't see the modern practitioners of professional IT (including myself) accepting such oversight.

    15. Re:Blame open source by mysidia · · Score: 1

      I would call the mars rover a successful project. And there are various possible measures of success.

      Success is based on a lot of things including technical skill and most importantly: usable software.

      It's not really about luck, but about knowing what type of product would be useful, and delivering it properly.

      A software project doesn't need to be as popular as Windows, MySQL, or Java to be popular. I consider niche projects hardly anyone knows about (whether open source or not) like NEdit, Textmate, Zmud, Nano, Xchat,Lua,SWIG,.. to all be highly successful (your project can be a lot less succesful than that and still be certifiable-grade, if you meet a simple popularity test in the marketplace).

      Allowing just anyone who worked for 5 years in the industry would be a brute force approach. Not everyone who works a few years in a field is automatically competent in that field.

      The best developers can figure out what type of application needs to be developed and what else needs to be done in order to succeed.

      There's a luck element, just like there's a luck element in a multiple choice question tests (Which questions get selected to be on the test)

    16. Re:Blame open source by Anonymous Coward · · Score: 0

      It's not the fault of Open Source, but it is our collective fault that we get treated as we do. That stubborn conservative/libertarian streak so many of us have that says "I don't want to have a union/professional association/professional license" stuff means that we get treated to the race to the bottom like so many other professions. Lawyers and doctors have it rigged so that they essentially police themselves, artificially control the supply of practicioners, and set themselves up as judge and jury of things that happen in their profession. Lawyers, of course, are slightly better at this than doctors, many of whom actually seem to want to help people, and thus get taken advantage of by insurance companies and the like. Lawyers (EFF and the like excepted, of course) don't seem to want to help anybody but themselves. If a doctor messes up, you might actually get him or her before a judge and jury, but when lawyers mess up it seems to be the various bar associations that handle it, and you know how well that goes for the victims of wrongdoing.

      Regardless, we're going to need to have regulation, and be in control of that regulation ourselves, in order to achieve what lawyers have. Regulation controlled by others is oppressive. True capitalism and true competition have never existed in most of the world--the name of the game is to limit the supply and tune the law to guarantee your own profits. Ideal? Hardly. Effective? Look around you.

    17. Re:Blame open source by ciggieposeur · · Score: 1

      If you want an objective certification, you need objective criteria. "mysidia calls project X successful" doesn't cut it. Market acceptance depends on luck, and usability is in the eye of the beholder.

      And 5+ years industry experience is more than "just working". I didn't mention it so maybe you didn't know, but for those five years one has to be mentored by other licensed engineers. For example, if you're hired by Dow Chemical and spend five years doing accounting, that won't cut it for a Chemical Engineering PE license. You'd need to do five years of actual project work such as process improvements (cost savings), operations support (solving mysteries), design, training, etc. You can't take the final PE exam until some other PE signs off that you are ready for it.

      For software, I can't see a practical way to objectively determine reasonable competency. I know where you're coming from with the point that just working in IT doesn't make you a decent programmer. But then I'm not sure enough people can agree on what DOES make a good programmer. We all know that novice programmers can make some truly awful code, but then again one can have greatly superior code-fu and still be a net drain on a development team if no one else can keep up with them. Yet we don't want to grant professional licenses to the mediocre middle.

      Personally, I see programming as little more than refined arithmetic. It's a skill that everyone should have, right next to reading and writing. Future schools could call it the 4 R's if they want (Reading, wRiting, aRithmetic, pRogramming). How do we certify high-quality arithmeticians? Or quality readers or writers?

    18. Re:Blame open source by Gavagai80 · · Score: 1

      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.

      Hire those people for the marketing department. A great developer without marketing skills will never meet that target.

      --
      This space intentionally left blank
    19. Re:Blame open source by anarche · · Score: 1

      What software engineers need to do is form a new company, that only hires the best; creates excellent software (driving up revenue - and yes, this involves a business analyst to help with requirements); and leaves the mediocre coders to their competition.

      --
      Wait! Whats a sig?
    20. Re:Blame open source by Stiletto · · Score: 1

      For software engineering, I'd be in favor of following the successful medical model: Schooling, Internship, Residency in multiple specialties, passage of a standardized exam, and certification by a non-profit board.

      I'd stop short of legally requiring the above process, because generally, nobody dies if you write bad software. But if that kind of certification practice became common, having the legal requirement wouldn't matter because no company in their right mind would hire an un-certified engineer.

    21. Re:Blame open source by cyber-vandal · · Score: 1

      That was my first reaction as well. Every single one of the people I worked with in IT would be excluded from that despite some of them being superbly talented and hard-working.

    22. Re:Blame open source by angel'o'sphere · · Score: 1


      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.

      The very talented would always fail such exames.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  13. Strange urges by Dyinobal · · Score: 1

    Reading this article I suddenly have the urge to watch Steve Balmer's Developer rap.

  14. 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.
  15. 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
    1. Re:This has been happening since the late-1980's by EsbenMoseHansen · · Score: 1

      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.

      That is far too many levels. Cut out the software/hardware architect, they are pretty useless with a skilled force anyway. Then have a group that includes strong people skills, strong architectural skills, good system programming, good organization skills and make sure everyone except perhaps one or two is a strong programmer. Then have everyone code (perhaps only a few hours each week for 1-2 people), everyone help out with customer interaction and Bob's your uncle ;) Of course, budget and such needs to be worked out at least to some degree beforehand, and perhaps someone external should be able to pull the plug.

      Of course, that does require a team of independent, passionate and good people. But seriously, I don't think it pays to have any other kind on your team.

      Disclaimer: This home-brewn claims to be 5.5% alcohol, but I get the feeling that I measured it wrongly, so what I write might make no sense ;)

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    2. Re:This has been happening since the late-1980's by mikael · · Score: 1

      That is far too many levels. Cut out the software/hardware architect, they are pretty useless with a skilled force anyway.

      That was with an embedded systems project with a medium sized company - employing a number of people from a hardware board designer working with CPU's, network controller chips device a device driver programmer, one team leader, a project manager and a couple of software engineers. Core library staff included architects and a director.

      With software houses like game companies, the smallest will just have three staff; graphics programmer, artist-animator, level-editor /audio programmer.

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

    1. Re:In defense of business analysts... by Burnhard · · Score: 1

      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.

      Well that's where communication comes in. It's easier in small teams, where the people in contact with the customers are easy to reach when a subtle choice-point comes up during development. Larger companies tend to be more beaureacratic in this respect, with a greater distance between those making the decisions and the actual developers. When this happens the way the developer visualises the software is critical. If you're parcelling up development into little pieces and giving it to people to code up, those people have no concept of the whole and therefore are incapable of making intelligence choices about how best to proceed.

      In my view and from my experience, it's critical that each developer can see the whole project and his part in it. It's why many seemingly simple software projects, when out-sourced, end up costing millions of dollars over budget and are often delivered late.

    2. Re:In defense of business analysts... by Skadet · · Score: 1

      I'm one of the core engineers for a web shop and this is what I (along with the team I'm with for whatever project I'm on) do basically every day. Maybe it's because we're a small shop (in the grand scheme... we're one of the largest for our niche) or because the projects are small (usually 10 coders), but this is a skill that my boss drilled into me from my first day on the job... it's the difference between an engineer and a consultant. I don't think you can reasonably expect most engineers to be both "in it" and "on it", which is the perspective shift needed to do this kind of analysis effectively. Many can, but most can't. That's ok, just make sure to hang on tight to the ones who can! *ahem*

  17. 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 Ironpoint · · Score: 1

      So I wonder sometimes where this persistent stereotype of the "techie" comes from.

      Labor competition. When a tech worker or manager feels threatened and wants to belittle a coworker's skills they start on about the coworker's 'communications skills' and so forth. In reality they are trying to paint themselves in a relatively brighter light, but are going about it in a wrong way.

    3. 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
    4. Re:Where are they going to find these managers? by Daniel+Dvorkin · · Score: 1

      So I wonder sometimes where this persistent stereotype of the "techie" comes from.

      To be fair, there are a lot of techies who kind of aggressively live down to the stereotype. I always want to tell them, "You know, it's okay to shower regularly and get some exercise and subsist on something other than Fritos and Mountain Dew. Nobody's going to take away your geek membership card. You'll still be smart!" But for the most part, the stereotype is imposed by people who have no useful skills whatsoever, technical or otherwise.

      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.

      Those skills aren't necessarily easy, but the contempt which many programmers display for people who brag about them is based on the absurdity of the idea that an MBA or the like confers those skills, which the evidence clearly shows isn't true. If you've spent the last several years of your life studying computer science, you're not necessarily going to be a good manager or salesman -- but you have just as good a shot at it as the guy who's spent an equal number years in b-school, and additionally you learned something useful, while he didn't. Or to put it more simply: put an MBA in a programmer's job for a day, and the programmer in the MBA's job, and which one do you think will figure out the new job faster?

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    5. Re:Where are they going to find these managers? by egork · · Score: 1

      I believe, this is a function of a corporate structure. Average managers interact to average coders and average HR decide whom to hire or fire. To put it oversimplified: Cool managers and cool coders are entrepreneurs or consultants.
      The art of an enterprise is how to manage 10000 employees. One can not hire so many cool coders, but a big number is important to reach a quasi-monopoly, and that's where the real money are.

    6. Re:Where are they going to find these managers? by Anonymous Coward · · Score: 0

      The media are run by people who failed basic science

      There is no such thing as the media.

    7. Re:Where are they going to find these managers? by Billly+Gates · · Score: 1

      MBAs were orginally created for engineers who did not understand business who wanted to manage other engineers.

      Hiring former programmers who have degrees in business or have MBA's would be my bet. Also perhaps an MBA is not needed more than a solid track record of a true geek rather than a technologist who just happened to get his or her MBA and has not written much code besides a hello world app in VB for college.

    8. Re:Where are they going to find these managers? by Eli+Gottlieb · · Score: 1

      OH MY DEAR GOD I had no idea that Baron Harkonnen works in IT.

  18. Bear economy by Dosha · · Score: 1

    communication skills, not coding skills, are a developer's greatest asset in a bear economy

    Actually, the greatest asset is the ability to claw trees to mark your territory and attract mates.

  19. This confirms my theory of human behavior by Pictish+Prince · · Score: 1

    There are 4 basic types of people in the world: Bean-counters, arm-wavers, geeks and outlaws. This piece was obviously written by an arm-waver.

    --
    Only his tendency toward a dazed stupor prevented him from screaming aloud.
    1. Re:This confirms my theory of human behavior by rubycodez · · Score: 1

      true, but each of those four types can be of either of two polarities, the creator or the parasite. For example, the parasite bean counter is your basic banking/megacorp cartel scumbug who has brought our economy to near ruin and taken away our real wealth with his paper pyramid scheme bullshit.

    2. Re:This confirms my theory of human behavior by zoips · · Score: 1

      Can I change professions? I'm tired of being a geek; I want to give outlaw a shot.

  20. 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.
    1. Re:Yeah, right by Anonymous Coward · · Score: 0

      What? Being at the mercy of one author or vendor is the the big problem with the closed-source model. Open source means you can pay or persuade anyone competent and get any changes you want, because nobody is exercising any authority to tell you no.

    2. Re:Yeah, right by Anonymous Coward · · Score: 0

      Yes indeed. Who wants to get back to those days when today you have all the joy of customers hearing "deadline" when you say "initial estimate".

    3. Re:Yeah, right by cyber-vandal · · Score: 1

      Funny I don't remember those bad old days and I worked in a variety of companies on a variety of horrible old systems.
      It wasn't the IT department who was to blame for this mess in most cases but the belief by clueless senior management that programming was a largely simple process where hugely complex systems could be written in a matter of weeks.
      If the IT department dared to object or tried to insist on a realistic deadline then shoddy 3rd party software would be bought at huge expense and the next 4 years would be spent trying to get it to work.

  21. 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?

    1. Re:I'm set.... by DeweyQ · · Score: 1

      I'm gonna need you to go ahead and send Mike Judge some money. Oh, and if you could go ahead and move your desk to the back, that'd be great.

  22. Coders vs Business Analysts by Baron_Yam · · Score: 1

    I'm nominally a coder. I know the application I'm extending VERY well, but I have only the vaguest idea what the users require. This leads to me working on areas where the application is inefficient, but often working on an item that should be at the bottom of the priority list.

    The solution is good communication with the users (I try) and explaining to management what I think needs to be done and why.

    I can't imagine that people who are experts in business needs, work flow, and applications all at the same time are common, especially as you get into larger projects. There is a reason these jobs are seperate.

  23. 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
    1. Re:Can't emulate open source by Anonymous Coward · · Score: 0

      Whoa for a second there I thought you wrote diet pizza. *shudder*

  24. Kick the people who do the actual work. by WoollyMittens · · Score: 1

    If managers are to be the nation's greatest asset, then we're all doomed. There will be nobody left without any technical skills. Sure you can outsource that work, but this causes a disastrous increase in the already epic trade deficit and the Asians are already finding out that they don't actually need the fat manager cats abroad at all. Only engineers and artists can create things of value. There rest, especially management, exists only to support the people that actually know how to make something.

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

    1. Re:The problem is the meritocracy by thaig · · Score: 1

      Mod up. It happens to us all - one can't be master of everything and the more time you put into one aspect the less good you become at another People should ideally change roles occasionally to remind themselves how things work from the other point of view.

      --
      This is all just my personal opinion.
  26. 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.
       

    1. Re:Well, yes. And? by Fulcrum+of+Evil · · Score: 1

      a) The high-level design is flawed in their eyes, but they never bothered to tell anybody when they were asked.

      As a coder, I find that I tend to not criticize a design because the people in charge didn't listen the last time. If I make a valid suggestion and it's just ignored, I won't spend as much time on critique the next time.

      b) The don't like one or two technical decisions. This demotivates them.

      Depends on the decision, I suppose. I can deal with a wart or two, but fundamental problems need to be addressed, or at least acknowledged.

      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 the design is shaky or incomplete and the PM isn't responsive, so I do something just to get moving. Progressive design addresses some of this by unearthing the shaky parts as part of the process and refine it in the next iteration.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    2. Re:Well, yes. And? by khchung · · Score: 1

      The high-level design is flawed in their eyes, but they never bothered to tell anybody when they were asked.

      I have been on both side of the fence, and I can tell you why, sometimes, I did the same.

      One reason is that sometimes, the person that did the high-level design (e.g. architect or technical lead) gets very defensive and angry when their design was criticized or questioned, especially when there are fatal flaws in the design. After some unfortunate soul got shouted down once or twice and the design unchanged, you learned that raising questions is useless and just made you some enemies.

      On the other side, I learned that to ask people to review or raise questions about your design, you have to first build up enough trust between you and other teammates, so that they know you really want their input and will really change the design if there is concern about it. You can do that by asking about some inconsequential stuff first, like the placement of files, etc, and show them you really use their input.

      Without such trust in place, asking for input from someone lower in hierarchy (i.e. the coders or the "grunts") will often not get you any response.

      --
      Oliver.
  27. Pointless? by readin · · Score: 1

    Will working Saturdays save me, or should I take the rest of the day off and enjoy the weather?

    --
    I often don't like the choices people make, but I like the fact that people make choices. That's why I'm a conservative.
  28. We still have coders? by buss_error · · Score: 1

    Hey, fifteen years ago it was supposed to be in five years computers wouldn't need code monkeys because they'd program themselves. Ten years ago it was Nural networks that were going to put coders out of work. Five years ago it was "eveyone will know how to code". Now it's elbonia putting us out of work. You ever work with an elbonian coder? Ever notice how everything you ask them to do comes out slightly (or not so slightly) wrong?

    Not that I care - I quit coding for a living years ago. Now I hold hands for a living. (Well, that's when it *seems* like - the life of a sys admin....)

    --
    Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves.
  29. Show me an example (no, a good example) by Thad+Zurich · · Score: 1

    If Limewire 5 is an example of "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", then they can shovel it.

  30. 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?

    1. Re:Our days are numbered. by Anonymous Coward · · Score: 0

      I'm not a number, I'm a free Saturday!

    2. Re:Our days are numbered. by Anne+Thwacks · · Score: 1
      today is 04/04/2009.

      Or, in most of the world, 2009/04/04.

      To be sure its a great idea that America needs more Chiefs and fewer Indians. Isn't the real problem: too many cowboys!

      --
      Sent from my ASR33 using ASCII
    3. Re:Our days are numbered. by Anonymous Coward · · Score: 0

      Actually it's 2009-04-04.

  31. Overseas by Anonymous Coward · · Score: 0

    There you have your biggest problem. Sending your work overseas will just set you up for an epic fail.

  32. Damn by Anonymous Coward · · Score: 0

    First thing I've thought when I saw the title was "Holy shit they have superior AI running on superior computer that can code". Damn

    1. Re:Damn by Anonymous Coward · · Score: 0

      they have inferior brown skins who work for cheap.

  33. CMS Systems by mmsimanga · · Score: 1

    I am doing a study trying to find the most cost effective method to develop small in house systems. I am leaning towards using an Open Source Software (OSS) Content Management System (CMS) type of architecture. Here is why:

    By nature OSS is modular; the core system is supplemented by third party modules. Through OSS methodology iterative refinements these modules soon become pretty nifty and are able to fill most usersâ(TM) requirements. Letâ(TM)s take Drupal for instance and some of the key modules:

    CCK - allows user to define different types of content. This is done through a user interface and content fields range from numbers to complex data matrix fields. There are also field to reference users and other nodes hence the ability to create relationships between content and users.

    Views - allows you to create views of the current content created using CCK. A view is a selection of the fields you would like to display. Filters can be applied on the fields and dynamic filters such as "Logged in user" are available.

    Panels - allow you to create custom content displays. This is similar to web applications that allow you to place different widgets in different locations. In this case the widgets can be views or content or other types of content.

    Workflow and Actions - allows you to define a workflow for each content type. Action is the action to be executed when an item reaches a workflow stage.

    So for example an application to store a list of employees will typically be structured thus:
      CCK - Employee
      Fields - Name->Text, DOB->Date, Manager->User Reference, Address->Address Field...
      Workflow - Start->
      Views - Employees by Manager, Employees I manage ....

    For a task list the structure will be thus:
      CCK - Task
      Fields - Requested By -> User Reference, Date Requested -> Date, Assigned -> User Reference
      Workflow - Assigned, UAT, Complete

    I would go on but I think Slashdotters are bright enough to catch to work out the rest

    Worthy modules bubble to the top and talented developers chip in and enhance these modules. The users provide testing.

    Off course there will always be situations when you will need to write some code but it should not be for every web system if using Drupal. Besides custom code requires too much maintenance.

    http://mahalasoft.co.za/ for a survey on Drupal

  34. Coders days are numbered... by bobbuck · · Score: 0

    So that's why they always start counting at zero!

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

  36. English influence goes beyond hackers by pingveno · · Score: 1

    I sometimes do a bit of gaming with a group of Thai students at my university. Thai is, of course, the dominate language, though they switch randomly between Thai and English. One amusing thing that I've noticed is how strongly English has influenced gamer culture in other languages. There's just something funny about hearing a stream of incomprehensible Thai with the occasional 'noob' or 'rematch!'

    Incidentally, I love fish fillets (French), have to fix glitches in my code (Yiddish), use wikis (Hawaiian), love quesadillas with salsa (Spanish), have family in Seattle (name of Native American chief), live near the Willamette River (Chinook), use Ubuntu Linux (Bantu), and regularly drink tea (Chinese).

    --
    "it's not about aptitude, it's the way you're viewed" - Galinda
  37. huh? by Hognoxious · · Score: 1

    'The idea that this structure can be sustainable, when the U.S. private sector shed three-quarters of a million jobs in March 2009 alone, is simple foolishness.'

    I don't see how the employment figures affect organisational structures and/or development methodologies.

    --
    Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  38. I can see it now by cjjjer · · Score: 1

    shifting decision-making power to the few developers with the deepest architectural understanding of, and closest interaction with, the code

    The Open Source Model

    Client: What are the business rules this action takes?
    Developer: RTFM!!!!

  39. oh no by nostradamus2009 · · Score: 1

    damn i took computer science as my major!!!

  40. Avalanche Process by Hairy1 · · Score: 1

    Step aside Waterfall, move over Extreme Programming, there is now a software development process that is popular as it is effective. Yes, Avalanche Development Process will be sure to bring your project to a conclusion quickly and effectively. Read on to learn about this new and upcoming development methodology.

    The Avalanche software development process occurs though several stages. In some ways this is similar to Waterfall, but more aggressive. Instead of a calming waterfall we want a Avalanche of productivity. Lets look at how it works.

    Project Initiation Phase

    In the initiation phase of a project your role as project manager is to secure the largest budget possible. Executive management will however be aiming to reduce your budget to the maximum extent possible, In fact if senior executives had their way you would probably be lucky to get some four by twos to make your own abacus.

    It is therefore necessary to be creative in your justifications for the huge budgets you will require. First you must exaggerate almost beyond credibility the benefits to the business of the project. One way to establish the benefit to the business is to perform a Return On Investment Analysis, or ROI. Some project managers spend significant effort doing research and analysis for a ROI. The Avalanche Process has streamlined this process by skipping the analysis and going directly to the conclusion.

    You can safely add your unsupported ROI conclusions in the form of an 'executive summary' to random pages from previous projects. No executive ever reads the detail of an ROI primarily because they already know you are a lying weasel. The senior management will then approve your project expecting open ended functionality with half the budget and half the projected schedule described in your project proposal. They do this knowing you have already accounted for this when you wrote the proposal.

    Click For More

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

    1. Re:Coders are Manual Laborers by Secret+Rabbit · · Score: 1

      You need to look up what the word manual means in the context you're *attempting* to apply it to.

      But, regarding the arrogance, etc, I'd rather say that it is the non-coder that has the issue with anyone smarter and/*or* more knowledgeable/skillful in any way, regardless if it has any applicability to there own specific job/tasks. Because, I've been attacked for being condescending/etc when *they* asked for the explanation and told me to explain it as simply as possible because they were clueless. I've also been attacked for just pointing out when someone was factually incorrect in a discussion.

      Point of fact, people, especially those that are intellectually challenged, especially when they are in management or "above" you, really *really* can't take it when they are wrong. And god forbid if someone points it out. Because, if the person pointing it out isn't brown nosing to the point where they are tickling the managers/etc throat, then they are just arrogant/etc and will be attacked.

      In other words, it's not really about communication. It's about the PERCEPTION of what the coder is saying rather than what (s)he is actually saying. And that PERCEPTION cannot be controlled by the coder. That is the problem of the non-coder and there own, likely, inferiority complex.

    2. Re:Coders are Manual Laborers by Whomp-Ass · · Score: 1

      The problem also occurs with surgeons, the 'manual-laborers' of the medical world.

      The problem with your analogy is that, often enough, the coder is the architect, the engineer, and the manual laborer, all-in-one.

  42. 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.
    1. Re:How to guarantee relevancy: by cyber-vandal · · Score: 1

      Until Hindus become too expensive for Cheapskate International Inc and they ship the work to China.

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

  44. Programmers vs Project Managers by lymond01 · · Score: 1

    I didn't read the article.

    At the university I work at, the number of true programmers compared to the number of project managers is about 1 to 5. There are a plethora of people who can talk all day about a solution needing a problem, the guiding policies, salaries, level of support. But surprisingly few who can churn out the code to make these projects reality. A constant complaint is the long wait for a desperately needed project, because all of the money is being spent on management and not on coding talent.

    That being said, I would put forth that except in rare cases, IT doesn't know enough about their company's day-to-day doings to be included at a high level of decision making. It's up to those managers to talk to the non-IT employees in depth about their needs, then pass on the flowcharts and coding principles to the programmers who then make it into music, sweet music.

    1. Re:Programmers vs Project Managers by pcxmac · · Score: 1

      That's what happens when you have to many people that favor people skills over productivity. I think the "free market" economic model is good at explaining the benefits of competition. Competition keeps things moving and people thinking. Equilibrium is a good thing. Firms should strive to keep their product and production as competitive as can be called practical.

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

    1. Re:Older then you think by sjames · · Score: 1

      Have you ever noticed how advocates of 'Agile' sound like cultists? Find something that seems to work even though you don't know why. Take each and every trivial aspect of it and hang a detailed new terminology on it to make the stunningly obvious sound like a revelation from god.

      Then adhere to 'the process' so slavishly that what you're doing bears no resemblance to what you originally observed (it can't possibly because the original team didn't have a 'process' beyond skilled intelligent people doing what needs doing when it needs doing and to hell with 'process'). When you finally get the sense that it just isn't working, find someone to blame. Argue endlessly about what 'the process' is and who is or is not doing 'it'.

      Whatever you do, don't admit that some things are like riding a bike. No matter how much detail you go into, you cannot proceduralize it to the point that a non bike rider can commit the instructions to memory and then hop on a bike and ride off like they've been riding for years.

      Creating software IS like riding a bike. You can't really do it until you practice and fall a few times. The more stubbornly you cling to 'the process', the longer it'll take to learn. The harder you think about how to program (as opposed to the program you're working on or even programming in general), the more you'll fail.

      The "Open source process" is not Agile. It is not eXtreme Programming. It's a loosely iterative process carried out by talented people doing what needs doing at the time (usually) and talking amongst themselves for inspiration and ideas. It is not taught in a classroom, it is an informal mentor/apprenticeship system. There's no exam and there's no certificate. I doubt very much that it can be managed procedurally from the outside.

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

  47. Re:You can't assign creativity ... esp. to develop by rugger · · Score: 1

    It could also be simply that people become better at spelling as they age.

    I know I am far better at spelling now then 12 years ago when I left high school.

  48. "Best" requires knowing the audience by benwaggoner · · Score: 1

    Another way of looking at the story of Word would be:

    The Word team was the best at delivering the kind of word processor people want to pay money for.

    Word, Excel, and PowerPoint are very good at the things that people who purchase software for big enterprises are willing to pay for. There's tons of features that may seem incredibly beside-the-point for the needs of a programmer. But programmers don't sign off on a lot of big purchase orders for word processing or office productivity software.

    As to your other point, I would say the tech companies that survive and thrive are the ones who pull off a successful synthesis of technology and business focus. And that definitely requires a rare leader who combines talent in both areas, or more commonly good collaboration between the technical and business focused staff.

    It's no healthier for the hackers to look down on the suits than for the suits to look down on the hackers. The most fun technical projects I've worked on are those where the technical folks have a real sense of how their efforts fund their own paychecks. Information flow and mutual respect are the keys here.

    1. Re:"Best" requires knowing the audience by ion.simon.c · · Score: 1

      Another way of looking at the story of Word would be:

      The Word team was the best at delivering the kind of word processor people want to pay money for.

      Another way of looking at the story of Word would be:

      MSFT Word has been in use for so long that none of the established players in the corporate world really wants to take a risk in evaluating the available alternatives. Whole businesses have developed processes and templates around MSFT Office products. They're unwilling to change. (Sometimes even when MSFT forces the change on them.)

    2. Re:"Best" requires knowing the audience by benwaggoner · · Score: 1

      It's a common programmer assumption that Word==".doc render/editor" and to not understand why Word isn't interchanageable with other seemingly functional .doc render/editors.

      But as you suggest, it's the processes more than anything else that are critical to why business perfer to pay for Office than use OpenOffice for free. The more likely a feature is something an OpenOffice advocate claims "no one would use" the more likely it's something of interest to the people not buying OpenOffice. And a big part of that is the collaboration and security features. Being able to flag and encrypt a document so that a screen shot can't be taken of it? Probably sounds like crazy talk to a programmer, but really important for anyone who ants to keep content confidential.

      And the whole revision markup collaboration workfow with SharePoint is huge and very broadly used. It's basically a SCM for business documents.

    3. Re:"Best" requires knowing the audience by ion.simon.c · · Score: 1

      ...so that a screen shot can't be taken of it?

      That *is* crazy talk. :) *pulls out his 4MP camera*

      And the whole revision markup collaboration workfow

      I've never used Sharepoint. I'd be willing to bet that a significant percentage of those using it would be happy with TSVN and its pre-packaged scripts for doing diffs between revisions of MSFT Office documents. (OTOH, I'm sure that there are some for whom it is genuinely indispensable.)

    4. Re:"Best" requires knowing the audience by benwaggoner · · Score: 1

      Sure, there's always an analog hole, but it raises the ante significantly for someone to do it.

      And bear in mind that places that are that highly focused on security, cameras are not allowed. People get frisked coming in/out, and even camera phones aren't allowed. So we're talking about a component of defense-in-depth.

      As for TSVN, that could certainly work fine for text-only documents, but I don't think it'd work well for design elements of a document, which can also be previewed. There's a lot of power in being able to get a print preview of differenet stages of the document, seeing what edits who made, toggling between markup view and final view, etcetera.

      There's an audience for whom TSVN would work, but that's not that audience we're taking about. And there's a lot of value in enabling people from multiple companies to be able to collaborate in the same way.

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

    1. Re:Matrix Layout by wrook · · Score: 1

      The thing is, coding is the easiest part of programming. "Making it work" is what a lot of people are interested in, but actually I find that's about 10% of the job. Finding out what you *actually* need to build (vs what you are building now) and writing it in a way that is understandable to the next programmer is the challenge. Flowchart "coding" doesn't help this at all. Programming languages are actually pretty good at representing what we want to say. I don't think this will change in my lifetime.

  50. 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 Anonymous Coward · · Score: 0

      Does documentation really cease to exist in agile development? I've found that regardless of the pace of development, many folks simply don't document their code, or do so poorly. That sort of problem (poor documentation) is an all-around problem some programmers have, I think. =)

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

    3. Re:You almost have it. by Keynan · · Score: 1

      As an agile practitioner and researcher, may I just say, that you sir, are talking out your ass!

    4. Re:You almost have it. by Anonymous Coward · · Score: 0

      I missed when I clicked. I was going to moderate you +1 insightful. I can't undo it now. Sorry.

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

  52. Re:Can't Tame the Exam (footnote) by Tablizer · · Score: 1

    legal practitioners are licensed before they perform certain activities, such as filing lawsuits.

    Actually, I don't know if that particular scenario is true. I apologize.
         

  53. 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
    1. Re:Rain Man coders by GNT · · Score: 1

      ONE ABSTRACTION LAYER. Singular not plural. With a large coder to manager ratio. I used to manage a dozen projects across some 20 programmers at one point. Hard? yes. Doable? Yes. Necessary? Yes. This white collar hoax nonsense drives me insane.

       

  54. There are 2 choices by mahadiga · · Score: 1

    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,'

    • translate business opportunity to code
    • translate business ambition to code
    --
    I'd like to buy homeland for our 10 million people. http://twitter.com/mahadiga
  55. 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.

  56. Heresy! by aoheno · · Score: 1

    Don't forget the VP (Exec, Senior, Junior, Associate) and Director layers!

    The management bunch would call what you say heresy because it reduces or eliminates the need for their services.

    Imagine that, a self-directed team reporting directly to the CTO. This is how OSS projects get run, by a small, subject-matter-expert team leading a large distributed one that does other things than work on COBOL (heh!) all the time.

    --
    Her lips were softer than a duck's bill, but her quacks ...
  57. If you treat your coders like generic resources by Maxo-Texas · · Score: 1

    then when there is a crisis, all you will have left is generic coders.

    Not much help with the problem is some obscure interaction between your three programming languages, two databases, and several other major packages include MQ, workflow, etc.

    Personally, I think the applications are written in too many languages to master these days.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  58. He is right by Billly+Gates · · Score: 1

    The worse I.T. performs the stronger the case to outsource as its now viewed as an entity that sucks up money and adds no value.

    What is the future? 15 years from now I see everything done via www.salesforce.com and Google Docs or similiar kinds of hosted apps in China and India.

    Servers are out and internet replacements are in. I.T. is a sinking ship. I hate to say this but its true. The cost savings for outsourcing to internet apps like salesforce are HUGE and where are the system administrators and programmers going to fit in? They don't. The hosted internet app houses will have them. You don't need architects designing your office buildings on staff do you? Rather you rent out.

    Once data is stored overseas it will create lock in making it impossible to leave.

    Time to learn more skills as computer techs and cisco engineers are going to be all that is left in about a decade when everyone switches.

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

  60. Been there. by Kingrames · · Score: 1

    I worked in a job where my programming skills didn't matter. I'd solve incredibly complex problems created by the incompetence of the boss.
    He didn't care! But if I updated the webpage, all was well in the world.

    I was fired days before the biggest crash of the stock market's history, not too long ago. It looked bad.
    But I did get a better job, and you can too, if you're in that situation. Don't keep yourself in a situation like that, or you'll be their scapegoat. Nobody benefits from that.

    --
    If you can read this, I forgot to post anonymously.
  61. +1 Insightative by Sneeka2 · · Score: 1

    We had to let one of the nicest guys ever go because the work we needed him to do went way over his head. We tried to find something else for him to do, but there simply wasn't anything that he could pull off with any quality in any realistic amount of time.

    Soft skills are all very well and in the end both soft and hard skill sets are necessary, but the know-WTF-you're-talking-about kind comes first.

    --
    Bitten Apples are still better than dirty Windows...
  62. Re:You can't assign creativity ... esp. to develop by Anonymous Coward · · Score: 1, Insightful

    I'll tell you what's chilling: a whole bunch of schools these days teach "whole-word reading". This turns English into Chinese.

    Instead of teaching the basic phonics, so that a student can "sound out" any word she/he has never seen before, this idea is that the student should learn to recognize a whole word as a gestalt. If you visit a primary school and see posters where there are words surrounded by outlines that emphasize their shape, you are in a whole-word school.

    If you don't know the phonics, learning one word doesn't help you learn another. It's just like Chinese, where you have to memorize all the words as pictures. (It's a pretty close analogy; the Chinese for "ice" contains the Chinese letter for "water", just like the word "therein" contains the word "there". But learning "there" doesn't help you learn "theatre".) It's actually harder to learn whole-word English than Chinese, because English can be written in capital letters, or italics; while Chinese letters are always written the same way.

    This disastrous idea came about because someone studied adults and found that most adults have learned to recognize words as gestalts. Why not, then, teach the young ones to do this? Just skip past that wasteful phonics thingy and go straight to the productive whole-word reading. But this isn't really the best for kids, as many studies have shown.

    Kids need to learn the phonics, to give them the tools to tackle words they have never seen before.

    Thank God I was taught phonics when I was young.

    Teach the kids whole word reading if you must -- AFTER they have learned their phonics. Young kids have sponges for brains and can learn more than one way. Just give them the phonics tools they need.

    http://www.halcyon.org/wholelan.html

  63. Badly educated coders... by blahplusplus · · Score: 1

    Someone said earlier: "Programmers are neither abstractly creative nor socially comfortable by default"

    I really have qualms with this. Software is not like other discplines. The real fact of the matter is most programmers are poor in math and computer science AND many programmers didn't have early hardware to tinker with.

    Andre lamothe was so frustrated by coders lack of understanding of hardware, math and algorithms he started his own site.

    http://www.xgamestation.com/index.php

    IMHO I would have killed for a site like this when I was younger, in the 'pre-internet' days when I was still in highschool. Personally our real problem is that kids are not guided where they need to be and everyone thinks they 'know' what a software engineer needs to know when they don't.

    It also doesn't help that many technically inclined kids are ostracized because they happen to be interested in sciency or electronicy things. Not to mention some coders surely need some social skills classes as well as weight loss classes (to boost their social skills confidence).

    Personally if I were running a business I would pay bonus's to coders that went to toastmasters, etc and improved their interpersonal communication skills. Businesses just have to start demanding and REWARDING this from their workforce if they want to see it. The problem is business's treat coders/programmers like unskilled laborers to be used and abused for the lowest wages possible. Is it any wonder that no one really wants to improve given the sorry situation in software development?

    The best coders I've ever met were tinkerers. They sat there and tinkered with shit for hours plugging away exploring their curiousity. They had an overwhelming desire to master their discipline, and many were also mathematically inclined.

    Electronics, math and coding have a lot in common, there are deep relationships between electronics, coding and math. The problem is you will not find most or all the skills to run a business well monolithically in one person, since the education system is set up so poorly.

  64. Documentation by Anonymous+Brave+Guy · · Score: 1

    I've found that regardless of the pace of development, many folks simply don't document their code, or do so poorly.

    That's true. It's an unfortunate consequence of the fact that a lot of development groups have never really stopped to consider what effective documentation actually is.

    I always find it odd that even though heavy, waterfall-model development processes have been well criticised today, a lot of places still view documentation as if each project must have a big, formal requirements spec, functional spec, design spec, various test specs, or whatever we choose to call the equivalent documents, all written in the proper order ahead of time, and with so much boilerplate that it takes more space than the useful content for smaller projects. If you look at the participants in the development process and their respective roles, the kinds of information that are actually useful to each participant, the people who can provide that information to their colleagues, and for how long each kind of information will remain relevant, then the waterfall-esque documentation chain looks about as anachronistic as the waterfall model itself.

    Moreover, the trendy shops that like to use terms like "Agile" are almost as bad: there seems to be this strange view that the way to avoid having all of that heavyweight documentation is to have little more than a roadmap, a bug tracker, a textbook example of how not to write coding standards, and a documentation intranet generated from source code comments. Hey, don't mock the auto-generated intranet, it never gets out of date! Of course it doesn't, because it typically contains no original content.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  65. Pair programming is a learned skill by Gorimek · · Score: 1

    Pair programming is hard. If you just put two random programmers in front of a computer, they will probably not work much magic.

    If you learn it from people who are good at it, it is an incredible productivity booster.

    1. Re:Pair programming is a learned skill by lie2me · · Score: 1

      and it's unfortunate many of us will have to pass on learning it...

      Whenever I usually have to program myself, there's rarely another person in the world who'd have similar understanding and knowledge of the subject. Let alone in the same company, and if so, solution would be handy already.

  66. 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.
  67. Let's keep things simple, people. by master_p · · Score: 1

    Business analysts should be different from software engineers which should be different from code monkeys. The business analyst communicates with the customer, helps them understand their needs and plans the high level functions. The software engineer takes the input from the business analyst and converts it to a high level description of code. A code monkey takes the high-level description of code and turns it into actual code. The quality department makes sure all the above work within company procedures and the result product is within specifications.

    The above model works for most cases. Small projects can have many roles fused into one roles, for economic purposes. But in general, it is not possible and even desirable to make people jump from one role they are comfortable with to another. The result is catastrophic.

    For example, I enjoy tremendously designing stuff, that's why I am a software engineer. I like to take decisions, and therefore I would not like it if I only was a code monkey. But I certainly hate all those pompous managers with their SUVs, expensive rollexes and suits, that 90% of their talk is about their image. I don't wish to hang out with those people, and although I have communication skills, I am not willing to spend my valuable time in being a hypocrite asshole. Therefore, I am not the right person to be a high-level manager. But I understand that when it comes to money, people activate all their instincts, and showing off plays a big role in persuading others to give you their money...

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

  69. Coders already know this. by 91degrees · · Score: 1

    I'm a coder. I sell myself on the programming languages I know and the technologies I've used because that's what the employers think they understand.

    If you want me to write a Java application I'll spend a few weeks learning the language and be reasonably competent. I'll need to explain what my code does and understand what people want the code to do.

    We understand that. Managers seem to be clueless.

  70. Underrated... by v(*_*)vvvv · · Score: 1

    that communication skills, not coding skills

    Most of the problems with large coding projects isn't communication. It is organization. And to think more people talking competent English will automatically help organize a large coding project, is missing the target.

    Communication isn't an asset, it is a requirement for anyone working with other people. But most people can communicate. Coding on the other hand, is not measurable by the same kind of spectrum for measuring communication. A competent coder can do the job of a 20 person team of average coders in half the time. A competent coder can do things others simply can't. They can also write simple, structurally sound code. Someone with broken English might still be able to communication, but in any commercial project, there is absolutely no room for broken code or broken coders.

    If you can find a competent coder that can also manage his own "code monkeys" to accelerate their work, then you have a true gem. Hire that person and pay them half your budget for the entire project. Make them work 70hr weeks until the project is done, and then give them a long vacation twice as long as your sales team reaps the profits.

  71. Yeah, Here's Why That's Wrong by Greyfox · · Score: 1
    The most important thing a business has is its processes -- the day-to-day things that a company does to make money. Having in-house support for that with people who can both be held accountable and who can build experience with your processes will always be more efficient overall than trying to tell some guy in India how your company does things. That is, unless you're willing to spend all the money you saved on their salaries to meet with them in person on a regular basis.

    Of course, most companies don't understand where they generate their value. Much like the overall economy the company has continued to make money in spite of their management, not because of it.

    Unfortunately the barrier to entry for newer and more efficient companies in any given product space is the lead time the established company has in product development, and the requirement that any newcomers understand the business well enough to do it significantly better than the established company.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

  72. Here we go again... by Anonymous Coward · · Score: 0

    All I could think of was the same tired old mantra that programmers need to forget about technical expertise and learn "the business".

    Computers don't execute "communications" and they don't execute "the business". They execute CODE. Someone, sooner or later has to produce that code. Whether the coder speaks "the business" or not isn't germane, providing someone somewhere can bridge the chasm between business requirements and actual executable software and procedures.

    I think there's a basic fallacy in the concept that the programmers are part of "the business". More correctly, programmers are in their OWN business - the IT business, and their employer is their customer. Part of good business is customer satisfaction, so it behooves IT to work work WITH the business. But IT is a very complex business in its own right, and expecting people who've invested a lot of time and effort in becoming IT experts to dilute their skills by being business experts as well doesn't sound efficient or productive to me.

    There is a place for someone who can bridge the gap between business and technical. In fact, there used to be a whole job category for it - the Systems Analyst.

    We're all so keen on self-service and eliminating redundancies these days, but face it. Most modern-day software is crap. Maybe there's a good business case for a few "unnecessary" intermediaries. Rather than degrade the product by attempting to ram a bunch of anti-social misfits into a social environment, maybe what we really need is to consider that anti-social misfits have their uses, too.

    1. Re:Here we go again... by Hognoxious · · Score: 1

      There is a place for someone who can bridge the gap between business and technical. In fact, there used to be a whole job category for it - the Systems Analyst.

      In the old days the majority of these were former senior programmers who'd picked up some knowledge of the business as they went along. Occasionally they were people from the business who had some technical knowledge, or at least had a talent for explaining things to the developers.

      Unfortunately it often provided an ideal hiding place for people know nothing about either side.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
  73. a lot of bullshit, saying what ? by unity100 · · Score: 1

    its titled 'coders your days are numbered', but boils down to saying totally the opposite.

    its evident that the article writer doesnt know jack shit about how outsourcing really works. most of the time client comes directly to overseas developer, saying 'i want this, make it happen'. its nothing like 'deliverables blabberables then grunt work is outsourced'. that may only hold regarding mega corporations. but then again what is their volume of outsourcing, compared to the total outsourcing ?

    come to terms with it. there is no outsourcing - internet is another nation by itself. and people get the work done by whomever they prefer. that mostly boils down to reliability + confidentiality + price.

    there is nothing barring american developers from adopting the same methods that are utilized by indian, and other overseas places successful in outsourcing. your only problem is your high cost of living. yet, i have been informed of a handful of individual developers who are able to outbid indians and still make a decent living.

  74. Article never says why..... by Anonymous Coward · · Score: 0

    Neil McAllister does not explain why companies would want to push the design down to the developer, he simply asserts that it is so. As a developer, architect and system engineer who believes he meets the criteria of a good communicator, I find my self in the job market again after being "resource actioned" (laid off) by IBM.

    Perhaps IBM is not a software house but what I see happening at that level is the dependence on system engineering (managing requirements, being able to trace features to requirements, understanding what the "customer" wants) means that the developer is not in demand the coder is. The system engineer (SE) converts customer requirements into application specifications that the coder implements. The coder need only understand the language of the specification. The coder need not be "on shore". The project manager, who manages the development schedule, should be with the coders.

    That leaves the SE as the communicator, designer, the "developer" in Mr. McAllister's article, as a travelling salesman. Travelling to customers, meeting them face to face to understand what they want, documenting, specifying and shipping the spec offshore to start the cycle again.

  75. Reroll by August_zero · · Score: 1

    So I should put that 18 in to charisma, and not Intelligence?

    --
    On Wall Street they say "buy low, sell high" On the pad we say, "buy high, sell high" Isn't that somehow better?
  76. Of course my days are numbered! by Anonymous Coward · · Score: 0

    I number everything. Don't you? In relation to days it's called a calendar.

  77. What you want is the government's guns behind you by mariox19 · · Score: 1

    There is nothing stopping you, right now, from forming your own exclusive club -- or "professional association," if you prefer -- and marketing it as the only place to go to get qualified developers. My guess, however, is that you don't wish to stop there. Rather, you most likely would like to go further than free competition would allow and restrict competition through laws forbidding independent programmers from competing.

    Please keep your proposal for what amounts to a medieval guild to your fantasy role-playing game and leave the grown ups free to make up their own minds when it comes to whom to hire.

    --

    quiquid id est, timeo puellas et oscula dantes.

  78. whatever happened to Phil Yourdan? by peter303 · · Score: 1

    He wrote several boooks predicting the end of programming unless yo programmed jst like him

  79. Those that know have known this for years by m509272 · · Score: 1

    True story. I take over an app. Enough changes were required that a rewrite made more sense. Done. Single developer, albeit slightly high salary. All the users are happy. Management thinks lets try this new outsourcing thing to India for some new functionality, very focused, specific, uncomplicated effort. I figured (me knowing nothing about complex Word macros) I would probably take 2, maybe 3 weeks without much business people involvement. The "certified" MS developers (3-4) in India after 3 months, 10 bug-filled releases and dozens of hours of biz people involvement finally delivered something that more or less worked.

    Somehow this was considered a success. They decide lets hire a bunch of outsourced staff and replace me because they could get 3-4 people at what they paid me. Well after a year or so of unhappy clients, missed or buggy deliveries, etc, I get a call to undo the mess they made. I discover none of the new features they were supposed to deliver worked so all that time and money was simply thrown away. Fortunately since my initial departure I had been working for another division directly (not via IT) that recognized that I was a valuable resource not to be lost.

    Six years later, history repeats itself. Another IT-driven outsourcing "effort" has been in the works to consolidate 3 applications, now it's 2. I've just been informed they are over another year behind in developing phase 2 which would bring it up to 2.5 years behind. Phase 1 is still not acceptable. I'm also more or less being told not to further enhance my app, twiddle my thumbs. Can you just see the savings?

    I happily see some small, specialized groups efficiently delivering quality and sadly I see repeated efforts to outsource to people that have zero knowledge about the biz requirements which results in waste of time and money. Management needs to get it thru their thick heads that developing apps cannot be treated like making shirts. A seamstress is a seamstress is a seamstress. Maybe the stitching quality is a little different, not as straight, etc. It still functions as a shirt. An application is not that, if the code is crooked either the results are flawed or it simply doesn't function.

  80. Unsustainable model? by Anonymous Coward · · Score: 0

    Sounds right to me. Let's make it open source so NOBODY gets paid for coding anything! Corporate America should love that.

  81. Then why the damand for offshore developers? by walterbyrd · · Score: 1

    If communicating is so important for developers, then why are US companies breaking their necks to offshore all of their development jobs, or to replace US workers, with guest workers who barely speak English?

  82. People who think they are supercoders by ClosedSource · · Score: 1

    shouldn't mock those who believe they are too.

  83. Leave your compulsive behavior for your shrink by ClosedSource · · Score: 1

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

    So I guess on the slow days, you consider minor issues like program correctness.

    1. Re:Leave your compulsive behavior for your shrink by Gorobei · · Score: 1

      Once the functions do exactly what their names imply, the code is completely idiomatic, there is zero fat, and everything fits nicely on the page, program correctness becomes much easier to discuss.

      So easy, in fact, that poor programmers almost never get to the point of being able to deploy crap into production.

    2. Re:Leave your compulsive behavior for your shrink by ClosedSource · · Score: 1

      Is that the 40 x 25 page, the 80 x 25 page, oh that's right, for you it's the 70 x something page. What "fits nicely" today probably won't tomorrow.

      And what happens when you leave the company? Another guy comes in with a different set of "best" idioms and has everyone modify the code accordingly. I've seen it happen before.

      If you focus on real program correctness, you won't have time to be so anal.

    3. Re:Leave your compulsive behavior for your shrink by Gorobei · · Score: 1

      What fits on a page is really quite simple. Typesetters, etc, have decent rules of thumb about line length, font size, and easy of right-to-left tracking after hitting the end of a line. Somewhere around 140 characters is reasonable for a modern computer. 500 chars is not.

      What happens when I leave? Nothing. We have 100+ programmers with almost identical style: they enforce keeping the codebase clean and consistent. Law firms, engineering firms, architectural firms, etc, know how to do this. It's amazing some programming shops do not think this is a basic minimum when it comes to professional product.

      I don't even know what you mean by "program correctness." Formal methods? Nailing the spec? Passing the unittests? Doing what the users expect? Selling well? I do know that consistent, understandable, well-crafted code is required for anything more than throwaway projects.

      Yes, I'm anal, in the same way that all good professionals are anal.

    4. Re:Leave your compulsive behavior for your shrink by ClosedSource · · Score: 1

      "What fits on a page is really quite simple. Typesetters, etc, have decent rules of thumb about line length, font size, and easy of right-to-left tracking after hitting the end of a line. Somewhere around 140 characters is reasonable for a modern computer. 500 chars is not."

      You make my point. What fits on a page isn't constant over time.

      "What happens when I leave? Nothing. We have 100+ programmers with almost identical style: they enforce keeping the codebase clean and consistent"

      So you have no need to check for compliance, since everybody's style is identical, right? There are actually following a standard established by their employer. Following orders isn't the same as approving of it. In any company, there are those who have the power to change policy sometimes at lower levels, sometimes at higher levels.

      "I don't even know what you mean by "program correctness." Formal methods? Nailing the spec? Passing the unittests? Doing what the users expect? Selling well? I do know that consistent, understandable, well-crafted code is required for anything more than throwaway projects."

      Program correctness means as bug free as is reasonably possible (i.e. the code meets the spec).

    5. Re:Leave your compulsive behavior for your shrink by Gorobei · · Score: 1


      "What happens when I leave? Nothing. We have 100+ programmers with almost identical style: they enforce keeping the codebase clean and consistent"

      So you have no need to check for compliance, since everybody's style is identical, right? There are actually following a standard established by their employer. Following orders isn't the same as approving of it. In any company, there are those who have the power to change policy sometimes at lower levels, sometimes at higher levels.

      As was clearly explained in prior comments, we check all the time. You write your code, you announce you're ready for review, people look at it and comment. If you know what you're doing, you find a good reviewer. There are no orders and policy beyond the "write code so good everyone else loves it." You have a better idiom or style? Defend it well and we will adopt it (only happens 2% of the time though - your senior coworkers have written 1M lines of code each and seen the problems you are going to bring.)

      Simple, readable, concrete, idiomatic, with good unittests, is the starting point. If you feel the need to be a lone-genius code cowboy, go live in the wild with codecows: it's unlikely you have much to contribute in the high-value areas.

    6. Re:Leave your compulsive behavior for your shrink by ClosedSource · · Score: 1

      You missed my point. Why do you need to check if everybody's style is identical? In other words, everybody's style isn't identical and that's why you check.

      As for a better style, you're barking up the wrong tree. There's little correlation between any particular style and a successful product. The evidence is all the great applications that have been written over time with vastly different styles.

      Of course checking people's style is a great way to pass the hours and a hell of a lot easier than confirming that code is actually going to work.

    7. Re:Leave your compulsive behavior for your shrink by Gorobei · · Score: 1

      I don;t think I missed your point. You check to guide the newcomers towards the approved style. Just like law firms review the work of their associates.

      Better style is important. Perhaps we are talking about different environments here. I have informally SLAs of 10 minutes of so from problem report to a fix being deployed to production. If, while debugging, I run into code that is hard to understand because it violates the norms, the author gets woken up immediately and given the problem. if someone wants to screw around building code empires in a live system, they get the calls at 2am.

      As for passing the hours... most of my team works 12+ hours/day. They have 3 monitors each, and several compute farms available on demand. It isn't that hard to get a code review request over IM and review the work while your current stuff is running. I trust most code will "work," but crap code will slow down the next person dealing with the code. It's as simple as that.

      For example, yesterday I got to review something like:

      def foo( bar=None ): ...
      baz = bar and f(bar) ...
      if not bar or baz(a): ...

      Ugly code because the debugging person has to check how bar and baz are related in the conditional expression. So, "if baz and baz(a)" is the suggestion, and the nicer implementation gets resubmitted a few minutes later. No muss, no fuss: the codebase gets a little better and easier to understand.

    8. Re:Leave your compulsive behavior for your shrink by Gorobei · · Score: 1

      For additional fun, it's past 9pm and I'm now debugging an issue with some minor code that fails in user testing but somehow passed its unittests.

      Dig, dig, dig. What a surprise! The author built his own test framework rather than using the common one. Bugs in the code, and the tests lie about the bugs.

      Nice work author. Luckily he is no longer with the firm: if you can't do the simple stuff right, it's doubtful you'll be effective at the hard stuff.

    9. Re:Leave your compulsive behavior for your shrink by ClosedSource · · Score: 1

      Congratulations, you've discovered the value of independent testing. Of course, the important question is: Did his buggy code use the proper style?

  84. Management by Anonymous Coward · · Score: 0

    Two reasons for pair programming:
    1) Catching bugs, feedback
    2) Making it so the primary programmer (the one with the keyboard) can be replaced/fired.

  85. They don't know what they are doing. by krischik · · Score: 1

    The problem is that it is easy to count money and difficult to measure quality.

    "We going to save a xxx$." - that goes down like honey.

    "We are loosing a xx% quality." - so what.

  86. Agile is like a lot of "methodologies" in theory by CFD339 · · Score: 1

    the theory of Agile is all well and good, but bears little resemblance to its actual practice other than in surface level features.

    Real shops use the parts of it that justify what they want to do, and ignore the parts that don't.

    The shops I know that use it, look exactly as described. You sir, can research to your heart's content -- it doesn't produce better code.

    --
    The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
  87. Re:Agile is like a lot of "methodologies" in theor by Jane+Q.+Public · · Score: 1

    The record simply disagrees with you. While there may be many pretenders out there, a good Agile shop will probably be the best contractor you can find.

    As I have already stated several times: your mileage may vary. But overall Agile has been quite a success, and deservedly so.

  88. Things are relative by Anonymous Coward · · Score: 0

    I think there should be resource pool of programmers and designers and analysts and project leaders. Sure it helps if a manager understands the technology, but that means better communication to both directions. Giving too much responsibility to programmers is not a good approach either.

  89. Re:You can't assign creativity ... esp. to develop by Fulcrum+of+Evil · · Score: 1

    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.

    I've found that the ones who don't crack a sweat in church are often the biggest whores of them all. Difference being, they feel justified in their whoring. Applied to public speaking, you have to be comfortable in your whoring to speak in front of people, and toastmasters or any place where you can stand up and practice the art of the speech is a good idea.

    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.

    Of course he did, he's a philosopher. He also fantasized about dangling virgins, but I like my women lusty and alive.

    --
    "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  90. One more thing by ClosedSource · · Score: 1

    I'd listen to my senior coworkers but it's hard to find workers that have more than 25 years experience.