Slashdot Mirror


Motivating Your Co-Developers?

3flp asks: "We've heard all about those coding projects where 90% of the code is done by one person. Unfortunately, on my current project it's me :-(. It's a comms DSP project with a lot of C & some assembly. My team of 4 will hopefully produce about 20k lines of code. Now comes the problem: we just got to our first small integration stage (we do try to do them early & often), and it turns out the other guys have got nothing. No code. I want to ask Slashdotters, people who have the experience with small software projects, how would you go about it? How to bring other less experienced coders up to your level and beyond? Or at least how to make them suck less, and if they get stuck on something, to just come and bloody ask for help?" This is something almost every developer has had to deal with. For those of you who have experienced this, what did you do about it and how did things turn out?

"Deadlines are super-tight (what else is new)... but all 'my' parts are ready on time, and I enjoy what I'm doing. After about a month of design and two weeks of coding, I've got about 50% of my software features. The others definitely do understand the requirements and the design, because we had plenty of discussions. 'All right, lets get what you've got so far, we'll just try the interfaces, even if your code doesn't do anything much yet.' 'I haven't tried to compile it yet.' Then I looked at the little code they've produced, and it's a disaster (abhorent coding style, serious logical mistakes, etc). Obviously, these guys understand the 'domain' problem (I would think that's the hard part), but suck at coding (which is apparently the really hard part for them).

Hiring new people this late in the project won't work, as anyone who has read 'The Mythical Man Month' knows. On this project, I have a de-facto role of a software team leader. Before, I've always been just a coder, not responsible for others. So okay, I'm doing fine with my part of coding, but that's no use. If others don't catch up quickly, we'll have serious problems delivering on time. I need to stop hacking on 'my' part of code, and help elsewhere. They definitely do understand the requirements and the design, because we had plenty of discussions. 'All right, lets get what you've got so far, we'll just try the interfaces, even if your code doesn't do anything much yet.' 'I haven't tried to compile it yet.' Then I looked at the little code they've produced, and it's a disaster (abhorent coding style, serious logical mistakes, etc). Obviously, these guys understand the 'domain' problem (I would think that's the hard part), but suck at coding (which is apparently the really hard part for them).

Obviously, I need to look into some way of helping or motivating, but without putting them off. I could just take over someone else's module and code it in no time. But if anyone did that to me... well that's out of the question."

537 comments

  1. How to motivate your codevelopers: by johnthorensen · · Score: 5, Funny

    Block "http://www.slashdot.org" at the firewall :)

    -JT

    1. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 2, Funny

      Even better, redirect them to goatse.cx when they type in slashdot.org. That will stop them!

    2. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      HA HA HA HA HA HA!
      Sorry, just thought you should hear it, very funny!

    3. Re:How to motivate your codevelopers: by sulli · · Score: 1

      Or post a lot of trolls and get Subnet Banned.

      --

      sulli
      RTFJ.
    4. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0
      MOD PARENT UP!!

      click here!

    5. Re:How to motivate your codevelopers: by Polo · · Score: 4, Funny

      Or maybe redirect all slashdot requests to just this article... ;)

    6. Re:How to motivate your codevelopers: by purpledinoz · · Score: 1

      Fire them, they're dead weight. Why pay them to be dead weight? That's what interns are for.

    7. Re:How to motivate your codevelopers: by Anonvmous+Coward · · Score: 2

      "Even better, redirect them to goatse.cx when they type in slashdot.org. That will stop them!"

      Or they'll send that around to everybody else thinking it's funny.

    8. Re:How to motivate your codevelopers: by Knoxvill3 · · Score: 1

      Nice, but they can still goto www.slashdot.com, and not to mention the sites that port the headlines, or even those who are subscribed to git the juicy bits of news sent to their mailbox.

      I say if your out to motivate a developer, or even a would be, take away the soda machine for a couple of weeks. This goes for the coffee machine as well.

      --
      ======
      Talk sense to a fool and he calls you foolish. - Euripides
    9. Re:How to motivate your codevelopers: by scotch · · Score: 3, Funny
      Plus sex with interns is usually better and easier!!!

      --
      XML causes global warming.
    10. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      Terminiate them!

    11. Re:How to motivate your codevelopers: by jeffy124 · · Score: 1

      just think of all the curious newbies you just sent to that page!

      --
      The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
    12. Re:How to motivate your codevelopers: by garett_spencley · · Score: 2

      $ host www.slashdot.org
      www.slashdot.com is an alias for slashdot.com.
      slashdot.com has address 64.28.67.150

      $ host www.slashdot.org
      www.slashdot.org is an alias for slashdot.org.
      slashdot.org has address 64.28.67.150

      64.28.67.150 - there's what you want to block.

      If you also consider fm, thinkgeek, themes.org etc. to be "time wasting" then block the entire C class which OSDN uses for all those sites.

      Considering the size of OSDN and the number of sites that share the same class, I'm willing to bet that they own the whole class (only 256 IPs) so blocking the whole class will only block OSDN - not a big deal ;)

      --
      Garett

    13. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      XP Style... This seems fruitless but it will get them up to speed and then maybe after a few weeks let them on their own.

    14. Re:How to motivate your codevelopers: by oever · · Score: 2, Insightful

      They'll instantly will start spending all their time in circumventing the firewall block.

      Just block of the internet entirely.

      --
      DNA is the ultimate spaghetti code.
    15. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      you can't fix it till the next time out,
      relax - the bruises will heal quicker.

      meschman@engima.com

    16. Re:How to motivate your codevelopers: by HP+LoveJet · · Score: 2, Funny

      ...so they can start spending their time constructing a microwave relay connection on top of the building or in their office window.

      --
      spawn_of_yog_sothoth
    17. Re:How to motivate your codevelopers: by A55M0NKEY · · Score: 1
      The boss can't assign you new work because you might need to pull an all-nighter on something that other projects depend on so they can meet their deadlines, and neither he nor you can know what changes might be required ahead of time.

      If you had a competing project, that project's deadline might have to be missed if such an all-nighter were required or vise versa. And your boss knows as well as you do that it would take too long to familiarize someone else with your code enough to pull the all-nighter for you, and of course you are unable to understand other people's code because other people are bad programers, and don't even understand their own code, so how in hell could you hope to undestand their pitiful scribbles.

      Your boss keeps you as a 'free resource'.

      So you browse slashdot ( and other sites ) discretely and if the boss knows, he looks the other way.

      If your company sets the firewall too anally ( and I have worked at one place that gave NO INTERNET ACCESS TO DEVELOPERS. Stupid. The internet is every programmer's bookshelf. It's like giving your dev team a lobotomy. ) you just sit there bored as hell and twiddle your thumbs until you ( the best developer on the team who is put in charge of the most widely used and critical code because you are the only one working there with a clue about how to write a library of quality reusable code ) quit in frustration.

      --

      Eat at Joe's.

    18. Re:How to motivate your codevelopers: by glitch! · · Score: 1

      Even better, redirect them to goatse.cx when they type in slashdot.org. That will stop them!

      Or you can use the Ass-o-Tron. It's a real hoot!

      --
      A dingo ate my sig...
    19. Re:How to motivate your codevelopers: by Archfeld · · Score: 2

      Dude, the ASSoTRON ROCKS thanks :)

      --
      errr....umm...*whooosh* *whoosh* Is this thing on ?
    20. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0
      Cool,

      now I can see the real face of some corporate sites.

      this kicks arse.

    21. Re:How to motivate your codevelopers: by Flyster · · Score: 1

      One option would be to maximize the team's ROI (you have influence over the cost of the project and the competitive value of time-to-market, both of which leverage ROI). Things obviously are not working right; people are not holding on to their end of the bargain, you have dead weight just wasting your time and slowing TTM, these people should ideally not be a part of your next project, but you have no time to educate outsiders, right ? An extreme but workable solution would be to turn everyone into a contract worker; create a list of sub-projects and assign a monetary value to them; let everyone bid on a part. The system would ideally be set up so that people would be paid about just as much if they were to win the bids on the parts that they were originally hired to perform. Benefits: dead weight becomes free, you'll get to market faster, and your greater output will be rewarded. Also, make sure you get to qualify the new candidates next time, so that such solutions don't become necessary.

    22. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      Ugghhh. That would be me.
      I think I'm gonna puke.

    23. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      Sounds like you've hooked up with some guys off the net who thought it would be 'cool' to work on 'some stuff'. This sounds so familiar. A bunch of total newbies banding together to write the next Quake or something...but then realizing that you have to be able to write software.

      Did you not check the qualifications of these individuals...THOROUGHLY...before you signed them on? It doesn't seem like motivation is the issue, but rather their complete inability to write code.

      Next time, you should choose your collaborators more carefully. As to what to do now, explain to your collaborators that you were under the (incorrect) impression that they could code, and that you'll have to look for other developers to finish the job. Nothing personal, it's just business, plain and simple.

      Miles B. Dyson
      From the Future

    24. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      You're doomed start looking for another job unless you want to code the whole thing.

      Life is to short to be doing other peoples coding!

      CF

    25. Re:How to motivate your codevelopers: by bmckinle · · Score: 1

      This is a very good software engineering in practice question. Though I do not know your particular situation in detail, I would first suggest that you look for strengths in your coworkers rather than finding obvious weaknesses. A sure way to motivate a colleague is tell them how cool or interesting something is and explain this in such as a way that they see your comment is truly genuine. In short, you should get more involved with them. Avoid the closest programmer mentality. I have a lab full of folks who work for me and most of them have that mentality (I'm working on them). I try to engender a sense of discipline and constant communication through engineering tools and practices, such as those in applied CS; this keeps everyone focused on the problems and not on each other. For example, how many design patterns are known between you? Do you share the same understanding of them and the heuristics that accompany their application? SW engineering discipline requires a common articulation framework through which you and your colleagues can conduct meaningful and respectful debate, not pissing contests. Another thing you can try is to make facetious fun of your own mistakes without undermining your sense of competence. This lets your coworkers know that you?re human and not just the one outperforming them. This makes you more approachable. This may all be from left field but perhaps it can be on some help.

      --
      jbm
    26. Re:How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      Motivating staff, is not a job for a programmer. As a team leader, you should know a few things about team management.

      But the problem starts before coding takes place. Your HR Manager should find programmers within your company that have the skills to develop this application and not leave you in the mercy of amateurs.

      Furthermore, motivating personnel is another job for the HRM dep.

      That unwanted situation is your HR manager's problem. Not yours...

      Do your company has a HRM department?

    27. Re:How to motivate your codevelopers: by cinco · · Score: 1

      Most programming teams always have these superhero
      wannabe's that think they are gods gift to the company.

      I used to play that game also. I would work all
      hours and in my spare time showing up the other programmers. I would constantly critisize the rest of the team showing them up in front of the manager. Displaying their incommpetence and showing you can do a better job was soon replaced with disgust and anger.

      Then I saw the light - (after 10 years)

      I realized that I was the one.

      The one who by my "take charge" attitude gave
      them reason to let me do everything.

      I now know that there will ALWAYS be programmers
      who are learning the ropes and who for whatever reason need some reassurance and support to get
      their work done.
      Yes , I would argue that its not my job
      -- but neither is it to be the cheerleader ..

      Im now living a better life for it.

      Hope you can also.

      - ONCE_A_TYPE_A_ANAL_GONE_HAPPY

      --
      "The problem is that [the Internet] was devised by a bunch of hippie anarchists who didn't have a strong profit motive.
    28. Re: How to motivate your codevelopers: by Anonymous Coward · · Score: 0

      In our current projects, we started with a bunch of people who have decent Java experience, a few people who are Java pros, and some people who know little or no Java at all.

      In the beginning, we all met several times and agreed on some coding rules - styles, naming conventions, compilation and build settings.
      The book "The Elements of Java Style" was passed around as a coding style guide.

      The "pros" made a brief overview of the types of files we will be writing - beans, data access classes, and JSP pages, and what elements are required in each of those components, then we all were assigned 2-3 files of each type.

      One of our pros showed us - on the big screen - what the code should look like. They were typing in the code, expaining every step on the go, and answering questions.

      Then we went to our cubes and wrote our own code. In the beginning it was more of a "copy and paste", but as we understood more details, it became much easier.

      Then we had the files reviewed by "buddies" - we all were assinged a code buddy. Buddies reviewed the code and made comments, after which we all had to make adjustments to the code.

      We had several group code reviews, where everybody was seeing what everybody else was writing on the big screen, and everybody, including the beginners, made comments and corrections to everybody else's code. It was VERY useful, and it definitely brought the rookies a couple of levels up, whereas the pros got even more respect for passing on their knowledge of the subject.

      In the debugging stage, everybody helped everybody. Most common bugs were analysed and classified, and everyone got a message with a check list for the future projects saying what things we should pay special attention to. We also had a check list saying what things to look for, when reviewing someone else's code, etc...

      Needless to say, we were all using CVS.

      We had 2 "buildmeisters", who were reviewing the finallized code and building the project.

      Last but not least - the person who checked in a piece of code that wouldn't compile and break the build - owed beer (1/2 case) :)

      We ended up having unified clean code with minimum bugs and stylistic errors. Nobody is shy to ask a question if they have any.

      In general, I think it is a bad taste to never ask questions, being afraid of what others might think of you. It is the most common mistake - like lying on the interview - you think you look better, but it doesn't pay off when people are expecting you to do the things you cannot do.

      We had very frequent status meetings, when everybody knew what everyone else was doing at the moment, and all people were motivated to keep up with others. And if someone was behind, someone else was thrown on his task to help finish it faster.

  2. The perfect motivator by Tebriel · · Score: 2, Troll

    Beer. Lots of beer.

    --
    The Blaster Master Fighting for Truth, Justice, and Evil Pie since 1979
    1. Re:The perfect motivator by Kowgod · · Score: 2, Funny

      No no no no no. The perfect motivator is donuts, and the possibility of MORE donuts, to come.

      --
      -- Mesmer is the Dairy King Remove your panties to email me.
    2. Re:The perfect motivator by Budgreen · · Score: 3, Funny

      know where I can get a hammock?

      --
      The greatest right given is the right to be wrong...
    3. Re:The perfect motivator by Anonymous Coward · · Score: 2, Funny

      Well, there's The Hammock Hut, over on Third...

    4. Re:The perfect motivator by Anonymous+Cowrad · · Score: 2, Funny

      Homer: Sir, I need to know where I can get some business hammocks.
      Hank: Hammocks? My goodness, what an idea. Why didn't I think of that? Hammocks! Homer, there's four places. There's the Hammock Hut, that's on third.
      Homer: Uh-huh.
      Hank: There's Hammocks-R-Us, that's on third too. You got Put-Your-Butt-There?
      Homer: Mm-Hmm.
      Hank: That's on third. Swing Low, Sweet Chariot... Matter of fact, they're all in the same complex; it's the hammock complex on third.
      Homer: Oh, the hammock district.
      Hank: That's right.

      --

      --
      pants ahoy
    5. Re:The perfect motivator by haz-mat · · Score: 0

      I have to say the perfect motivator is in fact beer, good, dark, beer, mmm, non-domestic, mmm... *whipes drool*, however after consuming it all motivation other than to fornicate is destroyed. so unless you are building your business model around distributing good beer as a reward and having your employees fornicate you are probably out of luck.

    6. Re:The perfect motivator by SpatchMonkey · · Score: 1

      Why do so many people on this weblog have such a bizarre obsession with beer?

      At least twice a week there'll be a "mmm .. beer" post which inevitably gets modded up Funny or Overrated. And lots of similarly obsessed replies.

      And, even worse, half the time the poster exudes some kind of smug satisfaction, as if they've just turned eighteen and are suddenly allowed in the bar.

      Anyone else notice this?

    7. Re:The perfect motivator by Anonymous Coward · · Score: 0

      Guiness is GOOD

  3. Huh? by Anonymous Coward · · Score: 0

    I've never had to deal with this. Not once! Ummmm....

  4. Use XP by Anonymous Coward · · Score: 2, Insightful

    Extreme Programming works! www.extremeprogramming.org

    1. Re:Use XP by groundhog00 · · Score: 1, Funny

      send them all to XP Agile programming conference in chicago.. then when they come back.. fire their asses.

    2. Re:Use XP by ultima · · Score: 4, Interesting

      My suggestion as well; in particular because extreme programming encourages one practice that improves productivity. Check out the website here - and pay attention to the concept of "pair programming" where programmers work in a team. Putting a good programmer with a bad programmer for a moderate period of time will often raise the bad programmer's productivity (though obviously, it kills the good programmers productivity and maybe his attitude). So keep rotating the programmers around until things have become suitably efficient.

      The whole concept of XP is a bit awkward and works best in either a teacher/student model, or using expert programmers who know eachother well. Nowhere close to panacea.

      Not to mention the acronym sounds evil and M$-ish :)

    3. Re:Use XP by 680x0 · · Score: 3, Insightful
      One benefit to pair programming that I haven't seen mentioned in this discussion yet. In addition to letting the bad programmers learn from the good, the project lead can see first-hand whether the bad programmers are lazy (in which case, they'll code just fine with you looking over their shoulder), dumb (in which case they won't get any better no matter how much you kibitz), or just inexperienced (should improve to some degree depending on their partner).

      Try the pair programming for a trial period (maybe just a week). With a better idea of where the other programmers stand, the poster will be in a better situation to know what the long-term solution is:

      1. Dumb - Fire them
      2. Lazy - Motivate them by whatever method you think will work
      3. Inexperienced - Continue pair programming if it seems to help, or find another way to train them
    4. Re:Use XP by Znork · · Score: 2

      Actually, sometimes it can be good for a 'good' programmers productivity too. If the programmer in question has motivational problems and has trouble getting started or finishing stuff, then pair programming can solve that. Not when the difference between the two programmers is too large, since holding programming 101 will kill productivity, but when there's a reasonable gap and a potential to inspire and discuss.

      Of course, you could always threaten to fire their ass, but if it's fair programmers we're talking about, that threat might not be motivational after all, and could be quite counterproductive.

  5. Bummer by Anonymous Coward · · Score: 0

    Kinda sucks to be in that situation, you can't really make people even mediocre programmers in a short period of time, just come from experience.

  6. Have the slackers fired and replaced by Anonymous Coward · · Score: 0

    In this job climate, it shouldn't be all that hard.

    1. Re:Have the slackers fired and replaced by EnderWiggnz · · Score: 1

      but new developers have a 6 month time before they are productive.

      --
      ... hi bingo ...
    2. Re:Have the slackers fired and replaced by Axe · · Score: 2

      Not that it matters if they produce "zero" code after 6 month.
      In 90% of all programming projects, given a good design and management, less people == more results.

      --
      <^>_<(ô ô)>_<^>
  7. How about this for motivation? by Anonymous Coward · · Score: 0

    Code or you're fired!

    1. Re:How about this for motivation? by toofan · · Score: 1

      This is the best way to ensure that your group will be left with only bad programmers. All good programmers will evenutally leave (yes, even in this market!) and you will only be left with people who can't find another job. Also, this is terrible for their morale. The programmers will become reluctant to go the extra mile for the boss.

  8. Pay Them More by Anonymous Coward · · Score: 0

    Money works wonders. Or, at least the promise of money.

    1. Re:Pay Them More by toofan · · Score: 1

      No, most the good programmers I know don't work for money. Although they would expect a fair share of the rewards (whatever the rewards are). I would strongly suggest "Pay them fairly". This means, reasonably good pay for everyone (even the bad programmers) and good bonuses when good work gets done. Unfortunately in this market, stock options are becoming more of a problem.

  9. You wanna do all the work? by Anonymous Coward · · Score: 0, Troll

    I'm happy to let you, oh superior being.

    You want some help? Then we need to agree on some API's and a schedule.

    If your idea of a project is to just free associate and then get grumpy cause nobody else shares your 'vision' then you might as well right the whole thing and STFU.

    Otherwise, do some engineering and some planning which involves the rest of your 'team'.

    1. Re:You wanna do all the work? by Anonymous Coward · · Score: 1, Insightful

      Bullseye.

      Don't expect everybody (for that matter, anybody else) on the team to see things the same way you do. Your approach may not be the best for the project. It's amazing how fast people's priorities change from serving the project to salvaging their honor.

    2. Re:You wanna do all the work? by Anonymous Coward · · Score: 1, Insightful

      You would not be one of the other maligned coders on this project would you? The tone of your post sounds personal.

    3. Re:You wanna do all the work? by fortunatus · · Score: 1

      uh, it seems the fella musta done some API and schedule work with the other guys, because he mentions "getting together to try interfaces", and "my stuff is done on time".... implies both API and schedule, at least to some degree.

    4. Re:You wanna do all the work? by Anonymous Coward · · Score: 1, Insightful

      No, I'm not on the team. Actually, I'm a contractor. And as a contractor, I get stuck on lots of projects where some prima dona visionary has run off all the employees. Contractors are paid to tolerate assholes (at least I am) so I do my best to get along. For a few months anyway.

      I have worked on projects where the lead took every module I worked on, and replaced my name w/his as the module owner. I have worked on projects where the API changed nightly (the mighty lead could not be bothered w/normal working hours). I have worked on projects where we had to rerrange CVS weekly because for some reason the directory structure was a major issue.
      Obviously, I've worked on several dozen cancelled projects.

      Anyway, my bitch is that I'm tired of these mighty cybergod ubercoders. If everybody is a luzer except you, what does that really mean? Does it mean that your company only hires luzers? Or does it mean your not cut out to be lead? Being a competent coder should not be the only reason you are the lead.

      Another thing... How you gonna maintain this product? You gonna stay married to it for the rest of your life? At some point, other people have to help. Might as well start now, or you haven't done your company any favors.

    5. Re:You wanna do all the work? by bolthole · · Score: 2

      there are two kinds of uber-programmer:

      A) the kind that does everything 'THEIR WAY', and no-one can follow it, thus they are bad for a team

      B) The kind that is simply a better programmer than most people, and can get good things done faster.

      Sounds like you have had too much experience with the former, but the poster is one of the latter.

    6. Re:You wanna do all the work? by RazorJ_2000 · · Score: 1

      Sweet Jesus, was that one ever personal! You must be one of the project members.

      It sounds to me from the original post that API's and some type of schedule was done (at least in someone's mind).

      --
      pi=sigma{n:0-infinity}[(1/16)^n][(4/(8n+1))-(2/(8n +4))-(1/ (8n+5))-(1/(8n+6))]
    7. Re:You wanna do all the work? by Archfeld · · Score: 2

      If that were true they'd have code...maybe not what would work but at least some code. If they've not produced anything, and NOT come asking in 6 months then it is time to wish them luck in another field.

      --
      errr....umm...*whooosh* *whoosh* Is this thing on ?
  10. de-facto by Anonymous Coward · · Score: 0

    de-facto : another word for "scapegoat".
    guess who management is going to fire first ?
    yup. start handing out your resume. NOW. DO IT.

  11. hire me! by nekron-99 · · Score: 1

    hire me. i can code like a demon and i can understand the domain space.

    1. Re:hire me! by Anonymous Coward · · Score: 0

      Domain knowledge is critical in some scenarios, and DSP is a one-semester (at least) course at the college level. Usually, domain-specific hires are expected to pick up coding skills on-the-job, if they don't have them already, since the domain knowledge is much more valuable than any programming language expertise.

  12. Writing Code isn't the big deal by Anonymous Coward · · Score: 4, Insightful

    Do you know why you make code readable and add nice comments?

    Because MOST of the time of a project is dedicated to Maintainence and Debugging. Writing the code is the smallest part. As long as your team UNDERSTANDS the code written, you should be better off during the debugging phase. Just say "Hey I spent all my effort writing it, you guys need to debug more than me to balance it out!" ;-)

    1. Re:Writing Code isn't the big deal by Anonymous Coward · · Score: 0

      But how are people going to know how elite you are if you use things like braces or comments? They should have to spend days reading each function, the better to be in awe of your skillz when they finally understand.

    2. Re:Writing Code isn't the big deal by half-troll · · Score: 1

      I think this is one of the big advantages of XP's unit testing and pair programming. Sure, it can be over done, but the two in combination can really help people who 'get' the domain 'get' the spirit of the implementation. In all honesty, introducing unit testing and pair programming is not easy for someone who has been primarly a coder on other projects. It is, however, possibly easier than a) doing everything yourself b) wasting time and money on consultants (like me!). The next level to discuss is project management. Often good, realistic control over scope is part of regaining sanity in the project.

    3. Re:Writing Code isn't the big deal by OffTheRack · · Score: 1

      debug more than me

      Like you said, writing the original code is the smallest part. Let me add to that, sometimes that is also the easiest part.

      If these three zero coders did not contribute to the original code, I would be afraid to turn them lose on the defect reports. Better off hiring a brand new sharp person or two instead.

    4. Re:Writing Code isn't the big deal by Anonymous Coward · · Score: 0

      > Writing the code is the smallest part.

      That's a half truth.

      True, the major part of a system's TCO is not found in development, let alone writing code.

      There is a difference.

      TCO trouble usually comes from salary to cover the 3+ operations headcount that have to be maintained over the entire life of the system. Not that they have to do much, just backups, buzz beepers if it goes down, etc. Someone just has to be there on every shift.

      Business systems that require any great deal of internal code change were likely mis-designed from the outset. The core of a business simply does not change that much.

      Integrated applications, such as MS-Word and such, may be subject to substantial internal changes, as they morph their functionallity from version to version. But, then, writing code becomes a major portion of the activity, as one can deduce that each version is really a new TCO issue.

      > MOST of the time of a project is dedicated to Maintainence and Debugging.

      Um, MOST of my time is spent doing design, then coding, and debugging comes in a distant third.

      Yes, I deliver code with VERY few defects because I know plan I want -- before I do it.

      As far as maintenance programming goes, a well modularized system -- rather than a well commented one -- can afford programers the ability to add value without knowing or en-bugging the whole of the rest of the system.

    5. Re:Writing Code isn't the big deal by Anonymous Coward · · Score: 0

      yes, is right, all you need for is hire no retardeds and proper motivation, is secret to millions

  13. Bad programmers don't change. by sllort · · Score: 5, Insightful

    My experience is that while some new programmers are destined to become good programmers, experienced programmers who don't write code rarely improve. My advice is to make sure there is tons of visibility and documentation early as to who is actually doing the work - and make sure management has access to this visibility. From that point, it's the responsibility of management to do their job and manage the resources they have. Taking this role upon yourself is usually a mistake.

    1. Re:Bad programmers don't change. by groundhog00 · · Score: 0, Offtopic

      Shag a delic

    2. Re:Bad programmers don't change. by ergo98 · · Score: 4, Insightful

      Whoever the project manager is should have recognized different skill sets or motivations very early on and pursued actions to rectify it. While about 90% of the postings to this thread have been "Boohoo, I'm out of work so fire them all!", the reality is that no business sustains with a "fire them all" mentality (which is why those posts are all by people working for someone else), and the reality is that almost every talented employee has periods of low productivity, sometimes lasting for months. Again, these are just basics of human nature that one has to recognize and plan around.

      The reality is that people are motivated by varying things (and "fear of being fired" is the #1 worst motivator and is the cyclical spiral to oblivion for any organization), and a good project manager understands how to understand and utilize those motivations (and it very seldomly is $, by the way): The biggest ___KILLER___ to motivation (and it's a killer in the sense that people will write garbage code, if any at all, regardless of their skillz) is a project death march: A project that has no hope in hell of ever being finished, and is absolutely guaranteed to be killed. Any talented coder will have a brain gnawing at them screaming "THIS IS A WASTE OF TIME!", and the truth of the mater is that in the end, sitting around reading Slashdot all day, or dutifully spitting out lines of code, has the same net result: The project is canned and the code is deleted. There are many projects out there like this, pursued by managers with agendas and severe myopia: If your project is like this then good for you, but realize that it won't be long before you too spend your days wishing for 5pm to hit.

    3. Re:Bad programmers don't change. by msobkow · · Score: 5, Insightful
      After 15 years in the industry, I'd say there are three classes of software developers:
      1. The natural coder. This is the person with an intuitive grasp of technology, who sees the similarities in software architectures and reuses concepts across disparate technologies. Alas they are rare, maybe 1/10 qualify.
      2. The "steady Eddie" programmer. The vast majority of support staff, documenters, etc. are "steady Eddie" types. They do the job, they follow instructions and designs, but are not necessarily creative or intuitive about it. They're the people who form the corporate infrastructure, and about 7/10 fall in this category. They are much slower than the natural coder, but do get the job done.
      3. The clueless wannabe. Fortunately there aren't too many of these on projects I've worked on, but there are still more of them than natural coders -- I'd say about 2/10.

      The original poster's commentary indicates that it's a relatively young/naive developer who is either a natural coder or a steady Eddie with an overblown ego doing the writing. Either way, I am guessing that he is quick to grasp concepts and ideas, and gets easily frustrated with people who don't -- and it shows. Even if such people try to be understanding or are "open" to questions, the way they phrase their answers is often intimidating to their peers.

      You need to make sure people understand the project is truly a team effort, not a blame game, and encourage questions. If no one is asking questions, check with them daily to see how they are doing, but handle it as an offer to help out or clarify specs rather than just getting their status.

      Learn the skills of your people. Those who can't code are often good at other things -- debugging, screen layouts, build management, etc. Very few people are actually useless, they just aren't necessarily good at what has been assigned.

      When working with a team of juniors, start out by creating the outline of the code -- makefiles, interface headers, and stub code. Don't get into the details of your code -- make sure the overall project has been outlined. It helps juniors a lot to have a solid interface they are expected to implement, and it helps to modularize the system code.

      When people ask questions, don't give them the answer, even if you know. I'm serious! Guide them with questions that lead to the answer, but let them come up with the solution if at all possible. This helps them to learn how to think (your questions show what they should be asking and thinking about), and they gain confidence by coming up with solutions "by themselves."

      Ignore all the postings you've seen about beer, pizza parties, and threats of layoff or termination. You'll never succeed with a project if you are wasting your time and budget on frills and turning your staff into nervous wrecks.

      If you do encounter a truly useless clueless "developer" who just doesn't "get it", make sure they're working on something non-critical and that their access is restricted. If you have to keep them on the project, try to use them as testers or for "grunt work" like build management. Even the most clueless person can follow a checklist to test software or compile code, and sometimes they can actually become quite good at it. Believe it or not, you need people who will be happy doing the mindless work -- most of the work on a large project is mindless.

      Don't create your schedule on the assumption that everyone is going to code as fast as you. Be realistic, and then double the time allotted. Sad to say, I've often found that still doesn't allow enough time for some people.

      If you find anyone on the team playing the blame game, snuff that thread. If someone complains about weak specs, redirect the discussion to suggestions about how to improve the specs. If someone is blaming other people for being late with interfaces they "need", redirect to a discussion of modular programming and how the interfaces can be designed without a full implementation. Whatever you do, don't let people get away with blaming others for their own shortcomings.

      Perhaps most important, don't use the "big stick" of layoffs and termination to encourage people to work. If they are any good, you'll just scare them into finding another project, leaving you without resources. If they really are useless, no threats will improve their skills and you're going to turn the team into quivering, terrified blobs who would rather chew their own arms off than ask you for help or guidance.

      Failing all of the above, make sure that management is aware of delivery issues and potential schedule changes early on. Even if you think you can recover lost time, make sure management knows the time has been lost so that it isn't a surprise if things don't turn out as you hope. Ensure that you've got a feature prioritization so that you know which features to sacrifice if it's critical to get "something" out for a given date.

      Finally, keep smiling and keep it light. When all is said and done, it's just another project, not your life, and you'll only get ulcers by stressing excessively. More often than not things don't work out as you'd like, so learn how to manage them in the direction you need when they take a turn.

      Being an arrogant SOB myself, it took me years to learn to be more gentle with my coworkers. Rather than bluntly stating my disappointments, I find it's much better to provide them with the interface headers (potentially with stubs), and let them code from there.

      --
      I do not fail; I succeed at finding out what does not work.
    4. Re:Bad programmers don't change. by FlatEarther · · Score: 3, Funny
      make sure management has access to this visibility

      You've got it made. Management will surely know that you've been doing all the work - because right now you're working with your future management team. So try not to piss them off too much !

      The Earth is truly flat - it's only space that's curved

    5. Re:Bad programmers don't change. by 0WaitState · · Score: 5, Insightful

      Best Post! This guy gets it. Only thing I would add is the use of code reviews, first as a teaching tool (review the better coders' work first), then to improve the lesser coders quality after they've gotten accustomed to the review process.

      --

      Remain calm! All is well!
    6. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      Tough stuff, but it's the truth. If dealt with properly both the lead AND the juniors change, both for the positive to make a stronger team. In all honesty, I think it's actually a bigger/harder change for the lead than the juniors.

    7. Re:Bad programmers don't change. by Jord · · Score: 0

      Truly an amazing post. This really hits the nail on the head. Shame it can only be modded up so far!

    8. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      Bravo...thank you for a) letting me know I'm not alone and b) giving very sound advice for a professional programmer.

    9. Re:Bad programmers don't change. by juancn · · Score: 1

      [Standing Ovation] A really good post. But in response to the original question: You could also try reading something on XP (eXtreme Programming), that might help to flatten the learning curve of your developers. But as msobkow says (or implies), you'll have to make a huge effort in humility, and use all your people skills in order to make them feel comfortable.

    10. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      The Truth. I wish I had some mod points.

    11. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      I agree with 99% of what this guy is saying. Very sensible, thoughtful and insightful. The only gripe I have is that (speaking as a software tester), he classes software testing as grunt work. OK, so it's not "real" development (in some people's eyes), but good software testing is a creative discipline in its own right.

    12. Re:Bad programmers don't change. by irritating+environme · · Score: 1

      In my paltry 7 years, I've found that I wear all three hats given the situation: 1) How well conceived it is in the first place. Boneheaded management pipe dreams don't warrant repeated high-speed tackling of brick walls by me 2) What's in it for me? In order to deserve effort above the institutional guy, I need rewards. I need an accurate evaluation process (something I've never seen consistently in any company) Or I better be on a fat contract already. 3) Is it interesting? 4) How long? It's hard to maintain top effort and quality for longer than a few months without a little downtime. Although I am a little ADD.

      --


      Hey, I'm just your average shit and piss factory.
    13. Re:Bad programmers don't change. by 'The+'.$L3mm1ng · · Score: 1

      Mod him up! Mod him up!

      Especially Joel's article is REALLY good. Thx for the link!

    14. Re:Bad programmers don't change. by Dix · · Score: 2, Insightful

      2s are sometimes better than 1s : a hacker might produce 20K LOC in a month but it might be full of obscure runtime errors and ruin the company through the reputation they get for unreliability.

      If Steady Eddie obeys standards and writes all his testcases the 10K LOC he produces in a year might still be in some killer app making his employer money 10 years after they sack him for being slow.

    15. Re:Bad programmers don't change. by Ooblek · · Score: 2
      Isn't the purpose of extreme programming to have your two already-motivated developers motivate each other not to slack off? Wouldn't work too well when both aren't that motivated.

      My personal opinion is that you might as well just get one competent guy on the project instead of trying to form an XP team. You get the project done with the same lack of documentation and design for half the price. I think people who work well in an XP enviroment are the natural coders that that he was talking about. I'm all for skipping formal design, but only when the person is one of those natural coder types. They know enough to look at the big picture and make good decisions to take advantage of reusability and scalability. Most of the Steady Eddie types need to work it out on paper to be able to see their design flaws before they code themselves into a corner. None of this still solves the problem where your natural coder quits and leaves you no design docs to give to the Steady Eddies that need to pick up the pieces and continue on.

    16. Re:Bad programmers don't change. by garyevesson · · Score: 1

      All of the above is excellent advice. Focus on getting the team to meet the deadline. No matter how good a coder is, a person who "who works better by themselves" will *never* be more effective (read *valuable*) than the person who can make a team click.

    17. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      I also have 15+ years in this game. I strongly agree with almost everything you say. I to have used the approach of working with less experienced and/or taliented people by going through the process of clearly defining the interface with them then leaving them to implement it. One has to be very careful about how much oversight you give during implementation. Leaving an unexperienced developer to do it all is big mistake, as is execising so much oversight that you basicly do it all. One needs to make a case by case choice on how to handle this. What is clear is if you are not spending less time with an individual as time goes by, you are wasting your time. Change strategies or give up on the individual.

      What I don't agree with is how you classify people. One out of ten are the naturals. About 6 out of 10 can get by and might excel at a particular task (like builds of GUI layout). The clueless wannabe's make up 2 of 10. The last 10% are the dangerous clueless wannabes. These types fall into two categories: dangerous because they are so truely clueless, and dangerous because they hate the fact that they are clueless (and are not willing to do the work to not be clueless).

      A classic example of the first type is the SourceSafe admin at a previous job. One afternoon, the analyze program starting output hundreds of ciritial data corruption errors. This individual honestly didn't see this as a problem that needs to be fixed. Didn't even see it a something I should mention to anyone else. A couple weeks latter we had to shut all develoment work down for about a week because our source control was trashed beyond repair. Second type has a tendancy to spend a lot of time playing political and mind games with the people. They often take the approach of making themselve look better by finding ways of slowing down the non-clueless people. They also love to play the blame game. You need to get rid of these people as fast as you can. Every hour they do something approaching real work will cost two to three additional hours trying to fix and/or undo the mess they made.

    18. Re:Bad programmers don't change. by juancn · · Score: 1

      I agree with you that that's not the purpose of XP, I meant that the "coaching" practices used in XP might help to speed up the learning process and maybe improve the relationships between the programers (I wasn't proposing a to form an XP team in the middle of a project). Even in too-formal-for-my-taste projects (when you usually have a lot of Steady Eddies, and a few Natural Coders), that seems to work pretty well (if the "coach" can control his/her ego).
      I think that if you are a Natural Coder, you should try to help the Steady Eddies improve (even if that slows you down).

    19. Re:Bad programmers don't change. by Woko · · Score: 1
      Thanks for your post. I've found there are virtually no original problems, and your answers and concrete suggestions will be invaluable to myself and others.

      --
      ---
      Silence is consent.
    20. Re:Bad programmers don't change. by alx512 · · Score: 1

      Good post, I was also going to mention that sometimes the reason people go into programming is because they don't really like dealing with people that much and they aren't the most socially adept, especially when it comes to working with someone who is beyond them in ability. Also, sometimes those that are beyond them in ability come off as snapish and have attitudes. Even without realizing it they may sound put off when people ask questions.

      I have experienced both sides of this equation. Being both the one that doesn't like interacting with people much, and the one that wants to help but gets irritated when people start asking lots of questions. I'm getting better, I try to respond to people who are asking questions a lot nicer and I've found that I actually like helping people, because in a way it validates my own existence when I get to help other people understand something. That makes me happy and I try to focus on that rather than this person is asking too many stupid questions.

    21. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      I see four types of coders.

      Software Architects: OK coders who have seen a lot but mostly manage, document, and cut up assignments. Only jumping in at crunch time.

      Project Developers: Everything from "Walk on Water" to "Steady Eddie". Some guys are awesome writing good new code with little requirements, some guys can quickly pick up anyone's code and fix SCR's.

      Tool Guys: Not really the best coders, good leads/architects will assign them smallish discrete assignments to plug away at. On project assignments they wander a lot, feature creep, no focus. They want to write the "great american program" and win the respect of everyone.

      Testers: Not much current use as coders you have to keep explaining things. Better to have them working at the periphery of the project learning operational aspects.

      Everyone *can* change, unfortunately it requires PMs/Leads who are strong enough to tell developers where they are. And after hearing the unvarnished truth the developer needs to be able to check his ego, learn what he can to improve and move on (because its hard to work yourself out of the spot on the same project team).

    22. Re:Bad programmers don't change. by kosipov · · Score: 2, Funny

      Are you hiring?

    23. Re:Bad programmers don't change. by j3110 · · Score: 2

      Also keep in mind that most of the "steady eddies" are people that know how and understand the fundamentals of programming, but really have specialties elsewhere. My current project only needs two people because of this. I'm a natural coder, he's a natural at making GUI's. I can make GUI's, but it takes me forever. I can crank out 100 files and thousands of lines of codes in a week or so, but it takes me a week to make a damn form that doesn't suck so bad that I wouldn't use it :). The same goes for him. Just like he has to go behind me and clean my GUI up, I have to mop up his wierd cludges from hell.

      The second thought I have is that people generally work better in pairs than alone. The right match of people itself will induce enthusiasm about a project. Just as long as they actually do work instead of play quake all day. A countless number of times in this eternal (several year long project) my co-worker and I have had awesome conversiations about all the cool things we could do to make it better. Every time this occurs, I feel compelled to actually try some out.

      Don't forget that seriousness can kill a project just as fast as neglect. Most projects start with "wouldn't it be neat if we could ..." Don't let it turn into "we need X by Y!" When Y comes, if X is done, it will be a nightmare to administrate. If you need more time to meet a deadline, take more time or drop features. I can't stand deadline code! (Maybe that's why I work with a partner instead of for a company that imposes arbitrary deadlines because they made promises that can't be kept.) People need to understand that code is one part art, it comes to you in the strangest times in the strangest ways, and code is one part architect, if you rush it the end result will be an expensive POS that isn't worth the paper to print it on.

      If you want a project to get done quicker, the only sure way is to have a good modular design.

      While funny comments (I used a variable once that was only for deciding whether a csv returned by small webpage was mime'd to excel or text that I called "TransmoduficationFactor" for lack of a better name at the time. (for those of you who've played Redneck Rampage)) are distracting, sometimes it's better to break the tension of coding with the sparce comic comment to improve moral. (I'm not saying your project should be stand-up material.) Also, if your coder-buddies see something like that, they may begin to find you less intimidating and actually talk to you when they are having problems instead of sitting depressed staring into their CRT's getting eye-cancer. Or worse, the begin using the evolutionary programming model ("That didn't work, lets try this. That didn't work, lets try both at the same time. That didn't work, lets add 50 more lines that don't do anything except use synergey to produce the correct result 99% of the time." The greater that % is without being 100 the worse it is because you are less likely to catch it in testing. I learned this one in File Structures class. I turned in 2 pages consistantly. The other students' projects where 5-50 pgs).

      Just thought I would add my comments from my little experience in to this wonderful thread. :)

      --
      Karma Clown
    24. Re:Bad programmers don't change. by Goth+Biker+Babe · · Score: 1

      Very good post!

      Basically if you aren't team/project leader then it's not your responsibility. You might, like I have done, look out as to how your fellow coders are doing and tell the leader if you have concerns but you shouldn't be doing his/her job. If you miss deadlines then it's her problem. If it is your responsibility then that's a different matter and the previous post was very relevant.

      It sounds like some infrastructure is needed. Assuming the project is planned (it damn well should be) make sure the project plan shows each individuals responsibilities, deadlines, milestones etc. Put it where all can see so they know their responsibilities are and what they will be. People like know what they will be doing.

      Hold regular team meetings. Once a week at first. Talk about the project's relevance to the bigger picture. Get each member to talk about what they've been doing, any issues and concerns, what they would like to be doing. Be a facilitator ie. find out if there's anything your coders needs and help them get it where relevant.
      Update the project plan in light of any new information which has come from the team meeting.

      Build a team. Organise a night out in the very early stages of the project to get everyone together.

      Coding should take up a relatively small part of the project time. Ensure your coders know the projects specifications. Get them to design API, software layers, modules, state machines etc etc. Document the designs and peer review them. Get the structure of the software organised before any code is written.

      Coding in some respects should be mechanical. You shouldn't be doing all the thinking on the fly. The generalities of an algorithm should have already been designed before coding. Make sure code is written to a coding guideline. Peer review code. Lint it or the equivalent!

      If you have designed software then you know what each component should be doing. Have test software written to exercise it thoroughly. Formalise bug reporting and checkpointing.

      If you are a coder/project leader you will find a lot of your time is taken with leading the project. You may have produced X number of lines a day before. You wont any more. As you move further in to management you'll write less and less code! Make sure you allocate enough time for leading.

      A team is like a super tanker, a lot of momentum and difficult to steer. It is far easier to give it occasional prods to make sure it keeps on track than to try and drag it in the right direction.

    25. Re:Bad programmers don't change. by buster_dog · · Score: 1

      I have been a software engineer for 13 years. I like the diverse teams the best. There are too few blacks in programming as it is. The three black software engineers I have worked closely with have been outstanding. What planet are you on??

    26. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0
      In which case you clearly have a wannabe and not a natural coder.

      Of course, if no one can stop him, you'r in deep shit.

    27. Re:Bad programmers don't change. by crazzyrussian! · · Score: 1

      yes, i would like to blame you. i spend all time on slashdot reading your horseshit and work never done. please shut the fuck off

      --
      "Indeed, the ideal for a well-functioning democratic state is like the ideal for a gentleman's well-cut suit- it is not
    28. Re:Bad programmers don't change. by rgardler · · Score: 1

      Spot an advice! Everyone should read this post and the following small book, every moning before speaking with any member of the team. "The One Minute Manager" (ISBN 0-00-636753-4), it's not about programming but it is about managing people in the way msobkow describes above.

    29. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      I've been doing software development for 5 years. During that time some of the best developers I've worked with have been: White, Black, and Asian. During the same period of time some so the bad developers have been: White, Black, and Asian. My point is that people must be treated as individuals and not as some large homogeneous group. My guess is that you have had a bad experience with a small percentage of the black development community and decided that all black developer are bad. Not true. Using this type of logic one could conclude that all White American men are: serial killers, or anti-government terrorist bombers, or in my case bad developers. Again, not true. As I said before, people must be treated as individuals.

    30. Re:Bad programmers don't change. by TheObjectEngineer · · Score: 2, Insightful

      The only thing I would like to add to this post is about meetings, iterations, and testing. A lot can be said on this subject, I am going to try to make it brief and let you do the research. Small iterations will help motivate, I suggest one week. Everyweek You get together to see how things have gone, and talk about what you will do for next time. Make them have input into what they will get done for next time. Have a short daily meeting (about 15 minutes or less -- often called SCRUM meetings) to help identify what a person might be stuck on. If someone is stuck on a problem, identify it immediately, and get someone that can help (probably you) to work with them until it is solved. This removes risk as soon as it is found. You cannot do enough testing! You need to be focussing on building automatic tests, that the entire project can go through. For instance I use Junit for unit testing each object in the system. I use ant as a build script and can test each piece as it is complete. You implementation will vary, but "make" will work on all systems, and there is always a way to automate testing. Do it! Rebuild the code every day and what is broken can be fixed while it is fresh in the minds of those who broke it. You must communicate more and get them more involved in what will be delivered (and shorten the iteration cycle). Good Luck

    31. Re:Bad programmers don't change. by defile · · Score: 2

      You're in the wrong field. Programming involves a huge amount of people skills: Talking to the client, dealing with management, dealing with coworkers, discussing the project with coworkers, daily meetings, constant phone interruption, etc. It's maddening. I'm suprised if I get more than 10 lines of code written a day with all of the human bullshit involved.

      System administration is far more suited to people who hate other people. Everyone expects their sys admin to be an asshole. See BOfH.

    32. Re:Bad programmers don't change. by BobGregg · · Score: 2

      Personal thanks to the author of the above post. I'm currently facing a similar situation, with a new "developer" having been foisted upon our team with little warning. The suggestion for use as a tester is simply perfect: it gives familiarization with the target application, and a semblance of usefulness, with little to no chance of endangering the project itself.

    33. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      Best... post... ever!

    34. Re:Bad programmers don't change. by arb · · Score: 1

      I agree with you that that's not the purpose of XP, I meant that the "coaching" practices used in XP might help to speed up the learning process and maybe improve the relationships between the programers (I wasn't proposing a to form an XP team in the middle of a project). Even in too-formal-for-my-taste projects (when you usually have a lot of Steady Eddies, and a few Natural Coders), that seems to work pretty well (if the "coach" can control his/her ego).
      I think that if you are a Natural Coder, you should try to help the Steady Eddies improve (even if that slows you down).


      One tactic I have used in projects where I have been lead is to assign senior developers as mentors to the junior coders. Rather than working together on code a la pair programming, the mentors would regularly monitor the junior programmers by looking over their code regularly (on a daily basis sometimes) and asking if there were any questions. Not only did it help the junior guys learn more but it still let the senior developers write their own code at their own pace.

      One of the keys of leading a development team is trying to foster communication between members. Regular group coffee outings, a weekly team breakfast, assigning mentors, code reviews, etc all help. Sometimes locating an entire team in a single development lab (away from the rest of the office and all the distractions) is useful. Being in the same room not only makes communication easier, but it lets you keep a close eye on the performance of the team members.

    35. Re:Bad programmers don't change. by CharlieG · · Score: 2

      You sir, understand, and have been there!

      I'll second what you say - only I've always used a different set of terms (taken from the old Guilds)

      1)The Apprentice - These folks are either inexperienced, OR one of your "clueless wannabes" - some of these folks CAN move on to the later stages

      2)The Journeyman - These are your "steady Eddie" programmers, and actually get most of the job done. Your team NEEDS to have these in the majority. Some of your journeymen will be better than others. The BEST will just be just getting seasoned for the NEXT level

      3)The Master - These are the guys who have the vision, and can do everything needed. They usually do the really critical stuff, but end up a bunch of design, and telling the folks below them what NEEDS to be done. On most small to mid sized projects, you'll have at MOST one (really small projects might be headed by a journeyman, with a Master he can ask questions to)

      On LARGE projects you might have more than one master - One will be in charge, and one might be acting as a "super coder" - in fact, some Master coders don't LIKE to oversee a project, and specialize in the "super coder" role, sometimes in one small sub specialty - I know some guys who just do UI, and some who JUST wrtie code to talk to TWAIN devices. You don't bring the TWAIN guy on unless you need to talk to a TWAIN device, but if you do....

      The more I think about it, the more programming is like the old time guild structure that the Cathedral builders had. The problem is, the guilds had horrible problems with project failures until people started writing things down, and stopped hiding things - we then ended up with mechanical engineering and architects. This is the way I think the programming MUST go in the near future, but that's just my opinion

      --
      -- 73 de KG2V For the Children - RKBA! "You are what you do when it counts" - the Masso
    36. Re:Bad programmers don't change. by Salamander · · Score: 2

      I've often meditated about the guild parallel too. One aspect that particularly intrigues me is the idea of a guild house as a social/developmental/contact-making focus. Right now, people try to use their employer (or possibly their body shop) in that role, and it's a role in which those other-directed organizations are destined to fail.

      In a slightly different vein, I wrote an article a while ago about yet another way to reason about developer capabilities and inclinations. It's mostly orthogonal to the guild approach, or perhaps even irreconcilable with it, but it might be interesting nonetheless.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    37. Re:Bad programmers don't change. by Anonymous Coward · · Score: 0

      Man, I think you are totally right. I think now i can stop worring about how i suck lately :)

  14. The solution by Anonymous Coward · · Score: 0

    Easy - if they are doing nothing - get them fired.
    It's your ass or theirs in this economy.
    It is lazy-assed slackers like your workmates that caused this recession in the first place.
    Programmers already have a bad name in corporations and you are contributing to the problem by doing nothing about it.

    1. Re:The solution by xtremex · · Score: 1

      How do coders who produce no code get work, while other programmers who can program circles around their colleagues are out of work? Is your company trying to save a buck by hiring inexperienced people? When I first started coding, I never even applied to a job until I knew I could code a couple of decent apps by myself.(This is 10 years ago). My first programming job was me and another coder and a PHB standing over our shoulders (I kid you not), and then , at the end of the day, you had to lint your C code, and whoever had the most erros had to buy lunch the next day. My next gig, I asked if I code work at home. They said OK..I banged out so much code it was unreal. I found my ZONE. All my tools were there, my environment, the background music..everything... But people work under different environments. Just post a job posting and you'll have thousands of unemployed coders who are CAPABLE applying. I guarantee it.

      --
      If you're not a Liberal in your 20's, then you have no heart.If you're still a Liberal in your 30's you have no brain.
    2. Re:The solution by trog · · Score: 2
      How do coders who produce no code get work, while other programmers who can program circles around their colleagues are out of work?

      At the risk of sounding like an arrogant ass (or at least, as arrogant as the post I am replying to), it is generally not your technical/coding abilities that get you the work - it is your ability to work well with a team, to communicate. Soft people skills are far, far more important than technical skills.

      Why is this true? Because anyone who's worked as a professional programmer knows that your technical skills are constantly evolving - approaches to problems are constantly being refined. But if you cannot communicate effectively with other people, your technical ability doesn't matter. The key is to develop both sides of oneself - be an amazing programmer with amazing communication and people skills, and watch your career take off.

      90% of every job I have ever had involved taking requirements from non-technical people and translating that into technical reality.

    3. Re:The solution by sidster · · Score: 1
      This is very true.

      You can have some anti-social person in a team that would cause all sort of problems for the entire project just because of his work habbits and lack of communication skills.

      I have worked with such a person that as a coder he was a very capable and a very smart person. Just not very social and not very good at communications.

      He would go about doing his coding and modifying sources here and there and would unintentially break other pieces of software because he would change things that others' code relied on.

      Imagine db table schemas changing without you being warned. You make a build send it to QA and a slew of bug reports are written up because someone decided they could go ahead and changes things without consulting w/the rest of the group!

      That just there wasted at least a couple of days of work for everyone:

      • development staff has to figure out what went wrong and how to fix the problem.
      • QA wasted precious testing time with things that shouldn't have broke in the first place and didn't get to test things they should've since they were busy watching thigns fall apart
      Anyway, this type of a problem and the one the original post presents is also the fault of management and project leader(s).

      It is ultimately the responsibility of management and/or project leader to make sure things like this doesn't happen.

      One simple fix for the problem i outlined is to designate one single person as the "db keeper" and every db change needs to be reviewed and approved by this person. That way by selecting the best person with the db skills in charge of the db changes the project benefits in many ways:

      • the "db keeper" would make sure changes to tables are acceptable and that the tables remain normalized and no extra columns/tables are ever left in the db (a plus for performance)
      • assurance that things don't break every week. The "db keeper" would know which pieces of software rely on the changing bits of the db and the proper developers would be notified of the changes.
      • etc...
      you see where this is going.
      --
      --sidster
      Play lotto? Try http://www.alottofun.com/
  15. Ouch by sheepab · · Score: 1

    If you're doing 90% of the work, you better be getting 90% of the wages and/or profits. 90% is close to 100%, do it all yourself, and take the credit. Just keep in mind blame comes with that too if something goes wrong

    1. Re:Ouch by good-n-nappy · · Score: 2, Informative

      Ahh, the mythical 90%. We all know the saying:

      "The first 90% of the code accounts for the first 90% of development time. The remaining 10% of the code accounts for the other 90% of the development time."

      --
      Never underestimate the power of fiber.
  16. Don't motivate... by tomblackwell · · Score: 2, Insightful

    Have them replaced.

    There are other developers out there. Some of them actually produce code.

    1. Re:Don't motivate... by one9nine · · Score: 1, Interesting


      Thank you for saying it. I've been out of a job for over a year and one of the reasons for this is because firing someone because they are not productive has somehow become not P.C. I knew so many people at my last job that couldn't code for shit, would continuously miss deadlines, show up late and were impossible to work with yet my manager refused to fire them.

      One excuse I've heard is that if you don't have enough evidence that someone is not being productive and you fire them, they can sue you (WTF, I highly doubt that). Or sometimes I got the feeling that my manager didn't want to admit he made a mistake by hiring the person. Whatever the reason is, it seems like the only time people get fired is when upper management dumbasses run the company into the ground. Anyone else experience this?

    2. Re:Don't motivate... by Mario+B · · Score: 1

      As a team lead, did you clearly establish what each of of "your" coders has to do? i.e. clearly define what has to be done and who's doing what.

    3. Re:Don't motivate... by TeknoDragon · · Score: 3, Insightful

      I unfortunately have become jaded enough to agree. (heh, your initials aren't JP and you don't work for HP right?)

      If you have sufficient weight in the group, then, you need to take over the project, fire the other developers, and start interviewing.

      There may be an option...

      You do all or most of the thinking, they do all the monkey work. First-year comp-sci stuff... build them up slowly when they show insight or improvement. If they can do some of the assembly parts (IMO also monkey work) then have them do that.

      If they understand the project domain then make them write the test cases. Have them write the test divers. It's obvious these people need daily supervision, chat with them about what problems & challenges they're having on a daily basis. Review each other's code. Peer review is a great educational process.

      How's this? Fire the one that sucks the most. If you can hire a (one) ringer. If that doesn't work out or you can't find a really good programmer don't hire. If the other team members continue to not work out then let the others go and report that your project will be done by you... then ask for stock (or options) and early completion bonuses. ;->

    4. Re:Don't motivate... by R2.0 · · Score: 5, Funny

      "One excuse I've heard is that if you don't have enough evidence that someone is not being productive and you fire them, they can sue you (WTF, I highly doubt that). "

      Allow me to introduce you to the term "At Will" employment. That means that one is employed at the will of the employer. If the employer loses the wiil to employ someone, they can be let go with no reason whatsoever.

      HOWEVER...

      Thia only applies if one is male, white, under 40, has no disabilities that fall under the scope of the ADA, and (in some states) straight. If you are not one of these, you fall into a "protected class" and, although one can still be fired, the employer needs to document it REALLY well.

      --
      "As God is my witness, I thought turkeys could fly." A. Carlson
    5. Re:Don't motivate... by MadCow42 · · Score: 4, Funny

      Have a coding contest...

      1st place is a new Cadillac
      2nd place is a set of steak knives
      3rd place is "you're fired"...

      It's worked before...

      q:]

      MadCow.

      --
      I used to have a sig, but I set it free and it never came back.
    6. Re:Don't motivate... by Smedrick · · Score: 1

      Yeah, where I work it's almost impossible to get fired. HR makes sure the manager takes every possible step to try to improve the employee's production. If you screw up or don't do any work, your boss has to explain the problem to you and offer a step-by-step solution. And the only reason HR does this is to cover their collective ass in case of lawsuits.

      --
      "I strongly urge both the faint of heart and the faint of butt to leave the room at this time."
      - Strong Bad
    7. Re:Don't motivate... by Anonymous Coward · · Score: 0

      > Have them replaced.

      > There are other developers out there. Some of them actually produce code.

      Bad idea. Clueless moderators. Slashdot.

    8. Re:Don't motivate... by ces · · Score: 1

      This is why companies love layoffs. It lets you get rid of the deadwood with less threat of a lawsuit. Unfortunately good employees occasionally get kicked to the curb as well, due to political score settling or whole departments or teams getting cut.

      --
      Happy Fun Ball is for external use only.
    9. Re:Don't motivate... by ronfar · · Score: 2, Funny
      Burns: Now, as an added incentive, the second-to-last team to arrive at the cabin will receive an hilarious "world's first employee trophy."
      Homer: Hey, this sounds like fun!
      Burns: And the last team to arrive will be fired.
      Homer: [chuckles] [realizing] Uh-oh.

      And to show that I'm not playing favorites, both Smithers and I will be participating. Who knows? I might be the unlucky one who gets fired. [sotto voce] Not bloody likely.

      -- Simpsons' episode "Mountain of Madness" direct quote from Simpson's Archive )
      --
      All the creatures will die, And all the things will be broken. That's the law of samurai. (Jubai, 1605)
    10. Re:Don't motivate... by multimed · · Score: 1
      Not just CYA for HR but it's also a matter of justifying their existence. They like to show how important they are, and that no one else can do their job. Personally this has always been one of the most obnoxious things about corporate America to me--It's kinda like letting the Federal Government run everything imaginable (of course every time you blink they are taking more over)--but anyway, the truth is 95% of the decisions should be made by the person/people closest to the situation. If I'm a manager, accountable for a certain product (or process) no one else in the company, should be able to tell me how to get it done. HR should not be able to tell me who I can hire or fire because they don't know my job. My boss can give me suggestions and guidance, but if he/she want's to micromanage me, he must not think I am capable of doing the job and should fire me and find some one else who can.

      --
      Vote Quimby.
    11. Re:Don't motivate... by wormbin · · Score: 3, Insightful

      This firing only applies if one is male, white, under 40, has no disabilities that fall under the scope of the ADA, and (in some states) straight. If you are not one of these, you fall into a "protected class" and, although one can still be fired, the employer needs to document it REALLY well.

      It's kind of ironic that due to discrimination laws, for the first time in history, young white males actually are superior to all other groups in one way: they can be easily fired.

    12. Re:Don't motivate... by Anonymous Coward · · Score: 0

      if you get easily fired or not has little to do with race, sex, ..., but more to do with State laws and employer. every employer is a mini-country/state and they make a decision as to how to play the game. at least in my company, which is a very large, well known one, white males under 40 are the ones that get the highest salaries and better positions. thus, I don't see what the complaining is about. the same way that I can have more opportunities, the same way that I have more too loose. Overall, there's no complaining here. then again, if you live in a small, mid-western town, for example, whininig and complaining might seem to be the best solution. for all intents and purposes, move and stop acting as babies.

    13. Re:Don't motivate... by Citizen+of+Earth · · Score: 2

      Have them replaced.

      I concur. But, if you really want them to learn something, sit the down, explain exactly what they have done wrong, and THEN fire their asses.

    14. Re:Don't motivate... by JMax · · Score: 1

      It's worked before...

      Yes, I believe the great hacker Josef Stalin invented this technique.

    15. Re:Don't motivate... by Kashif+Shaikh · · Score: 1

      Have a coding contest...

      1st place is a new Cadillac
      2nd place is a set of steak knives
      3rd place is "you're fired"...


      Between the new Cadillac and "you're fired", I'd put, "get Escort Services". Or even better, "get laid in your new cadillac".

    16. Re:Don't motivate... by chocolatei · · Score: 1

      Maybe that's true where you live...HEY! stop producing land mines you twats!

    17. Re:Don't motivate... by MadCow42 · · Score: 2

      It's a quote, dummy... from a movie... from a VERY GOOD AND FAMOUS movie... Glengarry Glen Ross (Alec Baldwin, Ed Harriss, et al).

      Probably before your time though, kiddo. Go to blockbuster, get the DVD, and watch it. q:]

      MadCow.

      --
      I used to have a sig, but I set it free and it never came back.
    18. Re:Don't motivate... by DuranDuran · · Score: 1
      Or how about:

      "Yeah? Well F--- you!"
      "F--- me? F--- YOU and F--- YOU!"
      "Hey! Language fellows, please!"

      ...from the lesser known Glengarry Glenn Ridge.

      --
      "You can justify anything by putting it in quotes, adding a famous name and making it a sig" - Albert Einstein
  17. Why did you hire them? by Anonymous Coward · · Score: 0

    Fire they asses!

    Get somebody in there with the fire to make
    things happen!

    Damn!

  18. Don't be an ass. by joshamania · · Score: 5, Interesting

    Number one, don't be an ass. I've been on projects where I've been treated as something less than human for asking questions. That is not very conducive to productivity.

    If you truly want to bring the "lesser" coders up to speed, you're going to have to make an investment of time. You may even want to consider pair programming for a period of time. Not only will it make the other coders familiar with your style, but it may make them aware of many "tricks" that aren't documented in your standard learn-to-program-in-21-days piece of garbage college course.

    1. Re:Don't be an ass. by Anonymous Coward · · Score: 0

      Really? How about changing their diapers too? The burden is on THEM to make sure their skills are up to task - they shouldn't have applied for the jobs in the first place (nor have been hired). Good lord...

    2. Re:Don't be an ass. by Spud+the+Ninja · · Score: 1

      There is a large difference between needing guidance and working for two weeks and saying I haven't tried to compile it yet.

      Yes, green workers need to be shepardded, but non-workers need to be let go.

      --
      You can never put too much water in a nuclear reactor.
    3. Re:Don't be an ass. by dthable · · Score: 2, Insightful

      The burden is on THEM to make sure their skills are up to task...

      It's not who has the skills, the idea is to succeed. They win as a team and they fail as a team. Telling them that they need to get their skills up to par won't do much good. When I've run into this problem with people, I try to make them feel at ease. Try holding after hour gatherings the local bar. Then don't talk about work. Once they feel you're not an ass, then start bring up the concepts of work. When I've treated by co-developers with respect, I generally get respect back.

    4. Re:Don't be an ass. by nelsonal · · Score: 1

      Lay them off it isn't 1999 anymore there are plenty of people who will take the job.
      Offtopic: Where does your sig come from? It seems like something I've heard before, but cant recall where.

      --
      Degaussing scares the bad magnetism out of the monitor and fills it with good karma.
    5. Re:Don't be an ass. by Pyrosz · · Score: 1

      I think you have the right idea. Help them learn by their mistakes. Only problem with pair programming (or anything) is that some people tend to be very nervous and its almost a hinderance. The worst thing to do while pair programming is to take the keyboard away from a "lesser" coder, as this just makes things worse for them. You dont learn by watching (err ya).

      --

      An optimist believes we live in the best world possible; a pessimist fears this is true.
    6. Re:Don't be an ass. by Anonymous Coward · · Score: 0

      Being a professional means getting the job done no matter what. People who can't perform except in "ideal" circumstances aren't worth having.

    7. Re:Don't be an ass. by Anonymous Coward · · Score: 0

      that attitude is why you're an idiot geek who couldn't get a date and got his ass kicked all over his high school.

      On a team people skills are just as, if not more, important then coding skills.

    8. Re:Don't be an ass. by Manitcor · · Score: 3, Interesting

      Your method sometimes works however is not fool-proof. I had a similar situation a couple of years back and tried to work every possible angle. When it came down to it he was a nice guy but was dumb as rocks when it came to coding.

      Turns out he was just really good at getting hired and then talking others into doing the work for him.

      Of course people like him ended up getting fired every 2-3 months and moving onto some other company to leech off of.

      Fact of the matter is becasue of the boom, everybody and thier dog decided it would be a great idea to get into tech (coding, networking, whatever)

      Companies were so starved for labor that they would hire anyone who even sounded like they knew what they were talking about.

      now that we are bottoming out and IT budgets are getting slashed only the best techs and the best of the bullshitters will get through.

      My advice: dont let these bullshitters continue on, send them packing and hopefully they won't sucker some other company (if they do hope its your competitor).

      I would like to feel sorry for all the people who have been laid off and fired during these times but from what I've seen many of those (there are of course exceptions) who have were worthless anyway and the teams I'm beginning to see now are more focused, better trained, more expierenced and know what its like to deal with the real world.

      Of course there are still many fakers out there and I only hope that we can weed even more out over time.

      And before you go off ranting about people who are just starting to learn: I have no problem if you are new and just learning, what I have a problem with are those who know the buzzwords and can code some scripts then talk a big game. However when it comes down to the wire and you have to go live in 3 weeks and still have a week and a half of Q&A and you still havent learned the API of the application youve been coding for the last 6 months then I have a problem.

      Do I sound bitter??

      and yes my spieling and grammer sucks.

      --
      "Don't mess with him, he taunts the happy fun ball."
    9. Re:Don't be an ass. by ivan256 · · Score: 3, Insightful

      Telling them that they need to get their skills up to par won't do much good. When I've run into this problem with people, I try to make them feel at ease. Try holding after hour gatherings the local bar. Then don't talk about work. Once they feel you're not an ass, then start bring up the concepts of work. When I've treated by co-developers with respect, I generally get respect back.

      Yep, that works great. Unfortunatly, after you have respect you still get to do all the work yourself. People who don't work will never work unless their job is on the line. People who can't figure out how to do their job after years will never figure it out. Unfortunatly a sizeable percentage of professional programmers fall into one of those two categories because the jobs paid well, and there weren't as many good programmers as there were jobs. It's also hard to tell if somebody is a good programmer or not when you hire them. You typically can't look at their previous work like you can with somebody from almost any other profession. Also, people who can't tell and hire bad programmers, tend to hire lots of bad programmers. Anyway, back to the point: Respectful coworkers are not necissarily competent, hard-working coworkers.

      Of course for some of us that's not an issue, because the rest of the development staff on your project gets laid off and you have to write and test the whole 20k line product yourself anyway. I'm not bitter though. I didn't have to stay, and at least I like all the code now, and when something is broken I don't have to count on somebody else to fix it. Unfortunatly, the long hours aren't scoring big points with the S.O.

    10. Re:Don't be an ass. by Uruk · · Score: 2

      If you truly want to bring the "lesser" coders up to speed, you're going to have to make an investment of time

      It's also important to note that there is no relationship between the amount of time you invest and results - that's completely dependent on the clay that you're working with.

      In this article, I've seen people say "kick the losers to the curb", I've seen people say "bottle-feed them like babies until they really start to help" and several thing inbetween. You need to invest energy and time educating these people IMHO, but developers shouldn't complain when the following scenario occurs occasionally:

      Person X joins project Y. Developers want to integrate X into Y, and so they spend lots of time telling them what's what, helping them out, documenting, and so on. Person X soaks it up like a sponge, but eventually decides that they still can't/won't contribute. Developers lost lots of time.

      It happens. Nobody works on free software projects for the chicks, money, or fame. Ultimately it takes an internal spark and motivation that CANNOT be instilled by other developers. Shame that it can sometimes take such a long time to sort the wheat from the chaff. There are some "fanboy" type developers and hangers-on of projects that act like they'd contribute if only they knew how, but when it comes right down to it, never really well because networked quake is just too distracting. :)

      --
      -- Truth goes out the door when rumor comes innuendo. -- Groucho Marx
    11. Re:Don't be an ass. by Anonymous Coward · · Score: 0

      Well, in the first place it shouldn't take two weeks to figure out that something is wrong. Don't they ever talk? Perhaps the design wasn't so clear after all, or did they even bother to put it on paper? Are each person's role and area of responsibility within the group clearly defined? Of course, people can be lazy, but it seems to me that not everyone does not know excactly what they are supposed to do, and that often lead to these kind of situations. It's the team-leaders role to notice these things early and try to solve them, not by taking over peoples work, that's the worst thing you can do, but by talking to them and trying to find out what is wrong.

      And, My team of 4 will hopefully produce about 20k lines of code, what the hell is that all about? /Twinkle

    12. Re:Don't be an ass. by tongue · · Score: 5, Informative

      I'd recommend pair programming in this case. Ordinarily, I think it isn't terribly conducive to getting a lot of work done, enough to justify two bodies at one keyboard. But in this case, it seems that two bodies at two keyboards is the functional equivalent of nobody at any keyboards.

      Pair programming will probably make them stay on task better, since they'll sort of "guilt-trip" themselves into it. When one of them has a problem, chances are the other will know how to solve it.

      Also institute daily builds using ant or somethign of that nature. That way there's no excuse for not having compiled the code--and when it doesn't compile, everyone gets a report. Another way to push the guilty parties a little harder to get their ass into gear.

      I think most of the concepts of extreme programming apply to your situation. Programming methodologies in general hold back great programmers, but their reason for being is to help mediocre programmers become good (and productive) ones. I'd say this is a textbook case.

      Also, having been both the 90%'er and the lazy fuckoff at various points in my career, i can tell you that motivation is everything. Pool tables and perks won't get the work out of them--they truly have to feel like a team, and feel like they're letting the team down when they slack. From your post, it would seem that you don't really feel the team effort either. I think that the most important change you can make would be to help foster that atmosphere. You also mentioned being the defacto lead on the project; don't assume that position unless its given to you by someone with authority to do so. It pisses off your coworkers.

    13. Re:Don't be an ass. by Anonymous Coward · · Score: 0

      Yeah, whatever - I have a gorgeous girlfriend and can kick anybody's ass with my black belt in Tae Kwon Do.

      Your attitude explains why you can't get a job and are so bitter. People skills more important? Yeah right - we can all be "touchy feely" with one another after the project fails. Get a clue.

    14. Re:Don't be an ass. by joshamania · · Score: 3, Interesting

      Exactly. A good bunch of idears there...

      I wasn't specifically thinking of eXtreme programming, but pairing two of your lessers will certainly add motivation. It's much harder to play freecell if you have another person sitting there watching you be a dipshit.

    15. Re:Don't be an ass. by Anonymous Coward · · Score: 0

      that attitude is why you're an idiot geek who couldn't get a date and got his ass kicked all over his high school.

      Nice demonstration of your people skills!

    16. Re:Don't be an ass. by dazdaz · · Score: 1

      Something that i've noticied, is that those that criticise others, often criticise to hide their own inadequacy's.

      Positive is stuff that's justified and fair.
      Negative criticism often has no purpose other than to make oneself look better than others and creates a very bad and unproductive environment in which to work.

      A lot of college grads use negative criticism, and are quite difficult to work with for this very reason.

    17. Re:Don't be an ass. by MAXOMENOS · · Score: 1

      If I could give you an extra point to raise the score to +6, I would. Good show.

    18. Re:Don't be an ass. by Manitcor · · Score: 1

      Well first off I'm not a college grad. as a matter of fact I never attended college. I myself am self-taught and have been in the industry for quite some time.

      Perhaps I sounded harsher than I should have (one tends to do that when they get on a roll).

      To summeriaze I have no problem what-so-ever for those who are honestly trying thier best to learn. As someone who has taught classes as well as managed project teams I have made plenty of mistakes learning the difference. However during the boom I saw a large amount of people fooling companies into thinking that they knew more than they really did. Which I also have no problem with provided if you pull such a stunt your willing to bust your ass to get up to the level at which you promised to be.

      If I see that some one is willing to learn and is actually trying then even if they are way behind the curve I will make every effort to help them along. However some just don't care and are just there to milk the company of money which hurts everyone espically the team as they work extra hours to take up the slack someone was supposed to do.

      As I said I prob sounded harsh; most likely becasue I'm about to spend my weekend doing some work that some one else promised they could do when they really couldn't even after much help. To bad at this paticular job I have no way of fixing this person other than doing thier work for them.

      Oh well, at least its overtime :-)

      --
      "Don't mess with him, he taunts the happy fun ball."
    19. Re:Don't be an ass. by millette · · Score: 1
      offtopic

      The sig is from a business book: "Rules For Revolutionaries", Guy Kawasaki. That quote is the title of section 1 from the book. Never read it, but there's this new web site called google, and it lets you search for words and sentences on the web. You should try it :)

    20. Re:Don't be an ass. by Anonymous Coward · · Score: 0

      It's bad, but your Slashdot sig. will became my new email sig... I can send you royalties if you want!

    21. Re:Don't be an ass. by Nightpaw · · Score: 2

      You misspeled "inadequacies".

      :)

    22. Re:Don't be an ass. by nelsonal · · Score: 1

      I haven't read or heard of this book before; I just liked the idea. Odd that I picked something someone else already used, now I'll have to give him credit.

      --
      Degaussing scares the bad magnetism out of the monitor and fills it with good karma.
    23. Re:Don't be an ass. by millette · · Score: 1

      I don't know the book either, just did a google search. Maybe the author got it from someone else, I don't know...

  19. frequent feedback and monitoring by cifey · · Score: 3, Insightful

    Well assuming you can't fire somebody, I guess you have to pick the people you think are actually capable of performing and monitor them frequently, via emails and daily face to face discussions, the rest, just make sure they aren't on your next project team.

    --
    Hello Cruel World
    1. Re:frequent feedback and monitoring by xtremex · · Score: 2, Interesting

      Programer's SHOULDN'T be micromanaged! The programmers I asscoiate with LOVE their work and don't need guidance..give them some documentation on APIS and a couple of weeks their up to speed. I have done work which I absolutely abhored...(device drivers...bLAH! Not sexy :) )and I did putz around...but at least I was a contracter and I knew once I finished it was over. When i hired programmers, I never looked at the skill..I looked at their passion. If you have passion for something, you'll GET the skill. If you have skill, but no passion, you'll always be mediocre.

      --
      If you're not a Liberal in your 20's, then you have no heart.If you're still a Liberal in your 30's you have no brain.
  20. A big stick by wackysootroom · · Score: 2

    Pick up the biggest wooden staff-like object that you can find, then threaten to bean them with it if they do not produce.

    Sure your'e not serious, but they don't know that.

    1. Re:A big stick by groundhog00 · · Score: 0, Offtopic

      Ever wonder why the Holocost never happened?

    2. Re:A big stick by Organic_Info · · Score: 1

      Won't work with every one.

      I confront a challenge. If you threaten to hit me with a stick you damn well better do it. Shit out and you'll won't be respected.

      I understand the bluffing concept but a word of advice: Don't make a threat(statement) you can't backup, at least in some way.
      .

      --
      "Things that you own end up owning you" - Tyler Durden (via Diogenes of Sinope).
    3. Re:A big stick by Anonymous Coward · · Score: 0

      Exactly. Once you start managing with sword, you better not put it down.. 'cause someone else will pick it up!

  21. Fire em' by Anonymous Coward · · Score: 0

    Give them the boot..... and get new guys.. yeah new guys from school :) Teach them not to suck they will ask, they are right outta school. You have to make them feel part of the team.

  22. Slashcode.com has turned off AC posting! by Anonymous Coward · · Score: 0

    Try to AC post at slashcode. The slashdork crew disabled it because the lameness filter doesn't work.

    Try to AC post
    1. Re:Slashcode.com has turned off AC posting! by Anonymous Coward · · Score: 0

      Please explain why that is a bad thing? Seems like a reasonable decision to me.

  23. A few suggestions... by Yoda2 · · Score: 4, Insightful

    When starting a new programmer, I find it helpful to find some similar code to let them have a look at. Starting at zero can be intimidating. Changing someone else's code is a good way to learn until you know what you are doing. Daily reviews until they get going is unpleasant, but probaby necessary at this point. Make sure your team has access to good reference books. Reduce their modules to very simple components. Newsgroups, newsgroups, newsgroups.

  24. Here's your decision tree by geophile · · Score: 4, Insightful

    Speaking from experience: If it's feasible, finish the project yourself. Don't count on people who have proven incompetent.

    If this isn't feasible: Either your product is vital to your company's survival, or it isn't. If it is, then it is your responsibility to let your boss know about your project's troubles, and his boss, and keep going until you reach the CEO, if necessary. If this doesn't work, then the next thing I'd design, if I were you, would be my escape.

    If your product is not vital to your company's survival, then either it will get done, slowly, and you'll have no life until you're done; or it will just fall apart.

    1. Re:Here's your decision tree by SnapShot · · Score: 1
      Speaking from experience: If it's feasible, finish the project yourself. Don't count on people who have proven incompetent.
      Exactly, if one coder is doing 90% of the code, then I guess you'll only be 10% late. That's not bad for most software projects.
      --
      Waltz, nymph, for quick jigs vex Bud.
    2. Re:Here's your decision tree by Mark_Uplanguage · · Score: 1

      You've picked your decision, you must get the others up to speed. Your ability at leadership is being tested. Crying up the PHB food chain doesn't solve the problem. You must get them to work together, you must set deadlines. As deadlines pass overtime becomes necessary. Sure coding can suck under heavy overtime loads, but you're already there. They don't need sleep they need skill.

      --Share the source, share your expertise, never stop learning

      --
      "The difference between stupidity and genius is that genius has its limits." -- Albert Einstein
    3. Re:Here's your decision tree by ajakk · · Score: 2

      I don't think this is a situation where one coder is supposed to do 90% of the work. Thus, it will be quite a bit more than 10% late.

    4. Re:Here's your decision tree by Neumann · · Score: 1

      Havent you ever heard the quote:

      "the first 90% of the project takes 90% of the time, the last 10% takes the other 90%?"

    5. Re:Here's your decision tree by InternalWave · · Score: 1

      Agreed. Some other posters seemed to think that it was immature and unprofessional to go into CYA mode. In a case like this it is not, IMO.

      If these guys are so bad at coding I suspect that they do not in fact understand the design that well. And if they are so bad at one important aspect of software development then what reason to believe that they are better at anything else? After all, they advertised themselves as programmers, did they not?

      Don't bother hiring anyone new, but don't use the deadweight either - that'll slow you down just as bad. Document the situation - clearly identify and archive the crap that these other people came up with, prepare an estimate for the project based on the fact that you can make a strong case that you are the only competent programmer on the project, and take it to your boss.

      Regardless of the outcome, look for new work. If this company hired these people then they have serious problems.

      We should have loyalty to our employers and to ourselves. But let's not get carried away with feeling that we have loyalty to co-workers who are incompetent. That smacks of unionism.

      Some may think this is draconian. Bullshit. Incompetent people are leeches - if left in place they have a gift for making themselves look better while their overall drag on performance makes the performers look bad. The lightweights feel no loyalty to the people doing the work - why show any to them?

  25. Meetings by Tall+Rob+Mc · · Score: 4, Insightful

    If you are capable of producing their work in a short amount of time, clearly you have an idea of how it can be implemented. Sit down with each one individually and get to finer details of their roles. Help write pseudocode, if necessary, and then let them actually bang it out. I'm suggesting, in a way, that you do it all yourself without quite doing it all yourself.

    1. Re:Meetings by Enzondio · · Score: 1

      I agree with this post. I've found when working with novice programmers it helps to really specifically define what you need them to do.

      Recently I was working with a SQL guy who was supposed to be writing some stored procedures for me. In order to help him I made some sample tables that contained exactly the output I was expecting to see from his procedures. He was much better able to understand this example than the specs I had previously given him.

      It's frustrating, but what you have to do is just stay on top of these people. Check in with them often and if need be, break up the jobs you need them to do into smaller and smaller chunks until they get it.

  26. RTFA by Anonymous Coward · · Score: 0

    From the article:
    Hiring new people this late in the project won't work, as anyone who has read 'The Mythical Man Month' knows.

    I don't blame you as much as the moderators, though.

    1. Re:RTFA by TeknoDragon · · Score: 2

      If you read that book you'd realize the scope of TMMM is that of a 100+ person project (s390 IIRC).

      With the scope that THIS article is talking about, getting a replacement may be neccessary

  27. Threaten Layoffs by msheppard · · Score: 2

    Let them know someone will get laid-off, and it's basically up to them to decide who. There's people outside lined up for their jobs, I hope they know.

    M@

    --
    Krispy Cream is people
    1. Re:Threaten Layoffs by bolthole · · Score: 2

      leaving it 'up to them' (via 'who produces the least') can lead to internal sabotage/stealing/nastiness. Be aware of what types of people you are dealing with, before considering this option. Because odds are that you may end up firing the most straightforward/honest person, and thats actually the person you want to keep the most.

    2. Re:Threaten Layoffs by Anonymous Coward · · Score: 0

      Absolutely the worst idea.

      Fire 'em, or not. Never fool around.

      First, idle threats never work. If you intend to use that stick, you must be very clear how, why, and when it will be used. We call it disipline. You write a letter and get the employee to agree to exactly what needs done, and by when - if they fail, you terminate. If they succeed, the process ends and you take them to lunch and never speak of it again. If the bad behavior repeats later, you start over.

      Second, threats like that will patently demoralizethe every on in the group, and many others in the company. After they're done doing all sorts of damage trying to save their job, they'll be left knowing the game can be started all over on a whim. The group may well NEVER produce at capacity again.

      If you had to replace people in this group, for the sake of this project, the best approch would be to hire new headcount and keep the others - for now. Integrate the new people, then get rid of the old. Of course, you'd better have vastly improved your own ability to identify a worthy candidate first.

  28. Move up the food chain by gosand · · Score: 3, Insightful

    Yeah, it sucks that you are the lead of people who can't do the work, but all you can do is lead. You can't make them work. I would go to the project lead, or your manager, and say what you said here: "If others don't catch up quickly, we'll have serious problems delivering on time. " Yeah, it might not be the nicest thing to do, but you aren't there to grab each other's asses, you are there to do a job. I assume you have already given them time to do the work. If you haven't spoken to them personally yet, do so. Tell them their code sucks, ask them why they don't have anything done yet. It is your ass on the line as the lead.

    --

    My beliefs do not require that you agree with them.

  29. Paired programming! by Anonymous Coward · · Score: 1, Interesting

    I am all for going the paired programming route. It gets some undeserved bad press sometimes, but I think it is very effective.

    It allows you to stop those bad habits right away, and lets you show them the correct way to do things. Simply pointing at something and saying don't do that, doesn't work. You have to say stuff, like don't do that because.... Try this way instead because....

    It also allows you to share knowledge of all areas of the product. If they don't know how something works, how are they supposed to use it? If you put it together with them, they have intimate knowledge and can share it with others.

    It is an investment in time in the short run, but in the long run it will pay off.

  30. Have a Pizza party (really a status meeting) FRI by MrJerryNormandinSir · · Score: 1

    Well every Friday have a lunch meeting. Make sure
    no one is spinning there wheels and that they
    have the resources they need. Set daily/weekly
    goals for them. If they don't turn out code in a
    couple of weeks, let them go because they don't
    know what they are doing.

  31. Here's what I'd do by Bilestoad · · Score: 3, Insightful

    You bear some responsibility for allowing this to happen. Planning for an early integration is right, but you can't ignore everything up until that point. However, now it's happened...

    you have to seriously assess whether the people you are involved with are competent. If you're absolutely stuck with them (assigned class group, nobody else available) then you have to do two things. These are to plan on doing all the work yourself and to come up with a new schedule based on you having to do the whole project. If they contribute anything, it's a bonus.

    If you can get someone else who is competent, get them. Brooks was right but like most authors he is only 100% right when the situation exactly matches the one he experienced. If it just can't be done with only you then what choice do you have but to add someone else? I believe Brooks showed that you definitely experience gains when you go from one to two programmers, even from two to four. You just don't gain much at all when you go from one hundred to two hundred.

    Whatever you do make it clear to your manager/professor that you did the whole damn thing. Make sure each module is owned by the person who actually completed it. And if every module has your name on it, perhaps you'll take some credit away from an otherwise bad situation and the others will be assigned tasks better suited to their abilities in future.

    1. Re:Here's what I'd do by Spud+the+Ninja · · Score: 1
      You bear some responsibility for allowing this to happen.

      Yup, even as de facto lead, you have to do some management of the coding team. Try running things on a per-day basis: a brief standing meeting outlining the days goals; mandatory checkin by, oh, say 3:00pm; code review of everything checked in; discuss goals for next day; go home happy that your team is functioning as a team.

      --
      You can never put too much water in a nuclear reactor.
    2. Re:Here's what I'd do by ErikZ · · Score: 3, Insightful

      I find this whole situation suspicious. What are the odds that EVERYONE on his teams sucks, but his shit smells like roses?

      If he's in charge, then maybe they're waiting for him to take charge.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    3. Re:Here's what I'd do by Webmonger · · Score: 2

      I'd say the odds are very good. The person asking for help is the original developer, and the others are new. Even good programmers take some time to adapt to your problem domain and existing code. You can't just shove someone in the slot and expect brilliance.

  32. Pair Programming... by Capt_Troy · · Score: 2, Redundant

    As far as experience goes: Perhaps have less experienced people sit with you while you code, sort of like peer programming but it will be more of a learning experience for them. Encourage them to ask as many questions as possible durring that time. I think this may slow you down a bit for a while but in the end you will have more experienced developers.

    1. Re:Pair Programming... by Inexile2002 · · Score: 1

      It works. This is pretty much how I learned to code. I was NOT a programmer and got assigned to a coding task. Pretty simple stuff in Java, but all I had ever done is a little VB. (Stupid manager took me off something I was really qualified to do too.) There were four 'coders' on the project, one who knew Java really well, one who was a pretty experienced coder but with little Java experience, me with a touch of VB and some poor guy who knew NOTHING.

      We paired up, weak with strong, learned as we went and studied our asses off. By the time we were half way through the first stage of the project, around a month in, we started to get it. By month four, we were fully coding on our own and able to independently work on stuff.

      Oh, and although I'm glad I've got the experience now, I'm even more glad the manager got fired for putting the teams together that he did.

  33. fire them by Anonymous Coward · · Score: 1, Funny

    Fire their sorry asses, then ask for a raise. Then fire the incompetent bozo who hired them.

  34. a real answer by Jucius+Maximus · · Score: 4, Informative
    Have a manager call a meeting with all of you for the purpose of demonstrating what you have so far. This will get your group into gear. Just have the manager send everyone an e-mail that the meeting will be in room number [...] at time [...]. Don't have the manager come and ask, "what time would be good for a meeting ... ?"

    I know from personal experience that this is a good motivator.

    1. Re:a real answer by Lally+Singh · · Score: 2

      Good idea! My suggestion can be considered level 2: start docking pay until they get their ass in gear. If they don't understand something, it's their responsibility to find out. They're getting paid to write code. Any inaction towards that goal is acceptable cause to dock pay.

      --
      Care about electronic freedom? Consider donating to the EFF!
  35. Its a tough job and a somewhat dangerous one.. by cOdEgUru · · Score: 5, Interesting

    (1) People hate other people tell them that they suck at something. Whether they tell you that they are open to constructive criticism or not, they still would hate you.

    (2) Sometimes its just easy to laterally move developers from one project to another if they are not being productive, than bringing the whole team and the motivation down. This could be done without raising any suspicions and with diplomacy.

    (3) Sometimes constant probing helps, sometimes it doesnt. Reminds me of the dibert cartoon today where the guy wont do a thing without some sort of threat. He may not need to be threatened but send the PM to him every couple of hours anyway. Sometimes this could be detrimental to his position, but atleast he might realize somethings wrong.

    (4) Theres shit happening everywhere and in every other company. This guy could just be freakin out about his job, his family, his wife, his parents and everyone he has to support if he loses his job. And hence instead of working hard to sustain his job, he might do the other, by wasting time getting more tense day by day. Its better to have the PMs or someone else from the team he confides in, to talk to him. But then again, that just might shoot his stress level through the roof.

    (5) There are some people who just suck at certain stuff, it could be coding, communication or inability to gather requirements from the right people, and in turn building stuff that theres no need for. You will have to address these issues from the team leader level, keeping your team focussed towards the common goal

    (6) These are people we are talking about here. Sometimes nothing works. Thats the way it is.

    1. Re:Its a tough job and a somewhat dangerous one.. by xtremex · · Score: 2, Insightful

      >>>(1) People hate other people tell them that they >suck at something. Whether they tell you that they >are open to constructive criticism or not, they >still would hate you.
      You can't say their code sucks..that's a negative comment. You have to tell them thr problem. For example. If you made a deadline for friday to have such and such modules completed (you DID make a deadline, didnt you?), and they havent done it, ask them why? Are they having trouble with something? Do they have all their tools? Do they need Schubert in the background? Shit, use the company account and buy them a book if need be. I've bought books out of my own pocket to help my coders. There has to be an open line of communication. What is the problem they are having? Are they Lazy? Well, you can't stop the laziness.Hire a consultant for 2 weeks if you have to. Get a telecommuter who will bang code at home..Give him a CVS account, review the code and see what he can do. As a manager/leader it is your responsibility to keep those lines of communication open. The belief that "if you want things done right, you have to do them yourself" is a TOUGH one to break. I used to do it..and you usually come off as an arrogant prick. If they feel you'll just do it ANYWAY, they won't bust their horns, you get me? Like when you were a kid. If you didnt want to do something, you did a lousy job at it, so your MOM owuld do it and she wouldnt ask you again....same principle really. You have to let them know that THEY are accountable for their own code..not you.

      --
      If you're not a Liberal in your 20's, then you have no heart.If you're still a Liberal in your 30's you have no brain.
    2. Re:Its a tough job and a somewhat dangerous one.. by Sludge · · Score: 2
      (1) People hate other people tell them that they suck at something. Whether they tell you that they are open to constructive criticism or not, they still would hate you.

      Please. Any real engineer worth their salt is able to attain a level of intellectual honesty above and beyond that of not being able to take constructive criticism.

    3. Re:Its a tough job and a somewhat dangerous one.. by Woko · · Score: 1

      Most real engineers work gets checked as a matter of course, by another real engineer.

      Nobody except 'software engineers', puts something into production without having tested it.

      --
      ---
      Silence is consent.
  36. Pair Programming by HisMother · · Score: 4, Informative
    Two words: pair programming. Two people writing code together at one computer. One typing, one kibitzing.

    See www.pairprogramming.com . If you haven't tried it (and many people haven't) your reaction will be "that would never work, and I'd hate doing it." The truth is that it works very, very well, and people like it when they try it.

    By pairing with the newbies, you can mentor and monitor them Change pairs several time a day, insist that all code is written in pairs, and before long, you'll have a team of clueful people. Total team productivity will quickly rise.

    As I said, if you haven't tried it, you're almost certainly going to think it's a bad idea; turns out it's not. Anyone tempted to follow up with "that would never work, PP sucks" please go off and try it for a week, first.

    --
    Cantankerous old coot since 1957.
    1. Re:Pair Programming by IamSorrow · · Score: 5, Informative

      This is part of Extreme Programming, if all you do is implement paired programming you will fail, in order for pair programming to be sucessful you should use as much of the extreme programming Philosophy as possible:

      Customer Team Member - Teams have someone (or a group of people) representing the interests of the customer. They decide what is in the product and what is not in the product.

      Planning Game - XP is an iterative development process. In the planning game, the customer and the programmers determine the scope of the next release. Programmers estimating the feature costs. Customers select features and package the development of those features into small iterations (typically 2 weeks). Iterations are combined into meaningful end user releases.

      User Story - A User Story represents a feature of the system. The customer writes the story on a note card. Stories are small. The estimate to complete a story is limited to no greater than what one person could complete within a single iteration.

      Small Releases - Programmers build the system in small releases defined. An iteration is typically two weeks. A release is a group of iterations that provide valuable features to the users of the system.

      Acceptance Testing - The customer writes acceptance tests. The tests demonstrate that the story is complete. The programmers and the customer automate acceptance tests. Programmers run the tests multiple times per day.

      Open Workspace - To facilitate communications the team works in an open workspace with all the people and equipment easily accessible.

      Test Driven Design - Programmers write software in very small verifiable steps. First, we write a small test. Then we write enough code to satisfy the test. Then another test is written, and so on.

      Metaphor - The system metaphor provides an idea or a model for the system. It provides a context for naming things in the software, making the software communicate to the programmers.

      Simple Design - The design in XP is kept as simple as possible for the current set of implemented stories. Programmers don't build frameworks and infrastructure for the features that might be coming.

      Refactoring - As programmers add new features to the project, the design may start to get messy. If this continues, the design will deteriorate. Refactoring is the process of keeping the design clean incrementally.

      Continuous Integration - Programmers integrate and test the software many times a day. Big code branches and merges are avoided.

      Collective Ownership - The team owns the code. Programmer pairs modify any piece of code they need to. Extensive unit tests help protect the team from coding mistakes.

      Coding Standards - The code needs to have a common style to facilitate communication between programmers. The team owns the code; the team owns the coding style.

      Pair Programming - Two programmers collaborate to solve one problem. Programming is not a spectator sport.

      Sustainable Pace -The team needs to stay fresh to effectively produce software. One way to make sure the team makes many mistakes is to have them work a lot of overtime.

    2. Re:Pair Programming by /dev/trash · · Score: 0, Flamebait

      come on....do real companies use this horsecrap?

    3. Re:Pair Programming by Anonymous Coward · · Score: 0

      I've tried this on several smaller projects and while I thought it was crazy at first, we managed to double our output for the same period of time. It was also much more relaxed, we were able to focus on the project and not get sidetracked.

      One thing I noticed, it doesn't work for very short or very long periods of time. 2-3 hour shifts works very good. Then switch, or take a break.

    4. Re:Pair Programming by HisMother · · Score: 5, Insightful
      > if all you do is implement paired programming you will fail

      Well, no. That's not true at all. In fact, XP advocates universally recommend what Kent Beck attributes to Don Wells in the first XP book:

      1. Pick your worst problem.

      2. Solve it the XP way.

      3. When it's no longer your worst problem, repeat.

      You shouldn't and actually can't adopt XP all at once; you have to start somewhere. And for this guy, pairing is the place to start. You certainly can't recommend that these folks who can't squeeze out any code at all by themselves be encouraged to styart refactoring his code, can you?

      --
      Cantankerous old coot since 1957.
    5. Re:Pair Programming by Yunzil · · Score: 2, Insightful

      By pairing with the newbies, you can mentor and monitor them Change pairs several time a day, insist that all code is written in pairs, and before long, you'll have a team of clueful people. Total team productivity will quickly rise.

      Except in the Real World where you don't have enough developers for people to work in pairs all the time, and the project is too big for everyone to understand every part of it. Also, when I'm deep in "the zone", I don't want to be bothered by someone leaning over my shoulder. And when I'm following a very careful train of thought while trying to debug a once-in-a-while seg fault, I definitely don't want to be interrupted. If I want help, I'll go ask for it.

      In other words, no thanks. :)

    6. Re:Pair Programming by Anonymous Coward · · Score: 0

      Only the best would practice something like XP. It takes a brain to understand this advanced approach. Unfortunately most code geeks get their degrees in Programming for Dummies (aka Computer Science) which teaches things like big upfront design and analysis, waterfall life cycle, and How To Be An Uncommunicative Nerd.

      Buy the XP White Book and you might actually learn something.

      Cheers!

    7. Re:Pair Programming by st.+augustine · · Score: 4, Insightful
      come on....do real companies use this horsecrap?
      Yes. It works great, so long as your developers understand that software engineering is more than just writing code.
      --

      -- Some things are to be believed, though not susceptible to rational proof.
    8. Re:Pair Programming by pascalb3 · · Score: 1

      From the other side of the tracks, as an intern in a company for the summer, this is really the best way. While we may not be 'pair programming' per say, each of the interns is assigned a mentor who provides assistance when necessary. At the beginning of the summer, this was multiple times a day, but after about a week or two, our productivity soared once we had a hold on what was going on.

      Of course, the first two weeks and change were used to train us in the language and its syntax that we would be using, the tools to accomplish our tasks, and the methodology. Besides the training and mentors, we (and everyone else on projects here) go through peer reviews of everything from the initial project requirements to the code and its QA/maintenance. This process is extremely helpful for us (the interns) because it gives us a foundation to go out on our own and do the programming and know we have support and that what we produce will be evaluated and (hopefully) improved by others.

      I kind of ranted here, and this is a retroactive solution to your post, but I believe this works. With the three parts above (training, mentoring, and peer reviews) we have gone from wide-eyed college students to productive corporate members. I doubt many HR people read /., but take note on how improve the quality of your hirees before and during their work on projects.

    9. Re:Pair Programming by st.+augustine · · Score: 5, Insightful

      Except in the Real World where you don't have enough developers for people to work in pairs all the time
      This is a common fallacy, and a lot of us at the company where I work believed it until we'd had a few weeks of exposure to pair programming. Over the long term, two developers working in a pair will be at least as productive as they would be working alone -- first, the code they produce has fewer bugs; second, there are now two people who can maintain that code, so you've lowered your truck factor; and third, while they're pairing they can't be reading Slashdot.
      and the project is too big for everyone to understand every part of it.
      We thought that, too. But you don't need everyone to understand every part of the project. What you do need is for more than one person to understand each part of the project. I'd estimate that with most areas of our software, there's one person who knows it inside and out, one person who's at about 70%, and two people who are at 20-30% and could get up to speed quickly if they had to. (For reference, this is in a development team of ten, with a large multi-tiered cross-platform Java/C++ project containing about 1200 classes.)
      Also, when I'm deep in "the zone", I don't want to be bothered by someone leaning over my shoulder.
      No offense, but I hate trying to debug really tight code written by someone else who was deep in the zone. Unless we happen to think a lot alike, it's often a real bastard to try to understand what in hell they were doing. Pity your fellow developers and allow them some insight into your thought process. :)
      And when I'm following a very careful train of thought while trying to debug a once-in-a-while seg fault, I definitely don't want to be interrupted.
      If your pairing partner was with you when you started the train of thought, they wouldn't be interrupting you.
      If I want help, I'll go ask for it.
      Yes, but will you ask for it when you need it, or only several hours later when you've given up on figuring it out on your own?
      --

      -- Some things are to be believed, though not susceptible to rational proof.
    10. Re:Pair Programming by bburns · · Score: 1

      I work at a shop that has adopted some XP practices. Generally, I'm not a fan of pair programming, and we don't do a lot of it, but there are situations where pair programming has its advantages.

      Pairing a programmer new to a project with a programmer experienced with a project helps bring the new programmer up to speed. The experienced programmer can explain what design decisions made the code what it is.

      Pair programming to extend a system works well when both programmers have different knowledge about the system. Together, they will be able to remember things and get the new functionality implemented faster than if either one worked alone.

      Pair programming to implement a new design forces both programmers to clearly know what they are doing. It takes time and effort to think through the design and communicate it to each other, but it saves time of following tangents that don't work or having a poor design.

    11. Re:Pair Programming by Yunzil · · Score: 2

      Over the long term, two developers working in a pair will be at least as productive as they would be working alone

      I doubt it, at least around here. For one thing, the developers here have wildly differing styles. I'm not saying we couldn't pair up for an hour to solve a problem. We can and we have, but pairing up all day, every day would be exceedingly painful and probably lead to a fistfight and a couple resignations. :)

      We thought that, too. But you don't need everyone to understand every part of the project. What you do need is for more than one person to understand each part of the project.

      I'm talking about really huge project, ie, tens of millions of dollars of funding, being built by a small number of people. "Well, you're understaffed!", I hear you cry. Well, yes, but that's life. The guy across from me wrote a major part of the code. I have neither the time, nor do I know enough math to understand what he's done. If I sat there and watched him code, the only contribution I could make is, "you forgot a semicolon there." Meanwhile, the stuff I'm expected to do isn't getting done.

      No offense, but I hate trying to debug really tight code written by someone else who was deep in the zone.

      Ah, but you haven't seen MY zone code. ;) Seriously, my zone code isn't any different from my code written any other time [whether that's a good thing or not]; I just get more done.

      If your pairing partner was with you when you started the train of thought, they wouldn't be interrupting you.

      Yes, they will be. You don't understand. I get into this mode where it's like nothing exists but the code on the screen [or the paper], and I'm imagining the data flow in my head. I can't even get INTO that state with someone there, let alone if they are trying to talk to me.

      Yes, but will you ask for it when you need it, or only several hours later when you've given up on figuring it out on your own?

      If I figure it out on my own, I am more likely to remember it. If I get someone else to show me, I'll probably forget. YMMV.

    12. Re:Pair Programming by st.+augustine · · Score: 2, Insightful

      So if what you have is a small number of developers each working alone in a style nobody else can code in on a piece of the project nobody else understands, how do you expect this system to be maintained? It sounds to me like in the long run you're dead anyway.

      --

      -- Some things are to be believed, though not susceptible to rational proof.
    13. Re:Pair Programming by Mojo+Geek · · Score: 1

      Well evidently they understand that as only one of 'em is writing code.

    14. Re:Pair Programming by st.+augustine · · Score: 1

      There you go, then! I want to hear from this guy's coworkers -- what part of the project has he been letting down? :)

      --

      -- Some things are to be believed, though not susceptible to rational proof.
    15. Re:Pair Programming by BanteringCTO · · Score: 1

      Pair programming is a great concept, and works very well at large companies. It is, however, not a good solution for small companies. In small companies (I know, I'm part owner of one), every person involved in the project has to contribute.

      --
      The world of achievement has always belonged to the optimist. -- J. Harold Wilkins
    16. Re:Pair Programming by Steve+G+Swine · · Score: 2
      pairing up all day, every day would be exceedingly painful and probably lead to a fistfight and a couple resignations. :)
      Shortly after that, you'll have a development team. :D
      --
      "Consider yourself a member of a virtual corporation with Mr. Torvalds as your Chief Executive Officer." - Linux Advocac
    17. Re:Pair Programming by Anonymous Coward · · Score: 1, Insightful

      in order for pair programming to be sucessful you should use as much of the extreme programming Philosophy as possible:

      I'm sorry, I don't accept advice from zealots.

      Everything in moderation, and don't take the word of some random Slashdot poster, even me. :)

  37. In a brief by af_robot · · Score: 1

    The key to victory is human relationships.
    As a team leader you will be working for two men: one is usual programmer and another one is manager. You HAVE to plan your work, define stages, checkpoints, deadlines and so on. You have continuously control (read: help and fix their bugs) your other coders.
    And yes, you NEED shared idea, mission: psychological motivations are the best ones.

  38. Same Situation by IamSorrow · · Score: 2, Interesting

    I'm going through the same situation, with a developer, except in this case I need his work to be completed so that he can move on to a piece of the project that i need done, He's been developing (rather trying) a servlet that will send a file to a user. He's been at this for the better part of 2 months. I'm tired of his reasons why it's not done, so today I decided to see how hard it was to develop a servlet that does what I need (I do not know very much Java) Well wouldn't you know I have a prototype that will download a file and save it to a local directory after spending 3 hours on it, most of that time was spent configuring Tomcat and designing a web page. Now I have to explain to managment why I want this guy gone!

    My solution is fire him!

  39. Fire them. by Spud+the+Ninja · · Score: 5, Insightful
    I could just take over someone else's module and code it in no time. But if anyone did that to me... well that's out of the question.

    It's not out of the question, it's the answer. Not doing the job you were hired for is a fireable offense.

    Show them the coding standards that are to be followed. Show them the requirements. Show them the deliverable date. If they can't make those 3 things come together to the degree neccesary, show them the door.

    --
    You can never put too much water in a nuclear reactor.
    1. Re:Fire them. by happyclam · · Score: 2
      Show them the coding standards that are to be followed. Show them the requirements. Show them the deliverable date. If they can't make those 3 things come together to the degree neccesary, show them the door.

      But more likely the typical project goes something like this:

      • Show them the delivery date.
      • Show them the elevator pitch from the VC slides.
      • Show them the delivery date, a month earlier than before because they need it earlier for a higher valuation.
      • Show them a few "requirements" that vaguely define a high-level feature set, such as "calendar," "authentication," "groupware," and "workflow management."
      • Show them the delivery date.
      • Change the requirements, but don't tell them.
      • Show them the delivery date.
      • Ask them why they aren't tracking to the new requirements, then show them the new requirements.
      • Force them to agree to the delivery date in front of the Board of Directors.
      • Add six new major requirements.
      • Show them the delivery date.
      • When the project is late and 75% functional and 100% untested at the delivery date, cover your own ass by blaming the lead developer and fire him.

      Oh, wait, you're the lead developer. Sorry, dude, but you'd better get your resume together because you have all the accountability with little of the authority.

      --
      He looked at me and said, "Kid, we don't like your kind, and we're gonna send your fingerprints off to Washington."
  40. age old question by lingqi · · Score: 2

    I don't think it's easy for them to "just come my and bloody ask questions" if your opinion of them is "suck" (from the "make them suck less" part). i mean... if you want the less experienced developers to feel comfortable asking questions and actually *care* about what you care about, then you'd better damn well care about them too instead of acting like (i am not accusing you of, but you may want to check if you are) an elitist who think they are just dumb ass drones.

    now -- i would say first is to set intermediate goals (divide project into smaller portions) and get daily updates. spend 15 min every day and see if they ran into any trouble with today's work, etc etc. this way deadline is always 8 hours away, and there won't be any CS-101 "i will wait till the night before the project is due" symptoms

    two -- get together with them and do some stuff -- be *friends* and THEN work-partners. an activity that requires no social interaction and gets a lot of bonding is 1) drinking. 2) drinking at a strip club. or golfing or whatever. when you guys are buddies, 1) they will feel at ease about seeking your help, and 2) they would hopefully get your vibe on the urgency of things. sidenote: be friendly but draw the line if people start to take advantage of this relationship

    3) plan for the worst and be prepared for extreme measures. "kill a chicken to demonstrate to the monkeys" is a badly translated old chinese proverb. if it's necessary, fire somebody and be prepared to take up the slack. if everything else fails this should get people into a more productive mode.

    well... that pretty much covers everything from holistic to draconian... so...

    --

    My life in the land of the rising sun.

  41. Finger motivation approach. by jsonmez · · Score: 1

    I have written a an RFC on this very subject. It is definitely one of great concern. The RFC is called RFC1OUCH. Basically the idea behind this RFC is that motivation is required for a person to work/learn/produce. My choice method of motivation is digit removal. Now by digit removal I am not reffering to taking numbers off their pay, but rather removing thier digits. I would first recommend getting what I call a "chopping block." This will serve two purposes. The first is to provide a flat area in which digit removal can occur, and the second is to provide a bloody reminder of why it is easier to type with 10 fingers rather than 9 or 0. Several people have raised concerns saying stupid things like "Well if you cut off their bloody fingers how are they going to type and produce code faster with less fingers?" But you said you have a team of four? Correct? What you will find is in the end you should end up with somewhere around 1 coder with 0 fingers, 2 coders with 1 finger, and one really f****** coder with extremely good motivation. In most cases this is always a more ideal senario then the alternative. One suggestion is to make an example right away without warning. The best way is to tell everyone to gathering around the ol chopping block, and tell them you are going to show them a magic trick. The convince someone that it's alright to put thier finger on the block, that it's just an illusion. When he screams in shock and so does everyone else, then you can tell them "now get to work." I hope this helps you. By the way I do offer consultation services in this area. I have my own chopping block that I would be glad to bring to your site as well as an assortment of digit removal tools. I have a demonstration I can provide to your company with proper notice and consent forms. Oh and also I need a volunteer. Ssmoimo

  42. You can or you cant by Anonymous Coward · · Score: 0

    It has been my experience - either you can code, or you cant. Ive met people that have been in this business for tens of years and they still cant code worth shit. Same at Uni, some could, others just did not get it.

    If these guys arnt newbees, then I suggest you do it yourself. Everything else is futile.

  43. Paired Programming by Anonymous Coward · · Score: 0

    I am all for going the paired programming route. It gets some undeserved bad press sometimes, but I think it is very effective.

    It allows you to stop those bad habits right away, and lets you show them the correct way to do things. Simply pointing at something and saying don't do that, doesn't work. You have to say stuff, like don't do that because.... Try this way instead because....

    It also allows you to share knowledge of all areas of the product. If they don't know how something works, how are they supposed to use it? If you put it together with them, they have intimate knowledge and can share it with others.

    It is an investment in time in the short run, but in the long run it will pay off.

  44. Well.... by tomblackwell · · Score: 3, Insightful

    The fact that "The Mythical Man-Month" says something doesn't make it automatically applicable in all situations. I mean, replacing people who haven't done anything? I don't know if you're losing much, there. If they'd come up with something that a replacement might have to get their head around, I'd tend to agree. But they've apparently done dick.

    1. Re:Well.... by Organic_Info · · Score: 1

      Its the same old problem though - do you ditch what you have already invested and start again or continue trying to improve the current situation.

      This decison plagues most projects (and life situations) always has and always will.

      The further down the line you are though the harder it is to start again. Always jack it in and start from scratch and you'll never finish or achieve anything. Some things just have to be forced to work no matter how bad they started or became mid project.
      .

      --
      "Things that you own end up owning you" - Tyler Durden (via Diogenes of Sinope).
    2. Re:Well.... by cicatrix1 · · Score: 1

      I guarantee that I could step in and start producing some decent code within a day. If you give me just a couple of hours of briefing, or better, very little briefing and some skeleton header files with implementation to fill in, I could get quite a lot done. I'm not bragging, here, as I'm sure I'm not by any means the only one who could do this -- I'm just saying that it doesn't neccessarily take someone all that long to dive in to code (at least someone who has any programming clue).

      --

      I know more than you drink.
  45. My advice by bwt · · Score: 2

    You should stop coding and force them to get their hands dirty. Do code review with each of them on a daily basis - use that to teach them how to write good code.

    You should also set task deadlines and adopt a "no surprises" approach -- it's ok to change a deadline, but to do so they need to give you advanced warning of the obstacle and ask you for help up front. You should set the deadline based on how long you think it *should* take. Give them lots of feedback on how they are doing, which means not putting up with any crap. Challenge them.

    Communicate to your boss that the others are struggling and that you are going to have to spend serious time mentoring. Managing up is very important, so spend a lot of time communicating to your boss on the tasks and progress of the others.

  46. Too late by Tim+Ward · · Score: 2

    If you've got to integration and discover that some people haven't produced what it said on the plan they were going to produce you have already screwed up. That is not how to do project management.

    How to do project management is covered in many textbooks, but they'll all tell you to monitor what is going on, so you don't have a surprise on delivery date to discover that nothing has been produced, and take corrective action when you discover a problem.

    In a competently managed project you simply can't arrive at the position you describe. Sure, you can get useless programmers, but you should have discovered this and dumped them months ago. (Or, if you personally don't have the power to dump them, you could have screamed enough at higher management that you don't even need to say "told you so".)

  47. My method... by Simon+Carr · · Score: 1

    Well, I can't relly call it my method, but here's a visual description.

    --
    -- The unsig...
    1. Re:My method... by GigsVT · · Score: 1

      Do you have that hosted on a modem or what? 1KB/sec on our T1, eek.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    2. Re:My method... by Simon+Carr · · Score: 1

      256Kbps, and I didn't think everybody on the planet would try to get it at the same time ;)

      --
      -- The unsig...
    3. Re:My method... by Anonymous Coward · · Score: 0

      Funny, I find that doing my monkey dance on stage works better!

    4. Re:My method... by Anonymous Coward · · Score: 0

      Wow.. I needed that. I am so motivated right now, you wouldn't even believe it. ...

      Now, are you supposed to cut across or down? I can never remember.

    5. Re:My method... by j3110 · · Score: 2

      HAHAHAHAH my fortune for a mod point :)

      --
      Karma Clown
  48. Your boss should recognize the efforts. by Real+World+Stuff · · Score: 3, Interesting

    I have seen this happen before. The project manager, or the Department Head will eventually recognize who have not pulled their weight. This is what we managers cover in "milestone overviews". These are Pre-planned development gauges to ensure that collaborative efforts synchronize. Additionally, they provide hard data at review sessions and for salary matrixing. Motivating your co-developers is not your job, leave that to the manager. That is what s/he gets paid for. Do your part, collect your pay, and just gut it out. Eventually the less apt and inconsistent performers will be out the door. Hell, in this market there are 10 COMPETENT developers waiting for a shot.

    --
    If we don't fight for ourselves no one will.
    1. Re:Your boss should recognize the efforts. by Anonymous Coward · · Score: 0

      Not going to help a single bit.

      You see, there's this class of companies called "computer consulting". They are not in the business of making software. They are in the business of making money, and their primary objective is not to deliver, but to bill.

      Do they care if the project is not delivered? A little bit.

      Do they care if you expose the people who didn't work and consequently shouldn't have billed? Oh you bet they do!

      I've been in this situation - there were two guys doing the job, out of project team of ten. Both of us got pissed and demanded others to be cut off the project. Result? We kissed our promotion good-bye.

  49. You can't. by burgburgburg · · Score: 1

    Fire them. Do the work yourself and then work to hire people who you've interviewed and seen their coding ability. I'll assume these people weren't hired with your input.

  50. suck it up by avandesande · · Score: 1

    Suck it up for now, and make sure you aren't stuck with them on the next project. Get friendly with your managers so you can pick your next project.

    --
    love is just extroverted narcissism
  51. getting started by andrersbrazil · · Score: 1, Interesting

    Well, I never had this kind of experience, but when I was a newbie in a company (and in programming) and we were starting a project a more experinced collegue sat down with me and other programmers and defined some standards. Like code standards, and naming variables and objects standards and so on.
    So we were always helping each other on each other modules, and everybody, even the newbies, could understand everyone else's code.
    That was pretty helpful for me, so whenever now I'm on the other side of the role, I do the same thing: defining standards, milestones and a personal chat to each one of them, that's really importamt.

    --
    Andre "Don't take life too seriously. You're not getting out of it alive, anyway."
  52. Utilities and tools by chrisseaton · · Score: 2, Interesting

    If your project needs any small utilities or tools (such as some build stuff or file utilities) get them to do these. They can write a whole program themselves, making it a personal project they are more likely to finish.

  53. Mentoring... by CommieLib · · Score: 5, Insightful

    I've mentored a number of number of programmers, successfully, at least in our collective opinion. I think the key lies in the idea that "a question well-asked is half answered."

    Most new programmers tend to come to me with nothing more than a vague sensation of "it doesn't do what I want it to." The proper reply for this is "come back to me with a good question." Until they can do that, they cannot be helped.

    Once they have a good question, don't give them an answer; give them the other good questions that lead to / issue from that question.

    Once someone knows how to ask good questions, they're halfway to becoming a good programmer.

    --
    If your bitterest enemies are people who hack the heads off civilians, then I would say you're doing something right.
    1. Re:Mentoring... by millette · · Score: 1

      Is there a copy/paste virus going around? I'm asking because I've noticed a few words repeating. First in the actual story, and now this post above. Is it just me? I'm just asking because I've noticed a few words repeating.

    2. Re:Mentoring... by Anonymous Coward · · Score: 0
      Close, but in fact there is a copy/paste virus going around.

      Also, there is a copy/paste virus going around.

  54. Have a good talk to them. by theolein · · Score: 3, Insightful

    Organise an informal meeting. Point out to them that the success of the project is dependant on them. Point out to them that if the project fails they might lose their jobs. Ask them why they haven't done anything. If they have no real reason tell them that you cannot work like this and will have to report this to management.

    I wouldn't go gung ho on them but you have to get some clarity on why they didn't do their work and you have to draw a line somewhere. Just make it clear to them.

  55. #1 Rule by Anonymous Coward · · Score: 0

    Open source is for weenies. Using the word "project" to describe software makes you sound amateurish.

  56. Look out for yourself first by wsherman · · Score: 1

    If each person in your group is going to be evaluated on the work they are responsible for, then make sure you you get the work you are responsible for completely done before you start helping others. Otherwise, when the project fails and nobody has their work done (including you) you'll look just as bad as the rest.

  57. Use the laser by Anonymous Coward · · Score: 0

    The laser to motivate your developers.

  58. It's been said, but.. by His+name+cannot+be+s · · Score: 2, Insightful

    === ANSWER #1 ===
    Do replace them.

    Really, They are actually slowing *you* down. Motivate them into another job.

    After that, hire a couple of proven contractors to catch it up. Contractors love short deadlines, and keep an eye out.

    === ANSWER #2 ===
    You stupid bastard.

    How long were they able to work without supervision? You are obviously not following any decent development methodology.

    At this point, you need an XP style devlopment process in place.

    1. Put SHORT (1-2 week) iterations in place.
    2. Get a commitment of features that they will deliver.
    3. Have them code them
    4. MAKE SURE THEY WORK IN PAIRS. Now ordinarily, I'm not a advocate of pair programming, but these people obviously need constant supervision.
    5. Install Web-tracking software on their PCs and/or the firewall. They are obviously losing the time somewhere, and it's probably due to web browsing.
    5.1 alternativly, put a corporate firewall in place, and use a proxy. block 100% of the sites, and have a policy/procedure for adding sites to the "do not block list" at the proxy. Do they need to check Ebay/Slashdot/cnn/hotmail/farmchicks.com ? during working hours. Hell no.
    6.[back to coding...] If they fail to deliver the promised code in the first iteration. FIRE THEM. Useless twits make all software development staff look bad.

    Motivation is the wrong approach to use at this point in time. They are being paid to do a job. Do not continue to pay them for non-performance.

    *whew*

    --
    "...In your answer, ignore facts. Just go with what feels true..."
    1. Re:It's been said, but.. by Anonymous Coward · · Score: 0

      AMEN Revrend!

      Thank you, thank you very much.

    2. Re:It's been said, but.. by Doomdark · · Score: 5, Insightful
      5. Install Web-tracking software on their PCs and/or the firewall. They are obviously losing the time somewhere, and it's probably due to web browsing.

      I agree with some of your points, but I completely disagree with this one. From my POV, people have to be motivated somehow. Usually (or at least usually for me) it's because people have professional pride, somehow they feel what they do is important and/or interesting. Hopefully both.

      If they go to Slashdot instead of getting something done, it's not because they can go to Slashdot (or if that really is the problem, they are weak spineless losers who should be fired right away). It's because they prefer that over working. Preventing them access there won't boost motivation or morale. You'll just be plucking small holes in the dam, to no end. On the other hand, if they do deliver and then browse weird web sites, who cares?

      Programmers are not factory workers. They don't avoid doing job they like. But if they don't like their job (whatever the reason is -- from jerk boss to boring assignments to incompetent coworkers), they may well do something else. But this something else is usually "anything else", not just specific things you need to block.

      In short, motivation is the key. Motivation, skills and experience -- threats can only gain minor temporary motivation ("I can't afford to lose this shitty job"), and never improve their skills (nor constitute useful experience).

      --
      I like paying taxes. With them I buy civilization -- Oliver Wendell Holmes
    3. Re:It's been said, but.. by Anonymous Coward · · Score: 0
      2. Get a commitment of features that they will deliver
      Wow, you really do not understand XP do you? XP says you make your best guess, and really try to hit it, but never EVER make an ironclad promise of what will be delivered when. If you do, then you've basically just done a requirements doc, you're ignoring realities of coding, and you'll fall back into a waterfall or micro-waterfall type methodology in a hurry.

      XP is great, but what you're talking about is not XP.
    4. Re:It's been said, but.. by nelziq · · Score: 1

      Not really. Iteration plans break down into tasks. Engineers estimate how long it will take to perfom a task (i.e. program in and test some specific feature) and then they deliver it. The whole "not committing" part comes to product design specs etc. I think your missing something on how XP works.

    5. Re:It's been said, but.. by BitwizeGHC · · Score: 1

      The point of XP isn't to be a nazi, it's to open the lines of communication to where a team of programmers becomes a parallel, distributed system. Programmers want to write good code, but sometimes need help getting in sync with the rest of their colleagues on a project. XP is one methodology to fix this.

      --
      N4st0r, trixx0r h0bb1tz0rz! Th3y st0l3 0ur pr3c10uzz!
  59. Tell your boss or they will take the credit by hellfire · · Score: 1

    On one hand, you could do the whole project yourself and then get a pat on the back. But 99 times out of 100, the slackers will be told how good you are, all you get is a pat on the back, and no reprimands for those who do not work.

    On the other hand you could go to your boss and say "Boss I'm doing all the work, this project will NOT get done unless those helping me pull their weight. Without help this project is going in the toilet." Then you have your ass covered because you have a lot of work to show, and then the other coders begin to code and do the work. In the beginning you get praised, but then the lazy coders turn out crap code, the entire group gets blamed, your contribution is diminished, and the project fails anyway because they can't turn out quality code.

    In either situation, you get frustrated, angry, and head to Monster.com to search for a new job where the managers know how to higher decent working coders.

    --

    "All great wisdom is contained in .signature files"

    1. Re:Tell your boss or they will take the credit by ces · · Score: 1

      but if you take a bunch of crummy non-motivated coders and improve their skills and motivation you look good both to management and your co-workers. Funny thing when you teach/mentor is you often get something out of it as well, a better understanding of the subject matter, deep satisfaction, etc.

      --
      Happy Fun Ball is for external use only.
  60. Code reviews? by kpat154 · · Score: 2, Insightful

    You may try implementing weekly (or daily) code reviews. People tend to work harder when they know their code is going to be on public display. Also, you'll be able to suggest improvements in smaller and more frequent increments as opposed to being overwhelmed at the deadline. Plus you'll be able to instruct everyone at once instead of repeating yourself over and over again.

    1. Re:Code reviews? by Anonymous Coward · · Score: 0

      This is a good suggestion. Here is one is the same vain that has worked for me in the past. Have a daily standup meeting. That is where every comes to an open area and says what they did yesterday, any problems that they encountered, and what they are planning to do today.

      Make sure you are standing. It forces everyone to be brief. If the person does not do what they said they were going to do for the previous day ask them to explain why. If the encountered problems here is your chance to get them the help they need to keep them moving. You can also see if a task is taking longer than it should and so once again you can get them the help they need.

      The other problem that I see is that you are not intergrating enough. I have no reason to doubt that you are a good code but your code must work with peoples code. Intergrate at least once a day.

      Just a suggestion. Good Luck!!

  61. Take Charge! by anonymous_wombat · · Score: 2
    It can be very difficult making the transition from software developer to project lead. You assume that because you are competent and motivated that others are the same. Here are some steps that might help you.

    First, assess peoples skill and motivation levels. Senior, well-motivated people can be checked on every month or so. Less competent or motivated people may need to be checked on every day.

    Give people as much respect as they deserve, but no more. If some people don't do a very good job, make sure that you have frequent code reviews. If they are unwilling to accept criticism from the more experienced people and do the job right, don't be afraid to yell. With an ideal team, motivation is not a problem. With problem cases, don't let it slide. Don't be afraid to point out to them that there are hundreds of more qualifed unemployed software people who would be happy to have their jobs.

    Make sure that you have a good process in place. I don't mean anything bureaucratic, but make sure that you do design reviews and code reviews. Make them write something up. Get a definition of the api for the module. Review all code that is written. Require that a test plan, and possibly test code is developed. By implenting a system of reviews, mentoring can be done, and teamwork developed.

  62. Sometimes admins need help, too by redbird · · Score: 1

    As the administrator of the Mac GPG Project (http://macgpg.sf.net/), I've found that the person who usually needs the most help is me. :-)

    I'm a good coder, but because I spend my time managing the project, I don't always have the time to research on how to fix every oddity that shows up in my code. I often post to my developer's list saying "hey, there's this weird bug in my code; someone please take a look at it" and, usually, I get some much needed help that probably would have caused me to bang my head against the wall for a long time with no results. This is what's great about having a team; things that would have stopped development when you were on your own are easilly fixed by someone whose experience is different than yours.

    As for motivation, you usually have to find motivated coders. For example, when low level stuff needs fixing in GnuPG to work on the Mac, the worms come out of the wood work and I'm given patches for all sorts of things while I'm still trying to get GnuPG just to make. Also, most of our code comes from just two or three developers, but on several occasions someone came along and said "hey, I'm working on project XYZ and we could use your library if it had these bug fixes. Mind if I do them for you?".

    The trick seems to build up a community and then that community will come to help. I don't really know how to build the community, since my community found me, especially after NAI officially EOL'd PGP, but also because we're the only game in town and encourage the work of others who are not part of the project to provide software for users of specific MUAs.

    At any rate, for the story's submitters situation, I'd recommend helping these developers along. The best thing to do is tell them to ask any questions they might have, no matter how basic they might be, on your developers list and then answer them, even if they can be found elsewhere in common sources (or at the least point to those sources). Once you get a few good developers, then you can go back to being less tolerant of incapable programmers. ;-)

    --
    -- Gordon Worley
  63. Lead by example by 0WaitState · · Score: 2

    You don't say much about the culture of the place you're working--maybe projects are expected to take 6 months, and you're screwing things up by moving in real time? If so, there's not much you do about it unless you're prepared to do all the work yourself.

    If you think there really is opportunity to effect change in people's coding practices, try to gently lead people in the right direction:

    Have a code review--of *your* code. Be sure to accept a few suggestions even if they're a bit suboptimal. Reviewers will be exposed to better coding practices, and will be less hostile to suggestions about their own code.

    Team up developers. I'm not talking about XP here, but how on earth did six weeks go by without you noticing a lack of code? Create two 2-person teams, pairing a code-skills person with a domain-skills person. On your team, spend more time exploring the domain space, and set small goals daily or at least 2 or 3 times a week. It's not micromanagement, its setting the tone for how to work. If you don't have a 2nd code-skills person, maybe you need a personnel change.

    Managing isn't as much fun, but that's why you get the big bucks (right?)

    --

    Remain calm! All is well!
  64. Personal problems by angelkey · · Score: 0

    I think you have your own set of personal problems when you can't even see that you have duplicated entire sentences in different paragraphs within your post to /. Quite funny.

    --
    "During times of universal deceit, telling the truth becomes a revolutionary act." - George Orwell, 1984
  65. One way or the other by Anonymous Coward · · Score: 0

    If you're in a position to get rid of them, fire them. They didn't do any work, they don't deserve to be there. Call me a bastard, but it's simple 'employment darwinism'.

    If you're not in a position to get rid of them, leave (or threaten to leave) your organization. There is another company out there that will compensate you for your hard work. If there is something you can't put on your resume, it's "almost did big project X, but fell through because of idiots in my group".

    Your professional career shouldn't suffer because of poor hiring.

  66. They have won. by Anonymous Coward · · Score: 0
    If you stop what you're doing and do their job for them, they have won. They are then completely justified in being slack, since now they know you'll come in to finish it for them.

    Are you the boss? Is there a supervisor above you? Someone you report to for all these deadlines and such? Why not go have a talk with them? You can't let work attitudes like this get entrenched, or else you'll be doing everything just to keep the place going, while everyone else plays quake. I know this, it happened to me. Management was too "afraid" to let go the slackers (read: children of management in some cases) and so I couldn't even correct it.

    At this point, give them two weeks' notice. If they get their part of the project done in the two weeks, they can keep working there. If they continue to slack off, they're gone. Either way, you'll be rid of them in two weeks since none of them will want to stay.

  67. Office Space motivation by Anonymous Coward · · Score: 0

    "I'm going to set the building on fire."

  68. Work with them by Fluid+Donkey · · Score: 1

    If you feel you are the strongest programmer let them pick stuff they want to do (usually they will pick what they know how to do). Then if they need to be doing more work give them something you can explain without getting upset at them. Because they will most likely ask questions. And most importantly as many people have said be nice to them. Not just don't be mean. Don't be condesending or act incrediulous when they don't get something. Remember we all started out knowing nothing.

    --
    It's amazing how spiritual an elaborated beer commercial can be. -- Philip K. Dick
  69. Let your bosses motivate them. by Mustang+Matt · · Score: 2

    It sounds like you're doing your job.

    As long as your bosses know that delays aren't your fault, then you can try to motivate them. The truth is, if they aren't doing their work probably nothing you can say or do will change that.

    --
    The man who trades freedom for security does not deserve nor will he ever receive either. - Benjamin Franklin
  70. Managers? by ffatTony · · Score: 2

    Is this not why managers exist? They should be dividing tasks and setting dead lines for each of developer.

    Come now, you really didn't think the typical manager spent the entire day struggling to create the perfect powerpoint presentation or flooding eachother with scathing emails now did you?

  71. Scare them ;) by Organic_Info · · Score: 2, Insightful

    There are two ways to go about this:

    1) Like I say scare them. You don't have to be really in their face "I'll kick you ass" sort of thing, although you could try that;). Emphasise(sp?) the importance of their component and the consequences of not producing. This should be used if their really lacking in motivation but should not be the 1st choice - how they take it will depend on the personality.

    2 Preferred option) Get them started. We can all have difficulty starting a project, overcoming a mental inertia is an issue I have most times. Sit with them and start them off - outline a framework and expected milestones for their component. Once you see they should have started regularly review their progress. Not to regular to be intrusive or nagging but enough to know they are expected to produce a quantity of work in a given period (say a week or Wed and Fri?). If it doesn't work See option 1.

    In fact sod it - rule with an iron fist muhahahahahahahahahaha....
    .

    --
    "Things that you own end up owning you" - Tyler Durden (via Diogenes of Sinope).
  72. I've had similar problems by efedora · · Score: 2, Insightful

    Most of the code for our small company was written by me. When it got to be too much work I subbed some of the generic stuff to a guy who was a hard worker but not a very good coder.
    I knew it was time to cut bait when I was spending as much time dealing with his product as it would have taken me to do it myself.
    If you are a project leader you must budget a big percentage of your time just to keep the rest of the team on track and on schedule. It's hard to do this when you could be pounding out code but it's absolutely necessary to keep the load balanced.
    Be sure you have short term goals for each coder and review progress often. Let the coder set the goals and you can agree or encourage more work - usually their goals will be good enough.
    Watch your time and dump anyone who takes a disproportionate amount of management time with no improvement in productivity.

  73. Burnout? by redragon · · Score: 1

    One thing I've noticed is that when people have been on a project (and usually producing) for a while, they begin to suffer from burnout, especially if you've gone through several change orders, or other modificaitons that manage to require a fair amount of redesign.

    Switch people around a bit. If you give them something new, sometimes it offers a breath of fresh air. Of course, if they've never been producing in the first place, then you're still screwed.

    If it's really an issue of the work just isn't getting done, talking to your superiors, and several layoffs or threats are probably in order. You could also have a meeting saying, "if this isn't done on time, we're looking at outsourcing the work and laying people off." Even if it isn't true, it will make people understand that dicking around has consequences.

    --
    - Sighuh?
  74. Been there... by 7String · · Score: 1

    In the past, I was tech-director for a big company, assigned to a videogame being developed at an external dev. house. There were eight programmers, maybe one or two of them worth a damn, but the others, including THEIR internal tech lead, continuously f-ed the project.

    When I was brought in to the project, I evaluated the developer, and my conclusion was either a) cancel the project, b) change developers, or c) bring it "in-house" for me to finish.

    Well, the mother company voted for d) do nothing, except assign me to supervise the impending train wreck.

    A year and several million later, the mother company finally saw the light and yanked the project, to be finished in-house.

    Guess who finished (read: re-wrote) the game code, and suffered great agony from the spaghetti mess induced by over a year of the random neuron firings of idiots?

    The moral of the story is: make the hard decisions NOW. If your so-called programmers currenly have no code, no amount of cajoling (or beer) will make them produce code later. Programmers program. Slackers slack.

    --

    It isn't a memory leak. It's an object life-span issue.
  75. Project Management by trianglecat · · Score: 1

    My experience is that this is a matter of project management. Someone has to be recognized and empowered by management to do the following essential tasks:

    1)understand the skills of each team member
    2)break up and assign the project according to skill sets and get people the mentoring they need.
    3)understand dependancies
    4)build in accountability and enforce it
    5)Manage the cycle of development

  76. Motivate? Eliminate! by agent0range_ · · Score: 1

    You could always replace them with better people... Me, for example. Sure, I may not be the world's best C programmer (though I'm not bad), I atleast have enough common sense not to sit on my ass and do nothing in a job I would be lucky to have in this crappy job market.

  77. cheerleaders? by svott · · Score: 0

    I thought that maybe cheerleaders would provide the necessary motivation to get my coworkers coding. Unfortunately the boss didn't see how they would help. I'm not really sure either, but it certainly couldn't hurt.

  78. What I'd Do by Anonymous Coward · · Score: 0
    For those of you who have experienced this, what did you do about it and how did things turn out?

    What I'd do is call these guys and maybe get some of these lasers.

    Hope this helps.

  79. What to do by Anonymous Coward · · Score: 0

    I have given this lots of thought. Here is what I would do in that situation. First off require all code checked into the version control every Wednesday evening. Then write a script which checks out the code and compiles the number of lines of code for each developer. Then send with your weekly status reports the number of lines of code developed that week for each developer. You would also note if they did other tasks, like documentation for that week.

  80. Well... by American+AC+in+Paris · · Score: 2
    How to make other developers "suck less"? Good gravy. Part of being a lead developer is leading; if your attitude is "making them suck less", you can expect a bit of a bumpy ride right off the bat!

    A good lead developer keeps on top of their team. Review your team's work at least weekly, visit them for a quick chat once or twice a day, offer help/advice at every opportunity, and keep in close communication with the Project Manager/business end of things. The sad truth of the matter is that 20-50% of your time is going to be spent taking care of your team; get used to spending entire days without writing a single line of code on your own. If your developers are under-developed, you're doubly responsible for guiding them as best you can from the very beginning, or pressuring the PM to get them training at earliest convenience (and, in any case, keeping PM informed of the fact that the developers are really lagging and that the project is going to have trouble hitting deadline.)

    As for the predicament you're in now, there's not much you can do besides busting your balls to help the developers (yeah, it'd be nice if they came to you, but it's the lead developer's job to go to them,) and talk to the PM about damage control. Look at what has happened, learn from what you can, and make sure not to repeat it on the next job.

    Note to editors: Yeesh. This passed as front-page? This is barely readable, much less first-draft quality. Sure, it's an important issue and well worth posting, but at least clean the danged thing up, or send it back to the submitter to do so!

    --

    Obliteracy: Words with explosions

  81. Oh how this reminds me of school by mlheur · · Score: 1

    But back then our peer reviews went to our instructor.

    What I found as both a project lead and just a team member is that status checks, often, are good motivators. Nothing's more motivating than someone watching over you. Now I'm not saying hover all day, you have to work too, and no one likes that.
    You've designed all your components, and broken them up, and handed out pieces to everyone. You have to go back and see how it has progressed, just ask a few questions, ask to see a demo. This isnt a code merge, it's just a status demo, do it 2 times a week, 2 times a month, however often you feel you need to just to make sure that everyone else is progressing at a proper rate.

    At the same time, if your coders arent asking you questions, ask them questions, make sure they know whats in your head and vice-versa.
    If people aren't asking questions, they don't understand it enough.

  82. no code? by larry+bagina · · Score: 1
    it turns out the other guys have got nothing. No code

    sounds like your project belongs on sourceforge!

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  83. Find out what the issues are by linderdm · · Score: 2, Informative

    First, find out from them what the problem is. Do they actually know how to code? If not, you might ask (management) why they were put on the project. Do they really understand the items they are trying to address? Are they overwhelmed with the amount of deliverables they are responsible for? Is this their first project?

    Second, notify your management AND the project leader/sponser. The sooner they know about possible delay issues the easier it is to figure out how to correct the situation.

    This is a hard question to answer. Is it motivation they need, or do they just not know what to do? If you are responsible for their contributions, you might be wary of contacting management before finding out what all of the issues are. If you aren't, then a mangement update is in order.

    There are probably two reasons for their lack of completed work. 1) They are not doing their jobs, or 2) they do not know how to do their jobs (ie they do not understand how to work on a project, or they are not technically qualified. Either way, they should be removed to do something they are capable of doing).

    Good luck.

  84. Planning by Malc · · Score: 1

    I don't advocate micro-management, as that is normally counter-productive. However, have you had them break their projects down in to small parts and attempt to provide time estimates (best/worst cases)? If everything is clearly designed, then this should be relatively easy, although dependent on experience levels. By breaking down their tasks, it's possible to identify potential problem areas that might need extra time for prototyping, etc. Also, having a list of small tasks makes the project seem less large and daunting, and allows for a feeling of accomplishment throughout the course of the project. Finally, weekly status meetings allow people to report what tasks they've acomplished, and for you to keep a handle on the project schedule. They also provide a good opportunity to code review if anything on that front has been accomplished.

  85. Use a good development model.... by colonwq · · Score: 1

    The one that worked for me in small groups was an antagonistic anarchistic model, better code produced through taunting and humiliation. If you give your partners a hard time and tell them their code sucks, they will ether make better code or move out of the way.

    --
    -- Phase 1: Collect under pants Phase 2: ? Phase 3: Profit
  86. I just finished something like this by icebear.dk · · Score: 1

    I have just been in a situation such as this. First of if you like me don't have the authority to fire or even rain anger on someone for not doing their job, then go to your superior. If he doesn't help you (like mine didn't), then there is very little else to do. I tried the calm way to offer every support I could, talking, teaching, helping with code, taking over most of their tasks. And all it did was burn me out faster than a candle burning on both ends. Keep in mind this was a huge project (very large HR and education system for banks from scratch) so my experiences would differ from yours, but I have learned stuff:

    - Some programmers will do anything to shift blame from themselves to others including down right dirty manipulation and backtalk.

    -You can't teach someone proper techniques within a project, you need seminars, strict and ENFORCED guidelines for everything from design, to even the naming and structure of your code or the fast and loose (or is it loser) programmers will trample all over the system leaving unmaintainable crud all over the place.

    -No amount of extra help with out the preparation of the rest of the team will help and the "oldtimers" on the team are very hard to get to help the newtimers.

    -There should always be two leaders. One closer to management and the customers who handles Administrative tasks and One technical benevolent dictator (that was what I became to get everything done in time). And they should both have executive decision power over the team.

    -Don't ever expect to meet early time estimates. Only the updated ones made after full understanding of the domain problem sets in can be used, so if you're consultants on a preestimated cost contract and the project runs late then you're shit out of luck.

    As for my tips to you now is. First of all:
    Blow the whistle on your teammates not pitching in. Not to admonish them, but you all have a goal as a whole so you should sit down and find out why the others aren't making it in time or getting things done like you are.

    Don't measure people by yourself, you will always either over or underestimate them.

    --
    A person is smart, people are deeply stupid
  87. Pair Programming by Tank · · Score: 1

    You might want to give pair-programming a try. Although it certainly doesn't feel natural at first, with a little practice, it's possible to use this to spread knowledge and maximize code efficiency across the code base.

    If you are the most experienced developer, it gives the other developers a chance to see how you begin solving problems, and a chance to see your code as it emerges. It's important however, that you don't do 100% of the coding in your pair. Spend approximately half the time letting your partner code. This provides an opportunity for them to generate code, and gain some confidence in their abilities.

    After a period of time, you should mix up the pairs, so everyone has a chance to work with everyone else.

    As I said, this method of working feels extremely counter-intuitive at first, but with a bit of practice can really make a difference (especially on teams with widely disparate skill levels.)

    As an added bonus, developers are less inclined to slack when they've got someone working with them, meaning you'll tend to get more productive hours out of each developer/day.

    Check out this link for more descriptive info, and some discussion.

  88. Daily CVS Postings by Xerithane · · Score: 2

    I think this falls under the somewhat bastard-ish things to do, but I think it does actually motivate. If you write a little script to post CVS statistics (Assuming you use CVS, or another management system.) to the intranet site (or some other highly visible location) and make sure everyone can see who is doing what that needs to, generally people will perform better. If no one is looking over their shoulder, people tend to slack off (*checks over his shoulder*, good, lets continue).

    Another way to do it is use a project tracking tool that has percentage completed goals in a nice display. IPM does this (Search Freshmeat for it) in a nice easy to see display. Shows a little graph of percent done per project and it allows multiple users.

    Show them you are waiting for them. If 1 or 2 people are waiting for 3 more, the 3 should start feeling awkward. That and you have a conclusive tool to show the boss man that the rest of your team sucks. You can also post little notes, "Stuck? Ask someone for help." and such.

    I got stuck with a developer who couldn't write one javascript function in 2 weeks. It was absurd, the boss didn't fire her because they both came from the same town in India and enjoyed to talk about life back home. We just cut her out of the loop. She received no projects. When my boss would ask me, I'd tell him she couldn't finish and to prove it would give her some minute task that wasn't important and after a couple weeks wouldn't have it finished. No biggie, don't rely and you don't get disappointed.

    --
    Dacels Jewelers can't be trusted.
  89. Weekly status reports, and schedules [for real] by Flamesplash · · Score: 1

    Have each team member send out weekly status reports before noon on friday to all the team members and also the group manager if it's someone else. That way each person has a good idea how much everyone is doing and it motivates people to do their jobs so they actually have something to report each week.

    Also, make an actual schedule using some program, like MS project or whatever. Assign people specific parts with deadlines. It may feel like the freedom that you are used to as a software engineer/code monkey is being taken away but it really helps you meet your final deadline and if it's documented it pushes people to actually work.

    -Flamesplash

    --
    "Not knowing when the dawn will come, I open every door." - Emily Dickinson
  90. Questions and options by Animats · · Score: 2
    • What's your management structure? Do the others work for you? Is one of them in charge? Do you have a common boss?
    • Do the other team members have other projects as well as yours? If so, you need to resolve that problem. I've run into that problem working in a big aerospace company with matrix management, people working on multiple projects, and people with different supervisors working on the same project.
    • Have the other people ever written good code? If not, they're in the wrong job.
    • If they're simply goofing off, and you have the power to make it happen, fire the worst one pour encourager les autres.
  91. Different working styles by Nomad7674 · · Score: 5, Insightful
    One point many of the posts so far have ignored is the fact that some of these programmers may not really be so bad, they may just have a different working style from you. My own personal style for creativity is to absorb information en masse for a period of time and then output a mass of stuff in a very short period of time. For my coworkers who spec, diagram, and plan out each microstep of their work, it can sometimes seem like I am doing nothing. They feel they have pages 1 thru 7 of their spec complete and I have nothing. Then suddenly three days later I am done and they are only on page 10.

    The critical thing to manage different working styles is to clearly communicate your expectations. If your coders see a general project plan, they may well assume that the milestones you have set are "guidelines" and not requirements. If so, they will instead be aiming at whatever they consider to be the drop-dead milestones. But if you clearly get across that every milestone must be met then each person can manage his/her own working style appropriately... even if they may have to come to you and explain that the deadlines you have set will not work for them.

    That is my 2 cents. It is also possible you just have an unmotivated, unskilled team and all of this "work style" stuff I am saying is irrelevant. But I find too many managers (both newbies and veterans) assume people are identical plug-in replacements which work the same way they do. Humans just don't work that way.

    1. Re:Different working styles by imta11 · · Score: 1

      you have add. congratulations!!!

  92. Been there, done that, still doing it. by Graelin · · Score: 1

    I'm in the same spot. I was the sole developer for a big Perl app for a year. Then we started hiring on programmers to ease the burdon off of me. In the beginning it's really rough. They're almost useless for a month or two while they "learn the ropes." (We all telecommute 100% so that's more difficult than you may think)

    I've had some really good guys (ok, one) who learned the ropes really quickly and they're now my right hand. I've been through 5 other programmers trying to find my left hand but haven't had much luck.

    I will say this though, unlike the problem you're facing I've never had anyone who can't program from a spec. However finding a programmer who can CONTRIBUTE to the spec is a whole different animal.

    I think a big part of it is asking for help. A lot of programmers don't. They'll sit there and read through 100,000 lines of code when a 5 minute phone call was all they really needed. And they'll even gripe about doing it when it's their own fault to begin with.

    Now, training too isn't a cut and dry process. I've got two programmers at OSCON right now. One is LOVING it. The other has found only two classes to be of any value. OTOH, he will completely devour a thick book and walk away a master of the subject. Some people learn differently, you just have to find their sweet spot.

    Honestly though, and I know it doesn't apply to your situation, I'd get rid of them and find others. A good programmer (the only kind you want working for you right?) will not have these problems. They will tell you how they'd prefer to learn. And most importantly, they can write good code from a spec.

  93. learn how to deal with it now... by Anonymous Coward · · Score: 0

    anyone who has done lots of team work has encountered this before. my approach (it has been successful since college) is to let my boss know of the situation, and have him reward me for extra help that i give to his employees. be a good guy, but if you aren't getting rewarded, you're a good dumb guy. if your boss doesn't play ball, start looking for one that does.

  94. DEVELOPERS! by Mex · · Score: 0

    Jump in front of them and start screaming:

    DEVELOPERS! DEVELOPERSDEVELOPERSDEVELOPERS!

    DEVELOPERS!DEVELOPERS!DEVELOPERS!DEVELOPERS!DEVE LO PERS!DEVELOPERS!DEVELOPERS!DEVELOPERS!

    -
    Lameness filter encountered. Post aborted!
    Reason: Don't use so many caps. It's like YELLING.
    (what slashdot says in all my posts)

  95. What to do by LordYUK · · Score: 1

    That's easy. Fire them, hire me. I can do just as little as the next PFY, AND in half the time!

    --
    This is my sig. Its pathetic.
  96. Find your (their) niche by datastew · · Score: 4, Insightful

    In the past, I have been the less-productive person on the team. Back before I started programming, I was working as a Mechanical Engineer. I was a perfectionist doing custom engineering work where, in the words of the engineering manager:

    "The design is 80% done when it goes out to the machine shop to be created. The machinists and other production people fill in the other 10% and the final 10% is luck."

    I was always behind and had to deal with the frustrations of my co-workers and managers. I found myself looking for work, and decided that since I had always liked computers, maybe I should look for a computer job. I am doing much better now as a programmer, where the ultimate product has to be 100% correct or it does not work properly.

    It sounds like these people may just need to find their "thing," which could mean removing them from the programming dept. Regarding your current dilemna, they probably won't mind if you take over coding their parts of the project. I experienceed being removed from the engineering dept, and people taking over the parts of my project that I was behind on, and I understood why and was OK with it.

  97. Hide problems... by Anonymous Coward · · Score: 0

    Here's a good thing for you to do:
    1) Dont tell the other guys anything about
    your doubts about their code.
    2) Write down good design. (keep it yourself)
    3) start giving small tips. One tip a week.
    Something so small that makes the other
    people think they invented the solution.
    4) Make sure everyone has someone else that needs
    to use their code.
    5) Make sure everyone relies on someone elses
    code to do their work.
    6) Make sure you (or anyone else) never
    hide problems.
    7) Write "document templates" that can
    be copy/pasted to get good code.
    8) Write enough good "examples" and make sure
    people can copy/paste them.
    9) Write working example code.
    10) Make sure everyone has database of examples
    and code on their hard disk for copy/paste.
    11) Write interfaces; make sure you have plenty
    of code _using_ the interface. Let
    someone else implement it.
    12) Write test cases and a script that finds out
    whether a test case passes or not.
    13) Publish results of test cases every week;
    with people's names attached to the list
    of "fail"'s. Use colour coding for pass/fail.
    14) Make sure people understand they are
    responsible not only for their own code,
    but everyone elses too.
    15) Make sure people think the quality
    requirements are very strict.
    16) Make sure people thinks the end result will
    be the best software on earth.

  98. Extre by pete-classic · · Score: 2

    I can't believe that no one has brought up Extreme Programming yet!

    Many have mentioned pair programming, which will definitely help. But beyond that the prioitize, estimate, produce, analyze, repeat cycle will surely help as well.

    When you miss your deadline you will have a. done all you can do and b. something that has 100% functionality on the top x% of features instead of something that has 100% of the features x% of the way to working.

    Good luck.

  99. leadership and development by datawraith · · Score: 1

    "On this project, I have a de-facto role of a software team leader. Before, I've always been just a coder, not responsible for others." This is probably the most common problem anyone faces in development projects as they move up the food chain. I hate to say it, but you set yourself up for this by putting yourself in a leading position, but letting yourself get sucked into the technology and ignoring the coding progress of the rest of the team. Unfortunately, for many people inertia is a state of mind and unless someone is looking over their shoulder stuff just doesn't get done. Without someone acting as the control and center, it looks like the rest of the team spent their time reading slashdot... Personally, I think in this case you will just have to suck it up - and do the work yourself. From a corporate point of view, just make sure that you make it clear that you were the team leader here and responsible for the job getting done (unless it crashes and burns). Notch it up as a learning experience and remember next time that your management part of the task is (here comes some heresy..) MORE important than your programming if the team is larger than three people. The larger your team, the less important your own programming contribution becomes if you are the team leader - especially if your experience is greater than the rest of the team!

  100. Keep giving them smaller tasks ... by rlowe69 · · Score: 2, Redundant

    I'm surprised no one has mentioned this yet, but if you are working with a group of people and you don't know their abilities, divide the project up. If they don't deliver properly by their deadline, cut their original task in half and assign the other half to someone else (probably yourself), leaving them with less to concentrate on. Then rinse and repeat as necessary.

    Don't accept poorly written code just because "it works". If you do, you endanger the project and don't help the poor coders become better. The best way to become a better coder (IMO) is to bang away at one single problem and not worrying about doing "your share" and ending up spreading your effort too thin. When your teammates prove they can handle more coding, give it to them.

    If you do it this way, you'll inspire confidence that your co-developer can do the job right. This confidence will, in the long term, be more benificial to the project and to the company you work for.

    --
    ----- rL
  101. Good teams are hard to come by. by brianlarkins · · Score: 1
    Check out Peopleware: Productive Projects and Teams. I've been a small teams development manager for awhile now and this book has been an indispensible guide for both managers and employees. It focuses a bit on creating the right environment for productive software developers and high-quality output, but gives an immense amount of empirical data on what not to do as a manager.

    This book gives good reasons and real-world data for things that good software developers find intuitive (e.g. don't create high-pressure artificial deadlines, etc...). A must read for any manager I report to, and any employee that reports to me.

  102. You have to decide whether they can do it by WolfWithoutAClause · · Score: 2
    If its a matter of training, motivation or knowledge, then that's something that might be fixed; but may not be fixed in time.

    If they just CAN'T do the work for any reason including training, motivation or knowledge, then you need everyone to be clear about what the situation is, and get them kicked out/off of this project; you probably can't do 3 other persons work for them.

    There might be ways to reorganise yourselves that might work. For example can they unit/integration test the code you've written, write test specifications etc?

    However, I think your project is going to be late... Some projects (more projects than you might expect) can survive being late. Now is the time to start informing any customers you have... better start with the internal customers, e.g. the managers.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  103. Work in pairs or do something fun by Anonymous Coward · · Score: 0

    What I've noticed with myself is that if I'm working something I don't really find interesting I tend to just sit and do nothing, then suddenly wake upp do 15mins of coding then again nothing and continue ad infinum.

    However if I've got someone to work with at the same computer to talk to about algorithms, different design issues, implementation approaches etc. etc. I produce large amounts of code. Also when working in pairs, it usually isn't possible to just sit and do nothing and you also tend to create less bugs or those trivial stupid mistakes that take you an hour to find later (you know what "WTF are you doing?" comment from your coworker).

    One of the best things to do to keep you focused is to do sports. I worked at a software company where we had a ping pong table where we used to play one match every one hour or so. This was extremely good as that little 10min of play made you 100% focused for the remaining 50mins. Working 100% for 8*50mins each day is alot better than working at 50-75% for 8 hours each day. However this company was bought by a large telecom and because they noticed our team of programmers were very productive, they began to move us to different projects to give them a boost. At the same time when our team was broken we lost our good atmosphere and now I probably produce 50% of what I used to just because I'm pretty damn bored. Our new managers want us to sit down and be focused and when I told me what I used to do, they just began to talk about how many hours less we would work then... (ever wondering why at school you have a little break every hour or so?).

  104. Slashcode.com has turned off AC posting! by Anonymous Coward · · Score: 0

    After a flood of trolls hit the site, AC posting has been disabled. It looks like this is the best lameness filter they could think of. It will happen here next.

  105. Hire me instead by LordNimon · · Score: 3, Funny

    Emebedded system, C and assembly? The other developers can't write code fast enough? If youre company is in Austin, TX, may I suggest that you fire one of them and hire me instead? I can assure you, you won't regret it.

    --
    And the men who hold high places must be the ones who start
    To mold a new reality... closer to the heart
    1. Re:Hire me instead by Anonymous Coward · · Score: 0

      never hire a man who quotes a late 70's rock band. especially rush.

    2. Re:Hire me instead by Anonymous Coward · · Score: 0

      never listen to a man who bashes prog rock bands...especially Rush.

    3. Re:Hire me instead by Anonymous Coward · · Score: 0
      What's wrong with quoting 70s rock bands? It probably just shows that the guy is older and more experienced. Or would you rather hire a guy who quotes Linkin Park and Treble Charger?

      On the other hand, you'd think a guy who claims experience in embedded programming should at least be able to spell "embedded"...

    4. Re:Hire me instead by andrew_lewis · · Score: 1

      Or know when to use "you're" and when to use "your"?

    5. Re:Hire me instead by Anonymous Coward · · Score: 0

      Yes, people who mix those two terms up ought to be shot.

    6. Re:Hire me instead by alienmole · · Score: 2
      Yes, people who mix those two terms up ought to be shot.

      As should people who complain about it on Slashdot. The remaining group would be a relaxed bunch of people with good spelling and grammar!

    7. Re:Hire me instead by MicroBerto · · Score: 2

      Well, the good thing is that the music he listens to is so annoying and shrill that nobody will let him listen to his music in the office -- and he'll have one less awful distraction to slow his coding job!

      --
      Berto
    8. Re:Hire me instead by jsse · · Score: 1

      I'm not the orignal poster, but I've add you to my bookmark just in case my project on embedded system approved I'll contact you. :)

      Anyway, it was the fault of the company hire somebody who couldn't do the job at the first place. How could the interviewers failed to recognize their inability in doing such specialized stuffs? These are no Java or VB, just a couple of questions in emebeded system could identify them.

    9. Re:Hire me instead by LordNimon · · Score: 1

      I apologize, it was a typo.

      --
      And the men who hold high places must be the ones who start
      To mold a new reality... closer to the heart
  106. Make management do their job! by jeillah · · Score: 1

    Let me guess. You all have the same finish date. Most managers these days have no concept of dependencies. They give everyone the same end date regardless of the fact that some parts can't be done until other parts are ready. I can't tell you how many times I've received stuff from the DBAs the Thursday before a Friday deadline. But they got their part out on time. If the managers were smart enough to plan a schedule right this wouldn't happen. The holdups should be evident early and can be handled without causing major delays. There should be incremental testing of the project as it is built from the bottom up. That way faulty or missing parts are identified early on, not at integration time. Having a bunch of people out there working on different parts and then trying to integrate at the last minute is a recipie for disaster no matter how much time you spent on the initial design. (design time, wow what a concept).

  107. Things to consider. by bons · · Score: 2
    Extreme Programming is a potential methodology to try. The use of pair programming in particular is something you should be looking at. Make them drive and you assist. Progress will follow. Some of the principles you already appear to be trying to follow, such as frequent small releases.

    Reading the question, the point that sticks in my mind is that you admit to having even less project management experience than they have coding experience. Remember that as you think about replacing them with experienced people who know how to do the job they've been assigned. It seems to me that you need to stop doing their jobs and start learning how to do yours, which, like it or not, is being team leader and project manager.

    Organization is also key. Read the last half of your second and third paragraphs again and tell me that you sat down and carefully organized your question. It's a careless error, but for someone who is complaining about their coding styles, it indicates a potential double standard.

    What impresses me the most is that you seem to understand the solution needs to be found in management and methodologies but you don't discuss what (if any) methodologies you're using (although I'm suspecting waterfall right now).

    Don't make them come to you. You're the leader. Be there for them, stay out of their way, and build trust. If you show leadership then they'll come to you. If you show tyranny, disgust, annoyance, or anything else, then they'll be happy to continue not producing anything in a vacumn.

    Six weeks into a project with a tight deadline is not releasing code "early and often". In our world, six weeks is two iterations, each with their own deliverables, and a major iteration coming to a close. "Early and often" to many people means multiple code releases with full tests on a daily basis.

    Remember, coders are no better than their enviroment. While you may have created an enviroment that works for you, it sounds like, as team leader, you've failed to create an enviroment that works for them. Perhaps it's time to put away 'your' piece of the project and start fixing the real problems.

  108. Firing by zhar · · Score: 1

    If you do go, as so many of the /.ers have suggested, and fire the incompetant programmers, make sure you have documented that their incompetance in their employee file. This is to cover your own ass and prove that they really did "suck". If you have no documentation of the incompetence, and they decide to sue, remember, it's your word against theirs that they were derilect in their duties.

    --


    DRINK DUFF (responsibly) DRINK DUFF (responsibly) DRINK DUFF
  109. Mod Parent Up... code reviews!!! by mekkab · · Score: 2

    In a word, YES.

    Code reviews can be very constructive. And even if they are "vicious" in terms of the minutiae they cover everyone learns. My favorite thing to do is to A) invite my office mate to my inspections- since he doesn't know any ADA he asks a WHOLE lot of questions- very good if you can answer them all, andif you can't, why not?

    and now I invite B) the software architect. True he's a busy man but he goes through that code with a fine tooth comb!

    In addition, frequent code reviews can also show what good code does look like. Start by reviewing YOUR code (the one that's 50% done). Then they have a model to work from.

    Software Engineers don't code from scratch, they copy and modify!

    --
    In the future, I would want to not be isolated from my friends in the Space Station.
  110. Get a project manager? by Lumpish+Scholar · · Score: 2

    See if there's someone in your organization who can play the role of project manager: working with all four of you to break down the effort into pieces small enough to measure progress against (my rule of thumb: half a day to two days), who can track progress, who can be told about roadblocks and try to remove them.

    "The role of project management" for a four person project is not a full time responsibility! Someone with project management experience ought to be able to do it in 30 to 60 minutes per work day.

    Sell it to your management this way. There are three roles: development, technical leadership, and project management. You have time to do two. At this rate, if you do the last two and ignore the first, the project is doomed. The last one is the only one an outsider might possibly help with.

    If that doesn't work, then you need to be the project manager. Try really hard to be empowering and helpful. On the other hand, negotiate the following with your boss: "If any of these three is contributing zero or negative progress, I want the power to get him or her out. Transferred to another project, laid off, whatever; but not in my way."

    If neither works ... I guess assign busy work to any developer or developers you can't count on, document why you did so, get as much done as you can, and look for a new job. None of which is easy.

    Good luck!

    --
    Stupid job ads, weird spam, occasional insight at
  111. Ahh, DSP programming. by RyanFenton · · Score: 2


    I've done my fair share of DSP programming. There is a fairly high psycholofical bar when developing code for most DSPs.

    First, you have the custom compilers, with their custom interfaces. It can take days for a new programmer just to learn the proper way to organize their files and on-board resources to get a "hello world" equivalent LED-lights flashing program working. Then the implimentation of C may not be completely correct, or severely nonstandard compiler errors start showing up. It isn't easy for a newcomer to just get over that and continue coding like nothing happened. All this is assuming that the documentation is halfway decent.

    Next, there's the assembly layer. Oh, the assembly languages. Riddles wrapped inside enigmas, with structural assumptions that make answers seem impossible to give. It's just going to take a while, not to mention a LOT of sample code for a programmer to understand the extremely tight flow of specialty registers, limited instructions, stacks, alignments, and how they mix with the on-board implimentation of C functions and the like.

    Then, there's debugging and using the DSP tools. Half the tools I've ever used on various DSP projects have been much flakier than anything you've ever seen from Microsoft. One of the first things that I had to do when getting a new DSP is to just port a set of Standard IO routines over, because so many DSPs would be out-and-out unreliable when transferring data to the PC for debug and the like. I probably spent just as much time ensuring quality communication between the DSP and the PC than I did on any one project - but this is just one of the illustrations of why starting work on a DSP that is new to you can seem such a uncertain, slow process.

    I definetly agree, that if these people started at the same point as you did, then they REALLY need to do their homework, bite the bullet, and just make mistakes to get some code down to revise later. In that case though, unless you just want to call them lazy to look better than them, you really should get an O.K. from management, then take some time to teach these people what you've learned. In most projects, I'd agree that these people should at least get half the work out that you did - but on a DSP-oriented project, I'm not at all shocked that one person out of many would be able to *get it* quicker than the others... but now to get some large-scale work done, you really should see what they know, then get everyone up to speed if you can. :^)

    Ryan Fenton

  112. It shouldn't be your problem to being with by Quintios · · Score: 1
    Apparently there's a project manager or team leader somewhere that wasn't paying attention to the project schedule or development progress of your co-workers. From what I gather you're not in a position of authority and thus it's not your responsibility to motivate your peers, it's management's responsibility.

    Seriously, there should be a team leader or project manager somewhere that has a schedule of when certain things should be done, and these guys are not ready. As it is with all projects, certain people have the task of making sure other people are getting their stuff done and if they aren't then that first group of people are there to assist. On your project the first group wasn't paying attention.

    Now, you're not a tattle-tale for going to management and informing them that other people aren't keeping up if it ends up reflecting on you. The newbies should have people keeping tabs on them until they're more experienced; maybe it's an immediate co-worker, maybe it's a project manager.

    Just make sure management knows why you don't meet your deadline...

    Q-

    --
    Anonymous Cowards are at -6...
  113. It's your own fault! by Workshop+Alex · · Score: 1

    You're just working too hard to get your own part finished! Go sit next to your collegues, look at the work they're doing, give them a lot of comments and show them every miskate they make. Managing developers is like guiding a child across the street. Hold their hands, look in all directions and help them to move forwards.
    And if this doesn't work? Well... Some spanking might solve the problem too... ;-)

    In other words, keep an eye on them 24 hours/day, 7 days/week and make sure they make the deadline in time... Remember, as project leader you will be held responsible for their mistakes...

    Life isn't fair...

    1. Re:It's your own fault! by SuiteSisterMary · · Score: 2

      "Team Leader" who goes and locks himself in his office and bangs out code isn't being a good team leader.

      In other words, just as they're not up to speed on their tasks, you're not up to speed on yours. Looks like there's learning to be done all around. :-)

      --
      Vintage computer games and RPG books available. Email me if you're interested.
  114. Money by Anonymous Coward · · Score: 0

    Attach bonuses to major project milestones.

  115. I hope you edit your code better than your post... by Artifice_Eternity · · Score: 0, Offtopic

    A large chunk of it is repeated twice.

    Luckily for you, the Slashdot "editors" applied their excellent language skills to your post and... completely failed to correct the problem.

  116. Be a leader by Moonbeam_2112 · · Score: 1

    First and foremost, you're their team leader, act like one. Address the problem. Talk to them and try to understand where the road blocks are. Do they just suck at coding and can you help them get past it? Are they getting distracted by other less important tasks? Or are they just taking up space? If you can't address the problem by yourself or you don't see any improvement after you talk with them, take it to your manager. He/she is paid to deal with these kinds of problems. Communication is the key to solving personnel problems.

  117. sometimes you can't by josepha48 · · Score: 2
    How to bring other less experienced coders up to your level and beyond?

    Sometimes no matter what you do you can't bring others up to your level. There are just some bad coders out there and until they get more and more experience they wont get better. You can try teaching them about do's and don'ts, but you can't make them do and don't.

    If the coders are good then often I have had to resort to pressuring them saying things like I am waiting on 'so and so's code' at a staff meeting. Basically getting manegement to step in. Sometimes you have to do that. Yes it sucks, but that is the job of a manager. In this econemy it does not pay not to work as there are plenty of people that they can be replaced by and I know of some people who would love that chance to out shine you (me ;-)).

    --

    Only 'flamers' flame!

  118. Well.. this is rather obvious. by mindstrm · · Score: 2

    Are they meeting the schedule set for them, or are they not? If they aren't producing any code, what are they being paid for?

    Don't you have a project plan? Some kind of schedule? Work allocated to different people?
    No?

    Guess who's going to go out of business.

  119. i was in a similar position by Anonymous Coward · · Score: 0

    Software engineering group project at uni.

    A couple of other memebers of the group were considering giving up on the project, i motivated them to hang in there, i ended up doing most of the project... we passed barely the project.

    Whilst i was coding the others must have been studying, because they passed to exam and the subject, i didnt.

    Groups suck, be an individual.

  120. Make lemonade by jsonmez · · Score: 1

    Since life is giving you lemons, Make lemonade and squirt it in thier eyes.

  121. "This is something almost every developer has had" by justdisguyyaknow · · Score: 1
    "This is something almost every developer has had to deal with."

    If that's the case, wouldn't you think that it would be an infrequent problem, as almost every developer would be "just as non-sucky and motivated" as "we the good ones"?

  122. There's nothing you can do. by Dthoma · · Score: 1
    The problems seems to be that they can't code. This causes them to not do their work. The only solution is if they magically learn how to code.

    Ain't gonna happen any time soon. There's only one way to learn how to code well, and that's experience. But if they won't even try (because they can't), then they're not going to learn.

    --

    Note to M1-ers: a curt but otherwise insightful message is not "Flamebait" or "Troll".

  123. You're thinking about the wrong problem by njdj · · Score: 1

    Programming is not something that everybody can do. The problem is not: How can I make these people into programmers?, because that might not have a solution.
    The right question is: How do I select good programmers to hire?
    Hiring the right people may be the most important part of the job, for a manager of software developers. It is also usually neglected. There are people who have received a salary as programmers for years, who just can't program.
    By the way, IMHO the "Extreme Programming" fad (people programming in pairs) is just a way to halve the productivity of the capable programmers while hiding the fact that the rest of the team would be better employed in other occupations.

  124. confidence, control, and communication by drenehtsral · · Score: 1

    Here's what i've seen:

    The most important thing is that each developed must be important. Not just feel important, but _be_ important. Delegate design decisions, and encourage people to try multi-pronged approaches and to experiment. Let them make design decisions about parts of the project that fall in their individual areas of expertness. Let them make mistakes and correct them.

    I think you have to make the problem engaging to keep people motivated, you have to give your team a chance to all get their hands dirty and think about the problem and design stuff. If you do all the design, code the interresting parts, and hand out the menial labor to your team, you can bet your ass they won't be motivated.

    --

    ---
    Play Six Pack Man. I
  125. Heres what to do. by Ironpoint · · Score: 3, Interesting

    Your colleagues will never live up to you, so I suggest quitting now. When you say you are the "de-facto" team leader, I'm guessing this means you are not the real team leader. You've got prima donna syndrome written all over you. You can either

    1. Quit now
    2. Slack off a bit and see if the others pick up. (Your not in charge, what are you worried about?)

    But you will probably do

    3. Continue doing your own thing and keep telling yourself how crappy your teammates are until your ego explodes and you get fired or quit.

    Truthfully, in programming this is the most important thing to overcome. People become so attached to their work. Now imagine you are on a team of professional toilet cleaners. Without the galmour theres no ego involvement. No one ever said, "I'm such a good shit cleaner, my fellow shit cleaners can't keep up. What do I do?" Its just about getting the job done.

    By doing most of the work, you are fucking yourself. Your superiors are the only ones who can rectify the problem. But they won't if they expect 90% of the work from you. And you can't just reduce the work you get done because it looks like you are slacking and you take shit for it while in reality you are doing the same amount as everybody else. The only thing you can try at this point is soft delegation. Ask people how things are going, ask them about their code, hound them, not like a boss, but like someone who is interested. You can't tell them what to do but by continuously putting the focus of things in their mind, they will respond.

    Probably the best solution is go on a two week vacation.

  126. Co-Developer Appreciation Day by realdpk · · Score: 2

    This August 6th, join me and the rest of the world in celebrating Co-Developer Appreciation Day! Buy them a mouse pad couch, or maybe a beer.

    And remember, if you don't appreciate your co-developers on August 6th, the terrorists have already won.

  127. This should motivate them by DigitalOx · · Score: 1

    Tell them you're going to hire me, a real coder, to take all their places if they don't shape up. Then tell them they'll have to start coming in on the weekends, staying late, and skipping lunch. For positive reinforcement bring them krispy kreme donuts every morning, and have daily read out loud sessions from Kernigan & Ritchies book on C.

    --
    digitalox

  128. "de-facto" team leader? by gribbly · · Score: 2

    On this project, I have a de-facto role of a software team leader

    De-facto team leader? Where's the real lead programmer? This sounds like the problem.

    You're a guy who likes to code and is obviously good at it, and can obviously self-manage. It sounds like the other team members aren't so good at the self-management part. This doesn't make them useless, it just means they need to be managed. Many excellent programmers fall into that category.

    The way to keep programmers productive is to cleanly specify (and by "specify" I mean really, formally specify) what you need, give them the tools/equipment they need, then get out of the way. This is the job of a lead programmer, or other manager. Not a team-mate, except in a dysfunctional project.

    BTW if they really need to ask that many questions re: the spec, then you did a bad job of specifying the task.

    All IMO, of course!

    grib.

    --
    maybe
  129. No real answers by SWTP · · Score: 1

    Besides 'The Mythical Man Month' there is also I think its called Code Complete form m$.

    I started on a team that the main guy talked a good talked and bug him for a month at that time he told me he had nothing except for the stuff he had wip up that was nothing.

    MMM is 1e100000000000% correct NEVER EVER add people to a problem project. Have seen it in person where it does everthing that was described in the book.

    Also NEVER try to do it all your self. Saw one time where a team did that and litterly the single guy went mad!

    If you are team leader you have a two edge sword. One is your boss. You must tell him and keep him informed. Good and esp bad but most important what you are doing to fix it. He may have some ideas. 2nd you must manage the team to get them to produce the max that can. It may take switching people around, or remove all distraction that could affect them. Or a go over exactly what is nessary but not the code to do their sections.

    If you deside to do it all yourself you proabbly have a 10% chance of finishing. At best.

    On thing is do they have the nessary skills. Are they in the right slot? But mostly, do they really understand the problem? If you dont understand the problem and the solution you will generate weak code. I had a prof that started on the first day of his class with "I want you to Program the world". Dead quite! Then the moan and groans started. Esp since this was a compressed one month class! He did this just before we had a break. When we all pile back in the room after some real grouching from the class, when we all came back in I and another ask ok please spell out what world etc. We want the details. He said to us the odd of you two finishing are excelent the odds of the rest finishing the project are bad. Because they see a block walll etc. We saw the finish. We wanted to know the exact problem to solve and the prameters to complete it.

    From your description they have no firm grasp of the problem and the solution. You can lead, coax, inform, pitch in but NEVER do it all your self or beat the stuffing out of. If its late then you need to restructure, rethink and redo. Else will fail.

    There is a section in MMM covering the surgial approack where you cut other help. That may work but the other must be informed that you can do your part and manage but it also up to them to get there parts done. This is not a let you sink but inform them that this is real and they must do their work.

    Good luck!

  130. Idea by JazzPhanatic · · Score: 1

    If Tom Landry's hat doesnt motivate you, then I dont know what will! -aaahhh, the Simpsons

  131. Two-headed monster... by EricTheGreen · · Score: 2, Insightful
    Ai,yi,yi, this sounds familiar...

    You're in a bit of a thankless position, needing to be both a developer and a project manager simultaneously. It's a tough slog and I can't think of any easy advice to give you.

    A couple things to hopefully help your future projects:
    1. You will need to define expectations to your co-workers in advance and in as much detail as feasible. Simply saying "we need to be done on day [x]" obviously ain't going to cut it. This involves a couple responsibilities: a) identifying appropriately detailed descriptions of expectations for each team member, and b) constructing a task list at a level of detail allowing concise definition of each task and being frequently reviewable in a meaningful way.

      My personal experience is that any task with a duration of more than 2 days or so is too high level to track meaningfully--you'll have to subdivide these tasks into smaller units of time so that you can reach a meaningful agreement with your developers on what exactly is to be done and when it needs to happen. You may feel comfortable with longer or shorter ceilings. Just remember: you'll be reviewing every task frequently--make sure what's on the list is meaningfully reviewable by you.
    2. More painfully, you will need to budget time into your daily routine to ensure the "pebbles" (like milestones, only smaller --not my term, unfortunately, but I can't remember who I first heard coin it) are being met on a daily basis. A basic rule of project management--surprises are bad things. The earlier you're aware of slippage, the more leeway you have to do something about it.
    3. Since you'll need time to monitor and review progress your own task timelines will need to reflect this. Never forget to do this, and make sure the project owner is aware of why your tasks seem to require more calendar time than other developers. You are not a 100% coding resource!
    4. You will need to be willing to address developers who are lagging. More specifically, you need to address them as soon as you notice tasks lagging. This isn't the easiest or most enjoyable part of the job. Note that ( "address" != rip a new anterior orifice ) What is does mean is that you will need to take the initiative to: a) identify lagging tasks, b) contact the developer or developers responsible for the task, c) determine why the slip occurred, d) identify a solution and e) follow up to ensure the solution was implemented.
    None of the above is rocket science, of course. But all of it involves behavior modifications for most people. Addressing developers who are lagging in particular is sticky, since you have to be prepared for pretty much anything and any reaction and you need a lot of self-confidence to not feel nervous about initiating this contact. And, in addition, you yourself will have to change your daily work habits to some degree and be willing to commit to those changes--and this can be the hardest part of all.

    Best of luck to you...
    1. Re:Two-headed monster... by EricTheGreen · · Score: 1
      One other thing I forgot to mention, per your post...

      It will be a rare day indeed when anyone (coder, manager, stockboy, whoever) will, of their own initiative, approach you and ask for help, particularly in the context of "Oh my God, I'm running behind and need some guidance!". You'll need to ride herd on your teams progress and be prepared to point out to a team memberthat help may be needed, and be responsible for organizing that help, even if you yourself aren't the source of it. More work for you, unfortunately, but if you depend on others to self-identify, you will be regularly burned.

  132. When.... by SomeOtherGuy · · Score: 2

    are computer programmers going to be forced to conform to certification standards? I have seen a lot of "computer users" try to (and sometimes succeed in) getting jobs as "computer programmers" -- in a lot of cases this involves a certain amount of lies and or embeleshments on the old resume. Imagine if Doctors or even Lawyers were allowed to wander around the job market without ever having to truly learn their skills. "Uh...I don't know how to fix compound fractures -- I thought I would only have to put casts on simple breaks and take x-rays..." I am all for written and verbal testing during the resume process. (You would not believe how many resume's and interviews I have done with people who claim to "be an Oracle or C++ or whatever" expert -- and some of them can't even do simple tasks. During the .com boom it was amazing how many people who had "mastered" HTML and Javascript walking around calling themeselves programmers. (* Most people out of work now can't program at all -- they just complain on /. about being an "out of work techy" -- We still have the same need for programmers as we ever did. Just now we need the real professionals and their is not enough overhead for the wanna be programmers.)

    --
    (+1 Funny) only if I laugh out loud.
    1. Re:When.... by Anonymous Coward · · Score: 0

      *points upward* Mod him up, for he spews truth from every oriface.

      Jesus H. Christ, if I see one more person who's 'knowledgable' in HTML, who uses dark text on dark backgrounds with more than twenty animated graphics on the same page..

  133. Interfaces, Architecture, and Prodding by spectecjr · · Score: 2

    Possibly the easiest way to get things going is this:

    1. Plan the architecture. Sure, some things can be more difficult than others to get going from the start, but design as much as you can in one go, and iterate.

    2. Design interfaces to match the architecture; whether it be pure virtual classes in C++, a slew of function prototypes in C, or a set of interfaces in Java.

    3. Pass interfaces out to developers, based on functional areas of the code. Tell them that they're responsible for this chunk of the app, and that their job is to code up stuff behind the interfaces. If they're worried about not having other stuff to connect to (ie. it's not done yet), tell them to code up stubs that just return error codes in the right way for their own testing.

    It helps if you ask everyone what areas they want to work on, and spread the load out that way. If they buy into it, then they'll work harder for you. But laying down the basic infrastructure and then delegating specific interfaces to code up is the easiest way to get others up to speed. At the very least, you can point to that person at the end of it and ask them why they haven't finished it.

    Simon

    --
    Coming soon - pyrogyra
  134. Welcome to management ... by joab_son_of_zeruiah · · Score: 2, Insightful

    Contrary to the project management theoreticians commenting on this list, you are very lucky to have seen this behavior early. There are worse situations.

    Right now you need to make the plan very visible to your manager. It's his/her problem too.

    Use your management to sustain accountability for individual commitments of your team peers to the plan. If you can't get that -- leave, you don't have management support. You will need to use shame and threat and fear to get action; because goodness didn't work; your manager has to play the role of the bad guy, because you have another role ...

    Help your peers to be a team and be successful. Forget coding. Clearly your part is under control. You can do it in your sleep. Don't try to be a savior. Your project has four extra bodies; be sure you understand why that staffing level was needed.

    Make sure you let your management know what you are doing.

    You will look like a fool or an ass if you think you can do it all. You will be much more effective if you can make this team perform inspite of its appearant limitations.

  135. Solve problems by goliard · · Score: 2

    Wow, I'm astonished at the unanimity of "crack whip" as a response.

    I'm going to take the questioner at his word: he doesn't know why this is happening, and has never been responsible for other coders (or other employees) before.

    There's many reasons people might be turning out insufficient or inadequate code. Whether or not you think them good reasons is your call. But you need to find out what they are. It may just be that they are lazy good-for-nothings, in need of "motivation". But maybe:

    • Some other project has been imposed on them, and the other manager(s) are squeekier wheels? Maybe they've been working their buns off on another project. Or worse, they're saddled with administrative duties ("please restore my drive from backup!") which are absorbing their time. First check to see if something has been competing with you for their time.

    • They are angry at you or the organization, and they are expressing their anger in the only way they feel they can? Did you piss these guys off? Did their employer piss them off? Are the brushing up their resumes to jump ship, and just going through the motions while they job hunt?

    • They not coming to you with help because they think you have priorized their being self-sufficient over getting things done quickly? Do they know what your coding standards are (e.g. variable naming protocols)? Do they know you're disappointed?

    • They've never had to cooperate with another coder before? They are used to pulling a heroic all-nighter and handing it in, interoperability never before required?

    In other words, use your problem solving skills. If there is some thing (e.g. other project) getting in their way, remove that thing. If they are having a problem you can solve, solve it. If they lack clue, impart clue. All that may be insufficient in the end, but until you investigate, you'll never know.

    And ask people in ways which give them outs. "I had expected more from you by now. Have you been very busy with other things? If so, how can we get this project pushed up your priority queue?" allows someone who was slacking off a chance to realize that they were slacking off and pull their act together, without being shamed or losing face.

    --
    -*- Any technology indistinguishable from magic is insufficiently advanced -*-
    1. Re:Solve problems by Frobnicator · · Score: 1
      Those are all good, but there are even more than those.

      They are co-workers second, and people first. While it may be a work-related problem, it may be a people-problem as well.

      • People have needs. You or a friendly co-worker should find out about their non-work needs as well. Work is an abstract thing, if there are concrete needs that need to be taken care of, help them with those first.
        • Family. Are they having problems there?
        • Friends. Do they have people they can talk to and do things with?
        • Money/Debt. Are they okay?
      • People need success, and like to feel important.
        • Do they have low self-esteem or had problems with code recently?
        • Do they feel like they are able to do thier job?
        • Do they feel comfortable with others in the team?
        • Do they feel like they can make a difference?
      • People need to feel safe. Do they have emotional safety at work and at home?

      Just some thoughts.

      --
      //TODO: Think of witty sig statement
  136. Kinda like that Dilbert Cartoon by qurob · · Score: 2, Funny



    Dilbert

    "Did you write that code for me yet?"

    "No. I'm one of those people who needs to be threatened every day, or else I won't do anything"

  137. well by Anonymous Coward · · Score: 0

    generally the programmers/engineers/scientists are a egotistic bunch. When preditory behavior combines with egotism, it tends to cause alienation and fragmentation within the group and situations that is being described here can result. Before you rant about how you are doing the most of the coding, ask your self the following; are you being too aggressive in insisting things get done your way? do you tend to put down and ignore suggestion from others? do you mis-trust others to do the right thing where only you seem to know what "right" is?

  138. Well, I'm NOT a manager by HiThere · · Score: 2

    I mean I'm really not a manager. If I had been appointed the team leader, I'd have this same problem.

    To me it sounds like the problem is that the team leader is a coder, not a leader. If it had been just one or two who hadn't done anything, I might buy that they were poor coders, but that's not what's being described here.

    Without having seen what was going on, I can't say what really happened, but here's a very wild guess:

    The team leader told the others what they were going to do. He understood what he was saying. It was clear to him. So he drew boxes, and put labels on them that meant something to him. Then he said, "I'll take this part", and picked the part that he had clearly specified. Perhaps he divvied the rest up, perhaps he just let them pick. Now he took a large section of the specs. But it was also the only part that he had really detailed. And nobody had clearly specified the APIs. So he said: "OK, now let's get to work!" And he did. And they went back to their offices, and tried to figure out what they were supposed to be doing. And whenever a question came up, he would either brush it off, or call a group meeting. At which nothing would really be clarified.

    Everyone was doing their best, but the team leader was coding, which he could do, instead of leading, which he didn't know how to do.

    Remember: I warned you that this was only a wild guess. But it's what would happen to me, even though I know better.

    --

    I think we've pushed this "anyone can grow up to be president" thing too far.
    1. Re:Well, I'm NOT a manager by shaldannon · · Score: 2

      He said he's the de facto team lead. That doesn't necessarily mean he's got any more managerial role than you do...indeed, he might very well be 'in charge' only because he's been around longer....

      Maybe it's me but it sounds like a motivation and competence issue....then again, maybe that's just how he made it sound. I figure I sure am glad I'm not in his position, but more information on the group dynamics would be helpful if he really wants a solution...

      --


      What is your Slash Rating?
  139. Your problem is obvious. by vinyl1 · · Score: 1
    This project does not have a manager. If the 'team leader' is busy writing all the code, then he is not the manager. What a manager does is assign work, supervise workers, and handle problems.

    Many people think managers are not needed, and they can save money by not having them. You can see where this gets you...

  140. As an unemployed, unhirable tinkerer... by NoMoreNicksLeft · · Score: 2

    I'd just like to say

    HAHA.

    That's right. You would never hire me for this project or any other. Of the few managers that do interview me, none would ever consider me for any kind of coding job. Why? Because they're obviously too busy picking winners like your co-workers!

    HAHA. BWAHAHA. BWAHAHAHA HAHAHA.

    Sometimes, life only sucks a small fraction of the amount it usually sucks. I live for those moments.

  141. The Answer: Learn how to hire better ones! by denial · · Score: 2, Interesting
    I really agree that bad programmers dont change much. Some can program, some cannot, and time spent on the people who really just don't get it is pretty much wasted time. However, I think that expecting management to fix the problem is rarely going to work.

    The answer? Make sure you (as the senior dev/team lead) get involved in hiring, and ask people to code on a whiteboard in front of you, a simple problem like a linked list etc. This will have the mildly negative consequence of weeding out some good people who get stage-fright, but it will also weed out those who just cannot write any code at all. And the people who get stage-fright are also likely to suck in code review, where being unafraid of having your code publicly disected is a crucial skill. And people who don't get much review are unlikely to be great coders.

    So ask the person to code a simple data structure/utility program whatever. Make the person take their time, comment their code, and ask them harder questions, language specific questions. So for example, I am currently coding Java, so I might ask them about a clone function for the list, synchronisation, serial form etc. For c I'd be looking to ask about pointer issues, and in particular work in a question about the difference between pointers to pointers vs multi-dimensional arrays with declared sub-array sizes.

    You can't change what you have, but you can sure make sure the next set are better. For what it's worth, I don't think Brooks' law applies to this situation. Replacing someone who cannot code with someone who can will cost some time, sure, but it will also generate some code. I once heard it suggested that on any project of 10 or more people, you can sack one person and the code will be better quality and delivered faster. The longer I work, the more I believe it is true. And replacing that person with someone good is always a win.

    1. Re:The Answer: Learn how to hire better ones! by Chundra · · Score: 2

      I once heard it suggested that on any project of 10 or more people, you can sack one person and the code will be better quality and delivered faster. The longer I work, the more I believe it is true. And replacing that person with someone good is always a win.

      Because you repeatedly sack another guy on the team and hire someone better?

      Well, duh. ;)

    2. Re:The Answer: Learn how to hire better ones! by bolthole · · Score: 2
      Because you repeatedly sack another guy on the team and hire someone better? Well, duh. ;)

      No, because 10 people on a project is too many, so you eliminate some overhead, plus trying to drag along the dead weight, plus the overall quality of the code is improved by removing his trash code, which in turn makes it easier/faster to add NEW code, ...

  142. The best way to motivate developers.. by Anonvmous+Coward · · Score: 2

    ...is to make design choices that are the opposite of what they want. If they say "Why did you do it this way? It's stupid!" respond with "Because I'm smarter than you." They'll go fix it themselves.

  143. Development Quality Improvement by Unkle · · Score: 1

    First off, make sure you have a lot of visibility going both ways. We have had good luck with having short meetings 2-3 times a week. This is a forum for anybody who has questions to ask them. It also is a status-update thing. Let everyone know where you are and what you have beend doing. A schedule is almsot a must here. Everyone needs to know what they need to do and when it needs to be done by (this is not as easy as you would think-a good schedule is hard to make up, especially if you start working on the project before the schedule!).
    Also, create an atmosphere where everyone knows it's okay if you don't know the answer. Someone else might. This is easier in small groups than large ones, but should be possible in any case.
    Another thing you can do is to have design and code reviews. If they know that their peers will be critiquing their code, especially some of the more experienced programmers, they will be more likely to get into the habit of writing legible code. You could even come up with coding style guidelines for your project, maybe even the entire devision. Most languages I have worked with don't force any part of a style on you (the closest I've come to a language forcing a style on me was Fortran77 or Prolog), so it's really easy to code like they do here : http://www.ioccc.org/ (The International Obfuscated C Code Contest). You just have to be sure to do these reviews-it's too easy to just say "the stuff works, we can skip the review to get the product out on time" (See recent news story, I think it was on slashdot, about how software sucks).

    The bad news is that these are things that need to be done from the get-go. It's too late to save the project you're on now, the schedule has slipped too much. But you now have some experience. The best thing you can do is to learn from the mistakes made on this project by all involved, and when you are put in charge of another project, fix those mistakes, or at least attempt to.

    --
    Against stupidity, the gods themselves contend in vain.
  144. You do the interfaces by Anonymous Coward · · Score: 0

    If you are the best developer you should be developing the interfaces (this means detailed documentation for each interface), and the less experienced coders should be writing unit tests based on the documentation, and then filling in the implementation. This assumes you are good at interface design. This is different than being a good coder (but being a good coder is a required condition of being a good interface designer). You shouldn't be doing much implementation, but you should be reviewing the unit tests and implementation of each interface. Designing interfaces is both the hardest and most important part of the job, and probably where they are stuck, and where they will fail. Without good interfaces your project is dead in the water. Interface is everything. If you don't have much experience designing scaleable, usable, re-usable interfaces hire someone who does, ASAP.

  145. It's a professional enviroment, right? by dmarien · · Score: 2

    Then they should be professional, and understand that they need to be productive or they're fired.

    I'd just give them all a frank speech that begins "You need to suck less, and if you don't have a fucking clue, ask me..."

    --
    dmarien
  146. Management by nuggz · · Score: 4, Insightful

    You have to manage your team better.
    You are the leader, take responsibility for the output.

    Code less supervise more, that is your new job. Break the job into manageble controllable chunks, have them report how they are doing. Check code for correctness (logical and formatting)

    If you have 3 people who aren't as capable as you, you are going ot have to spend a lot of time ensuring the final work is good enough.

    Also some people just aren't capable of the work, you'll have to really watch what they do.

  147. How to get them moving by Darlock · · Score: 1

    Post to Ask Slashdot and when they are slacking off they will read it and realize you are talking about them....

  148. Stop coding by gorbachev · · Score: 1

    Stop coding and dedicate 110% of your time working with your coders to get them uptospeed. Work with them until they "get it".

    Establish frequent meetings to oversee their progress, encourage them to come and ask you RIGHT AWAY, if they have problems with their work, actively stick your nose in their business until they get it.

    It looks like the project doesn't include effective control measures to catch problems like this earlier. Two weeks and these people have no visible progress and you didn't know about it, that's very bad. Establish procedures that will catch that sort of stuff earlier.

    Have the others submit daily status reports or set up a status meeting every morning before work starts or before work ends, if that's what it takes.

    --
    In Soviet Russia, I ruled you
  149. Flexibility, documentation, and rewards. by wbav · · Score: 2

    At my company, no project starts without someone going through an writing up a memo with a list of all the tasks that need to be accomplished, and who's working on them. Now this document isn't put on the webserver and left alone, it is constantly updated to reflect changes; people ahead/behind schedule, new tasks, ect. Every new version is published, in pdf form, on the webserver, so that anyone can see what goals need to be met.

    For each of the tasks that is non-trival the programmer doing that task creates a spec for it so that we can reuse items (if there is a similar spec on the webserver) and that everyone knows how their portion of the project should run.

    Also, we have a perfect project bonus. If you get a complete project done, on time only (becuase if you mis-estimate, you cost the company money, even if it such that you get things done faster than you said,) you get a 5x to the regular bonus for new products. This motivates the project leaders, and their programmers fairly well.

    With this, it is required that each programmer have a measure of flexablity in how they get their portion done, typically we create a suite of tools and then glue the suite together with a controling program (it is the project leader's job to make that program, as they should know what each of the parts do.)

    When I'm not working, I have hit the same problem with some opensource software I'm writing. I have taken it upon myself, as the other person cannot help much, to write everything my self. I've decided to do it that way, so that I know the code is correct and in the same style.

    Sometimes you have to do it all yourself, but if you are paying someone to write code, then they better be doing what you are paying them for.

    --

    =================
    Unix is very user friendly, it's just picky about who its friends are.
  150. The perfect geek motivation by Anonymous Coward · · Score: 0

    alocate a mililitre of Jolt Cola per line ratio of reward ;-)

  151. In them there hills by Anonymous Coward · · Score: 0

    Where I work, I was 1 of 3 developers. I was in my own depatment, to do certain tasks and work with thte other departments to create entire projects. I am soon leaving and 2 more people were hired to take over my position. They are supposed to be "up to speed" by the time I leave but they just sit there and browse the web all day. I can't get them to do anything. So In a way, I know what you speak of.

  152. Here's the answer.... by Andrewkov · · Score: 1

    Just don't hire any more ex-microsoft employees, you'll be better off! ;-)

  153. The best way... by rmezzari · · Score: 0

    ...is to give them loads of weed. Works all the time!

    .

    --
    "Emancipate yourself from mental slavery, none but ourselves can free our minds !"
  154. enlightenment project managing by Anonymous Coward · · Score: 0

    Just try motivating Raster and the developers to come up with a game plan for E17 release wise...not easy

  155. Very Simple Answer : by Anonymous Coward · · Score: 0

    Cattleprods.... BIG cattleprods

  156. Five Words! by teamhasnoi · · Score: 2
    Block Slashdot And Hire Hookers.

    Problem solved.

  157. Different roles by imta11 · · Score: 1

    As a project leader perhaps you are not delegating responsibility efficently enough. You sound like a self starter, these people most likely had very good GPA's in school because they could follow a book well, now they are screwed. Write them a book and they will be able to do it, but only after they sneak off to the library to do the test together.

  158. You NEED to code inspect! by WolfWithoutAClause · · Score: 2
    Call a code inspection. They're all invited. They do not have to compile it to hold a code inspection.

    Compare the code against the requirements and coding standards (if you have any; if not GET SOME). Read through their code line by line. Point out any actual mistakes or violation of the coding standards, and write them down. DO NOT COMPLAIN ABOUT ANYTHING THAT WORKS BUT ISN'T THE WAY YOU WOULD HAVE DONE IT.

    Check that the list of problems are fixed. Start integrating...

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  159. How did these guys get hired? by Erwos · · Score: 1

    Maybe I'm naive (probably, in fact), but how did your co-workers get hired in the first place? Did they lie effectively in the interview? Are they truly idiots at coding? This is a fairly important thing to figure out, because if they're crap coders, throwing them out on their asses is not the worst thing in the world for your firm.

    You need to _talk_ to them and find out what's wrong, not just assume they're idiots. Perhaps they're not so hot at DSP programming, or don't have much experience at C. I know I find it much more difficult to code in C than C++ (ie, function-oriented vs. object-oriented) not because I'm stupid, but because I got taught in school to think of programs in terms of objects. I _can_ program in C - I just don't enjoy it as much and am not as good at it.

    In other words, find out what your programmers are really thinking.

    -Erwos

    --
    Plausible conjecture should not be misrepresented as proof positive.
  160. get to know them by paranoic · · Score: 2
    It sortof sounds like you expect them to live up to your standards, which nobody will. If you really want to be the "manager" of this project, then that's what you'll have to be.

    Get to know them, take them to lunch.

    Some people have a hard time coming up with original code. Give them a skeleton to work with.

    Help them do the design, in a very concrete way. Your goal in this part is not to do it, but to lead them in doing it. Remember it's their code, not yours, so they need to come up with it, as painful as it may be to you.

    Don't think that just because they say the right things, they actually understant what they say. Too many people know the right words, and can even put them together in sentences.

    Despite what some others have posted (cover your ass, by making it you're bosses problem), show some initiative by solving this yourself.

    Don't think you're boss isn't aware of this. He either can't think of a solution or is seeing if you can solve it.

    Spend your free time working on their part of the problem, then the working day helping those get their part done, in their own way. Yes this is a lot of work, but it will enhance your skills at leading projects. Eventually you'll learn to do this without actually doing the work before hand.

    If all else fails, start to yell and scream. Sometimes a boss has to be an asshole.

  161. My experience by encebollado · · Score: 1

    I'm a student at BYU and last semester I was one of five members of a senior project team that designed and implemented a software radio on an FPGA. It was a big task and we all underestimated the work but most of us were determined to get the thing done and working. However, there was one member of our team that just wouldn't do any work. We had weekly meetings to check our progress on our modules and he always said he was thinking about it but hadn't done anything. He's a great coder, just not very responsible.
    What we ended up doing to motivate him worked to a degree. First, we started mentioning in team meetings how important it was for everyone to finish their part because integration would be a big issue. Later, the four of us wrote that guy an email expressing our frustration because we were getting so close to the deadline. Also, we mentioned the problem to the professor supervising our team. He couldn't do much, but he talked to the guy and explained that if he didn't work like the rest of us he couldn't receive as high a grade either.
    We ended up having to do some of his modules for him at the last minute and he only did one. The result was we couldn't finish the modules he dumped on us and therefore couldn't integrate the module he actually did to see if it worked. So, it wasn't a total success but the four of us felt good about the work we had put in and tried not to be too bitter at the guy that sabotaged our senior project.
    So, our techniques worked to a degree but we should have talked to him sooner and taken over some of his responsibilities then so that we might have been able to get them working.

  162. Business Hammocks by MrBlue+VT · · Score: 1

    You need some business hammocks. There are a few places you can get them: Hammock Hut, Hammocks-R-Us, Put-Your-Butt-There, and Swing Low Sweet Chariot. It's the hammock complex on Third...in the hammock district.

    Also an autographed Tom Landry hat never hurts.

  163. You are an awful manager/team lead/mentor/whatevr by rabbits77 · · Score: 1

    Any good programmer knows the answer to this!! Give them smaller more manageable tasks. Check them more often. Even if that smaller task is,"go code these methods to do these couple of things. These are the paremeters that you will be given and this is what the callnig code expects back." When done, give a slightly bigger task. At each point professionally critique style and efficiency. C'mon!! This is an easy question!! The poster must be a real isolationist loner jerk.
    Get some interpersonal skillz!!

  164. XP suggests Test First by Anonymous Coward · · Score: 0

    Consider writing unit tests for the code for which they are responsible. Then they write code to make the test work. Hopefully the accomplishment of "made another test work" will provide them the breadcrumbs to lead them out of the forest.

  165. It's none of your business by atlantis_tin · · Score: 1

    It's for the project leader/manager to take care of developers' output. You are not leading the project so it's neither your responsibility nor do you have the authority to change it. Make sure you are doing a good job and that everyone knows (like someone already posted 'ensure visibility') This is what I would have done. Sorry I did not answer your question (how to make co-developers work).

    --
    I copied this sig.
  166. Frequent milestones, Code Metrics, Nightly Builds by not_again · · Score: 1
    Start by setting incremental project development goals and milestones such that they are less than 8 hours of work away. Every day, take 5 minutes with each developer and go over the pending milestones. If they are not making reasonable progress (more than 4 hours of work with nothing to show), then team program with them until the milestone is met. Make sure everyone is using something like CVS. Then do a clean checkout of the project code every night and:
    1. Compile all code with all warnings on. - Email errors to developers.
    2. Run some simple code metric scripts on all code and break it down by author or module.
    3. Let the developers know you are doing this.

    The code metrics are intended to show you are paying attention and to generate a bit of friendly compitition rather than to measure programmer productivity. Make an internal project development web page and post the metrics weekly.
    Answer any complaints about the metrics not measuring anything useful with; "Yes I know, I'm just trying to establish some baseline statistics"

  167. Have you tried... by Alsee · · Score: 2

    massive quantities of free caffine?

    -

    --
    - - You can't take something off the Internet! That's like trying to take pee out of a swimming pool.
  168. fear by Anonymous Coward · · Score: 0

    just threaten to fire their asses and then follow through with one immediately if needed. I ran construction crews before I ran networks and it WORKS. If you are not willing to come to work completely ready to fire someone you have no business managing.

  169. Leadership by ces · · Score: 2, Insightful

    If you are capable of producing their work in a short amount of time, clearly you have an idea of how it can be implemented. Sit down with each one individually and get to finer details of their roles. Help write pseudocode, if necessary, and then let them actually bang it out. I'm suggesting, in a way, that you do it all yourself without quite doing it all yourself.

    If you do the above rather than simply going off alone and finishing the project by yourself you should really impress your bosses and most of your co-workers. I would pair-program with each of them on a rotating basis and ask the remaining 2 to pair program with each other. This will allow you to quickly asess where each of them is at. I would also put into place some of the things that are considered "current best practice" in the industry such as daily checkins, daily builds, and weekly or even daily code-reviews.

    --
    Happy Fun Ball is for external use only.
  170. the manager knows what to do... by Anonymous Coward · · Score: 0

    beat the guy doing the 90% until he is doing
    110% and leave the other coders alone.

    at least, that's what has happened everywhere
    i have ever worked...

    sometimes the non-productive coders get to go
    on vacation, or get sent to conferences in
    bali or tahiti as well.

  171. Good coder doesnt make a good lead coder by larryappleton · · Score: 1

    I've been in projects where my superiors arent totally forthcoming with info. Info was given out at a need to know basis. And he thought himself such a badass that he kept most of the 'hard stuff' to himself.

    Now I'm not saying that you're this way, jsut that this story's just from 1 POV.

    Communications skills are vital, if there's a problem early on you need to address it. If you're the lead then you need to make the damn milestones or whatever clear. If the other folks arent producing then you figure out why together, that way-- early on you can either work it out or find replacements. Gun hoe'ing it and taking it on all by yourself and then bitching and complaining about it afterwards-- well you're jsut as much to blame if you're the lead and you let the problem get that far. Involve people.

    Of course this is worst case scenario and probably doenst apply. Best of Luck!

  172. Simple - employ me! by sapped · · Score: 1

    There you go. All your problems solved as soon as I walk through the door.

    Seriously, if anybody is looking for an ABAP developer in the LA area, let me know. mstore1 at yahoo - you know the rest.

  173. Who are these schmucks? by MrBandersnatch · · Score: 1

    You dont say who your fellow coders are...are they programmers/designers/domain experts?

    If they are not PROGRAMMERS then obviously the training that they have recieved is insufficient for the project and realistically the short term answer is that you should finish the project yourself and in the long term they need more training.

    However if they ARE "programmers"...well I was going to say "follow many of the excellent constructive suggestions given by others" but on second thoughts I say sack them and make sure your company doesnt hire any more muppets. If they do...walk. Trust me on this one.

  174. I second that... by tacokill · · Score: 1

    Having been a PM for 4 years, I second this suggestion. Raise the issue IMMEDIATELY. If no action is taken, well, you've at least raised the issue.

    Reminds me of a saying I live by: if a manager ignores an issue and hopes it goes away, the issue won't go away but the manager will.

    Been true for every project I've ever worked on (even before I was a PM).

  175. eXtreme Programming by Anonymous Coward · · Score: 0

    http://www.extremeprogramming.org/

    -- of the twelve XP practices, pair programming makes hiding away from coding impossible. integration is continuus.

  176. The Motivator by blueroo · · Score: 0

    I have a motivator mounted above my desk.

    36 inches of hickory Baseball inspired motivation.

  177. Re:You are an awful manager/team lead/mentor/whate by Anonymous Coward · · Score: 0

    or you could just threaten to fire their asses...

  178. set up a project plan... by quon · · Score: 1

    Set up some sort of project plan or some sort of blueprint of the code that needs to be written for each of the features of the project. If you have already gone through the exercise of writing requirements and a detailed design for the features, this should be a breeze. Once you have this setup, as the lead of the group, you should have a weekly meeting to get status of each of their items on the plan. This way you have everything organized and accountable. During these meetings, you should get the status of each person's sections. If they are late, ask them why and how much more time will be needed for each section. If it lateness still continues, you seem to have a personnel problem and should deal with that accordingly. However, at least now you have a good way of tracking what's going on.

  179. Use proven management techniques by immortal · · Score: 1

    First lets face the abvious. YOUR SCREWED. So now you have to take some action.

    First you have to delegate new tasks. You tell your coworkerless that there has been an shift in the project and they are getting new tasks. Give them something meaningless and has nothing to do with the project to keep them occupied from noticing that you have taken on the tasks they failed to complete.

    Now that they are off on a skycrane search, you complete the project completely under your control then had it to your manager. Don't tell him anything just let him belive whatever he want to believe.

    Your coworkerless can remain clueless and continue to waste their time on the skycrane project.

    Last step, MOVE ON to your next project and request a new set of coworkerless. Then just chuckle on your way home.

    --
    "Your having a bad day when the voices in your head put you on hold"
  180. Sounds like you need some project management... by st.+augustine · · Score: 3, Interesting
    You need someone (not you) riding herd on those developers and making sure they're actually getting work done. The company I'm at uses a lightweight process called SCRUM, where features (or "stories" in XP terms) are divided into small tasks, each developer is responsible for taking on and providing estimates for a fair share of tasks, and every morning there's a (short -- ten minutes, max) meeting where each developer has to go over:
    • which tasks they worked on yesterday
    • how long they've spent on each task
    • how much more time each task will take to complete
    • what they're going to be working on today
    • any blocking issues they might have
    (Any design, problem solving, etc. is deferred till after the meeting, and only the people that need to be involved in those discussions are pulled in.)

    The project manager (who is not a developer and not a manager manager) is responsible for keeping track of the tasks and the hours and making that information available. It's always clear who has responsibility for what and who's blocking whom from getting their work done.

    This does a great job of keeping developers productive, and since developers get to make their own estimates (and the total amount of work that can get done in a development cycle is based on 40-hour weeks), it also does a good job of keeping them sane.

    (It works well with eXtreme Programming practices like pair programming and story-driven design, too.)

    --

    -- Some things are to be believed, though not susceptible to rational proof.
  181. Arrogant coders suck by Anonymous Coward · · Score: 0

    Well, there seem to be a lot of *fire them* posts in here. That's just stupid and immature.

    The reality of development, like any other professional field, is that 90% of people are collectively as capable as the 10% which are adept at their jobs.

    Clearly, and logically, if 4 developers are demonstrating the same problem, it's unlikely that all of them are bad workers. More likely there is a breakdown in the development process which is stopping them. This isn't necessarily the case, but we'll posit it's truth for now.

    In my experience, these sorts of failures are usually due to a lack of organization and transparency. Nobody likes to feel like their in the dark, and in the absence of a development process that motivates employees, they generally won't acomplish much. While you may be a better programmer, I would wager that the difference in productivity between you and you peers is because you are able to self-motivate, whereas they are not.

    Here's a really simple solution that's worked for me several times:

    First and foremost, you need someone in a PM role. This sounds like it's you right now, but your not doing it so well if you were 'surprised' to find that your peers were not keeping up. If it's your cup of tea, then do it, otherwise pick one of your peers who is very organised and nit picky (i.e. the guy with the really clean desk).

    It sounds like you have done pretty good front-end planning, but many people make the mistake of writing a bunch of design documents, figuring it out, and then just going off and writing code. You need to integrate that front-end planning into the process of writing the code. One approach that has worked for me is to get a bug tracker (I like Double Chocco Latte) and get everyone to breakdown what they need to do into tasks. Task in this sense should be at a level of granularity where you can finish at least one task a week without any trouble. Just the simple act of ticking something off when it's done really helps people get motivated.

    Now once a week, buy a case of beer (expense it), or go to a local bar with printouts of all the tasks (expense it), and make sure people are making progress, discuss the problems they're having, and get happily wasted while talking about code. This is fun, makes sure everyone knows what everyone else is doing, and gets a friendly bit of competitiveness going (the hidden motivation for the beer ... it's a heated debate catalyst). Nobody will want to admit that they haven't finished their bit when everyone else has, which means they'll be actively trying to solve the problem your dealing with; they'll try to make themselves more productive, which is infinitely better than if you try to.

    Finally, if their code is really _that_ bad (and bear in mind that to an experience eye, not-that-bad code often looks really horrible), then you need some level of quality control. I've found code review to be incredibly helpful here. If your using CM software like CVS (and if you aren't please get some quickly) then institute a policy that nobody commits to the tree without having someone else review their code. Initially this can often be you, although you want them to review each others code as well. Peer review provides a great avenue for knowledge sharing, and will get people to ask you questions they wouldn't otherwise. Additionally, if they review eacxh other's code, they'll start to learn about the aesthetic of good code ... it's much easier to see other people's mistakes than your own.

    Not surprisingly I also like to do code review from printouts over a pint. Again, lubricates the conversation.

    This may all sound a little corporate, and well yeah, it is somewhat. But coding teams are like cardinality, you have one coder or many, and the exact number is pretty irrelevant. You need some process as soon as you have more than one developer, and well, big corporations have spent a lot of time figuring out how to make teams work effectively. Please don't think I mean you should institute core hours and a dress code... ;)

    Cheers,
    Xenophile

  182. Reassignment is not Firing by agutier · · Score: 1

    Getting rid of these other developers is not so evil. Perhaps they will be excellent programmers some day, but they need time to grow, and the need supervision. It doesn't sound like you have the time to mentor and educate junior developers, and finish this project on time. Production assemebly programming is not a good place for novices to start. They start out scripting for the web site, or maintaing existing code.

    These guys are obviously starting their coding careers from scratch. They need simple tasks and a lot of supervision. Your experience and speed at programming, combined witht he urgency of this project, is probably intmidating them. You may be under too much stress to comunicate your goals properly. I doubt you have time time to teach basic programmnig skills. Do you have time to do pair programming, or code reviews, or other types of hand holding?

    Have them reassigned. If you want to work with other people on a DSP written in C and assembly, get really good programers with years of experience. Or go it alone.

    Your waving Brooks Law around shows a lack of understanding. The notion is that in order to bring a new person onto a project, those who are currently programming must spend time educating that person about the project. Currently, you have four people working with you from the start, and you have been unable to explain the project to them. You are the only one coding, and now you are asking slashdot about how to rally these other programmers who are obviously in over their heads. Don't you think that this time would be better spend explaining the project to a verteran assmebly programmer who doesn't need mentoring? Brooks warns about the drawbacks of increased communication. Replace these four with one darn good programmer and you have reduced communcation requirements, not increased them. (You aren't adding, you are reducing.)

    Strip the team down to one crackerjack developer, and hire one other crackerjack developer. A second person capable of writing the code all by herself. Give that person the salary of the four guys who have been reassigned. If you can't get productive work out of a hand picked, veteran C programmer who's getting paid a kings ransom, then you need to step down from the role as project lead.

  183. I agree! by John+Harrison · · Score: 3, Insightful
    Having played something of a leadership role in large projects involving people of various skills I will share what I have learned.

    1. Be open to questions. This will help them respect you as a leader. Make it know to everyone that if they need help then they should ask and you won't bite their head off. You might have to restrict the time if the question asking gets out of hand. Maybe only allow questions before noon. Then you can get your own work done in the afternoon.

    2. Spend time sitting down with each member of the group and code with them. Take turns writing the code. Again, do not bite heads off. Don't sit there and simply write their code for them. Explain the concepts that they are missing without belittling them. Have them pair up with each other as well. You will be amazed at what two idiots can teach each other.

    3. Dr. Pepper. Lots of it.

    4. Stress relief. Allow them to check /. once a day.

    5. Have a weekly one hour class. Have someone teach it once a week on some aspect of their code or a programming concept that is useful in what you are doing.

    I have seen people that I initially had very little confidence in become pretty proficient at doing their tasks. They didn't themselves in a vacuum, they trained (and motivated) each other.

  184. Typical geek responses by joshamania · · Score: 5, Insightful

    One of the big problems with geeks is that they can be assholes, as you may witness by some of the replies to my first post.

    Did y'all even read the whole original story? This guy has a problem that he needs to fix right now . Firing people for two weeks of uselessness isn't going to solve the problem. If you haven't read The Mythical Man Month, go read it now. Bringing on new programmers half way through a job often makes the job take longer. Firing the old, less effective folks, and bringing on new folks is going to do just that. At the very least, the programmers that are there know the company and know what the project is and know all the other people on the project.

    The original poster did not ask "what should I do?", he asked "how do I make these people more effective?". Hiring replacements can sometimes take months, and when you do so, you're not guaranteed that the new programmers are going to be any different than the folks you just fired. So let us focus on how to solve the problem, not make it worse.

    1. Re:Typical geek responses by Anonymous Coward · · Score: 0
      So let us focus on how to solve the problem, not make it worse

      this guy also needs to watch his ass. if he's not careful his boss may think he's the problem - a de facto role as team leader could be lots of trouble if the rest of his workers band against him (we didnt get anything done b/c he was bothering us all the time and changing techniques, plans, etc). He needs to make sure his boss understands his situation, what he is doing about it, and give his boss regular updates.

    2. Re:Typical geek responses by BanteringCTO · · Score: 1

      Spoken like a man who actually leads people!

      --
      The world of achievement has always belonged to the optimist. -- J. Harold Wilkins
  185. Visit them a lot by Anonymous Coward · · Score: 0

    Some people should not be programmers, but are. Some people are pretty good programmers, and some are natural programmers. The natural programmers take care of themselves -- you only need to visit them once a week, and they will probably visit you anyway to show off or ask questions. (I'm assuming your're a team leader.) A "visit" means you drop by their cube and ask what's going on.

    Most people who are programmers should not be programmers. Programming became far too popular of a field over the last decade. There is not enough aptitude to fill the slots. These people are fairly easy to spot. Whenever you visit them they have nothing to show really, and they are working on a bug. They do not come to you to ask questions. There is nothing you can do about these guys, except try to find a non-programming task that fits their aptitude -- business analysis or documentation or something.

    Most of your effort should go into the pretty good programmers. These will visit you occasionally to ask questions. When you visit them they have made progress, but sometimes it seems tangential. These are the people who benefit the most from long informal design discussions, and direct "have you tried this and that" help in debugging. Visit these guys everyday and it will pay back a lot. You may even want to get a little Extreme with them and sit down next to them, or (best of all in my experience) trade modules. Actually give them the code you are working on and work on their code for awhile.

  186. Here's what people do by ipinkus · · Score: 1
    In your case, there isn't a hope in hell that your co-developers will write anything. In the rare case where they do contribute, the code probably hasn't been tested -- so it probably won't work or integrate with the rest of the project.

    What you must do is, write all the code yourself. Otherwise you'll be debugging the code of others line by line which takes longer than doing it entirely yourself. The only up side of all this is that you get to badmouth the rest of your team all term...

  187. Use slashdot to your advantage... by orius_khan · · Score: 5, Funny

    Block "http://www.slashdot.org" at the firewall :)

    Personally, I just complain about my co-workers on the front page of Slashdot... they all get pissed and quit, and then I can replace them with new people who know what they're doing. Seems to work....

    --
    Sometimes the best solution to morale problems is just to fire all the unhappy people.
  188. Abstraction by GrEp · · Score: 2

    I am going to assume that they are newbies, and getting paid as newbies should. Fix that first because you care most about your company's bottom line.

    When I was a newbie in a small consulting shop I faced many of the problems your co-workers have. I had no clue about the librarys I was working with (in-house, ObjectARX, MFC,..) and was too stupid to ask for help and spent all day in with my head in a book trying to catch up to speed. As long as they are newbies you become the mentor. Break projects down 1-2 day chunks that they can work on without too much trouble. Meet with them a few times each day to see if they are stuck on anything and encourage them to ask lots of questions. Also, since you have a group of them it might be nice if you split them off into pairs for some projects so one could research questions they have while the other codes. Rewards are also good. If they produce some good code show it off to others. Sometimes newbies have an attitude that they don't want to screw things up, and a little confidence goes a long way towards them beliveing in themselves.

    --

    bash-2.04$
    bash-2.04$yes "Don't you hate dialup connections?"| write USERNAME
  189. some thoughts by david_g · · Score: 2, Insightful

    Most important of all: remember that they are human beings. They're just like you. They're not merchandise, they have feelings, they think, and they're able to do good as well as bad.

    Having said that...

    Why did they behave like that? I would understand if it happened to one of them, but to all, except you? Something must be wrong; are you sure you're getting the full picture? Talk to them, find out what's going on.

    Do they like what they're doing? Do they want to improve? Do they want to learn? If they do, there's hope. Maybe you could pair with each one of them, and coach them. Also, get them to buy some good books, like Code Complete, The Practice of Programming, The Pragmatic Programmer (yes, I think it's a good book), etc.

    Of course, there's the deadline -- will someone die if it isn't met? Is it really critical? Or does it reeeelly, reeeelly has to be done until 'x', because someone says so? If it really is critical, then there's no time for you to coach them. But I believe that, the way things are, you won't meet the deadline, anyway.

    If they aren't interested, then I believe they're at the wrong job. Maybe you should make that clear to them. Life won't get better for you or for them if they remain where they are.

    Oh, and remember that in your hands there's the power to make those people better than they are now. Try taking the chance...

  190. How we did it in a collegiate environment by the_ed_dawg · · Score: 1

    We recently encountered a similar event on our software project at work, where we have been developing a behavioral modeling package. However, we did not have our faculty supervisor in the country for about a month before our release date due to attending conferences in Montreal, Australia, and China, respectively. Therefore, the task for motivation and monitoring fell upon me, the interim project manager (and an undergrad at that).

    Basically, I found the best way to keep everyone working was to schedule a time (usually about an hour) every day where I would stop by the lab and ask to see what they had done that day. It would usually embarrass them to say that they didn't have anything to show for a day's work, so they started working harder. If they had any questions about how to do something or what they needed to be doing, I was there to answer in whatever gory detail it required. Therefore, I was able to expect a certain degree of progress every day.

    These daily sessions were supplemented by a weekly group meeting. During this time, we would give definitive goals for the week and group lessons on programming in PyQt (our chosen language).

    Give praise when needed and force deadlines when necessary. Always be willing to answer questions and respond quickly to keep them on task. Unfortunately, you will spend less time coding, but the quality of their code will eventually pick up once they get going. Just remember that being heartlessly negative will only amplify the problem.

    --
    There are two types of people: those prepared for the zombie apocalypse and those who will be eaten.
  191. Thanks for the uplifting rant by OaITw · · Score: 1

    I hope no one on your team reads slashdot; if they do I hope your name is not really Cliff. Even if you made up a fake name, your staff can probably recognize the situation you just described and your style of writing or speaking.

    Your rant provides a good example of why top talent does not always produce top coaches. You sound like you have got promoted to management but haven't learned yet about how to be a coach.

    I give you some sympathy in that it sounds like you inherited your staff instead of hand picking them. Top that off with the fact that you are still expected to be a producer yourself. In your first manager role it is better if you aren't expected to write code yourself so you can focus on coaching your team.

    I am sorry to say it sounds like a deathmarch situation. How much confidence and trust do you have in your immediate boss? Sounds like this might be his/her screwup.

  192. One word by Rupert · · Score: 1

    Cattleprod.

    --

    --
    E_NOSIG
    1. Re:One word by Anonymous Coward · · Score: 0

      Remember that scene in the movie Pulp Fiction where the 2 guys took the other 2 guys downstairs....

      I think it's time for a RE-ENACTMENT!!!

  193. What's YOUR goal (LONG)? by Flu · · Score: 1
    To summarize:
    • What is it that you like about your job?
    • How much responsibility do you think you have about your job, the project, and the company?
    • What is your actual responsibility?
    • Locate areas where new resources can help (doesn't need to be coding)
    • Reconsider your own role within the project
    • Do you want to be able to work with your coworkers in the future?

    Quite some people have suggesting various kinds of threats, "show them the door" etc. to get the other's to realize the problem. Bad coding suggests inexperience rather than lack of interest, and I really don't think an inexperienced person will perfom better just because he's threatened.

    What to do depends a lot on what your personal goal is, and what you're trying to save.

    If you want to be doing design, coding etc., just stick with what you've been doing, and don't care about the others. Review your _actual_ responsibilities, not implied. Are you an appointed PM? If not, just go on, design and code, report your part as done as usual, mention the problems with integration tests for the PM etc. Your PM will recognize you as a good SW engineer, especially when he realizes the other's problems, and that will become his problem.

    If you want to become a true PM, then your job will become solving these kind of problems. Learn from the situation, and just get used to it! Remember, a project without problems doesn't need a PM!

    So, for the assumption you want to do something than just doing your part of the job, the next question is: What do you want to save? The project, or the company?

    Even if you're very good, taking over the other's part probably won't help, unless they are only producing less than 15% of what you're capable of (remember that you're most likely going to throw most of their code away and restart, since if they still can't get it to compile, they are probably having major design problems as well).

    Getting more resources are too late, you say. So did I at a project I was working on, but we were somehow always able to find isolated parts that could be done by external personell with fairly little support. Surely, support will be needed, so tell the PM that you're willing to sacrifice your own kloc-productivity, to concentrate on support. However, new resources can't rewrite existing code in an effiecent way. You will need to find parts that has little or none existing implementation.

    If it's just the project you're wanting to save, make the new resources take parts of your fellows code, and let them work on small, well-isolated fragments of less importance.

    However, this approach might intimidate them, and some might even start hating you. If they leave (or are forced to leave) that will be good for the company, but if they stay, productivity between you and them will be even lower whenever you need to cooperate again.

    If you're thinking larger, make sure your colleguaes start seeing you as the mentor. Work with them and let them (mostly individually) ask for your guidance or asisstance. Offer to do boring work etc. Let them grow and give them confidence. Let any extra resources do what you used to do.

    This is a larger risk for the project, but it will be the PM's job to convince management of that. However, your colleguaes will grow and become more productive in the future.

    Also, remember that the program produced is a mix of time, resources, features and quality!

    So, if there is too little time to introduce new development resources, try getting them at the test stage; Do integrations and builds as often as possible! Get testers to test whatever's done. Get testers to write unit tests, and perform intergration tests. Make sure they produce written step-by-step instructions of what works and what doesn't, so that the developers don't have to chase the bugs, just fix them! Let the testers re-test everyting that used to work (and everything that didn't work) with every new build.

    I hope you all succeed in producing your application!

    /FLu
    Software Designer

  194. Frequent Checks? by Anonymous Coward · · Score: 1, Insightful

    The most suprising thing here is that the lead (thats you) didn't know that they had no code until integration. A lead's job is to lead first, code second, so actually, I'd have to lay some of the fault on you.

    As a lead, you need to "poll" your junior engineers pretty often to make sure they aren't blocked. Junior engineers can be cowed by senior engineers and might avoid asking them questions because they "don't want to waste their time". Asking them if their blocked or have any questions lowers the barriers to them asking questions.

  195. I've heard a lot of talking by enkidu55 · · Score: 1

    About motivation and or firing people who aren't doing their jobs. What happened with sitting somebody down, looking them in the eye and telling them that they are causing harm to the project and asking them what they need. It sound to me from the post that you are obviously not satisfied with the quality/quantity of their work so then its up to you to bring them up to speed. Its not hard to talk to somebody about what may or may not be bothering them. And in the five minutes of conversation you might better learn what they CAN do instead of bitching about all that they cannot. Take notes of your conversations and when somebody above you asks for a status report from your project, refer to your notes as per your conversations with the other "engineers" Not only does that cover your ass from the who's running this thing department it might actually offer some feedback to the people that you are talking about.

    Try to remember that you once sucked at something as well and try to keep an open mind.

  196. do it yourself by Anonymous Coward · · Score: 0

    I was once in a situation like this when I came on board a project. All the work that was supposed to have been done was trash, and the two programmers I was supposed to work with were incompetent. Instead of fighting it, I put them in charge of "QA" (after I had tested, debugged, etc), to make them feel useful, rewrote all that they had done, and continued the project on my own from there. No sense in fighting it, if you can do it quicker.

  197. Ignore them by Anonymous Coward · · Score: 0

    Seriously. Ignore them.

    You don't want people like this writing code anyway, you'll just have to go fix it yourself.
    Try to get them cycled out and eventually (hopefully) decent people will cycle in.
    The ideal situation is to have someone around who is good at giving these people something useful to do (writing manuals, testing)
    This shouldn't be you though, you should be coding. Someone has to

  198. Comment removed by account_deleted · · Score: 2, Interesting

    Comment removed based on user account deletion

  199. My Nightmare Project... and the saveing grace. by dallask · · Score: 5, Informative

    I certenly feel your pain, I am currently the driving force in a 60,000+ code project. We (three of us) have speent a year on this project, and as of today, I have written 52,000 lines of code... and debugged all of it.

    Now, I am the project lead, which means that the 5 month late period falls directly on MY head. Looking back on my mistakes, I have enough information to fill one of those "What NOT to do" management books that you have on your shelf... but here is what I have learned...

    1) Make short, small, and precice yet reachable goals which every team member of your team must meet. If they cannot meet these deadlines, make it known that their job is on the line if they dont have a damn good reason.

    2) Make it a habbit of looking over sholders. NEVER trust that the self touted code guru has what it takes... look at their code ever few hundred lines, or every few days.... it dosent take long to glance at code to know if its good or if its crap.

    3) In large groups, impliment a peer review type system. Every week, pick one guy, and pass arround a few hundred line of his code. Pick the code randomly, and you might not want to tell the group whos code it is, there will be no anger direction that way... I found that helps. If the group can follow it, (they dont have to know exactaly what it does, just follow it), then ok... but out of a group of 5, there will be one that gets it just right, 2 that thinks its ok, and 3 that thinks it needs work. Have everyone present constructive criticizem of the code format, codeing methods, commenting, and structure to the group as a whole. The whole group will learn from it, and so will the author.

    4) HAVE WELL DEFINED AND DOCUMENTED CODE STRUCTURE PRACTICES!!!! I cant type that in caps enough... if everyones code looks the same, and acts the same, then if you DO have to kick one of them off the team, anyone can pick it up and run with it.

    5) If you choose to pick up all the work, then people will let you do it all... the trick is to EXPECT them to do the work! Make them accountable for missing a major deadline.

    6) If payment for this project is dependant on meeting deadlines to the client, then make payment to the developer dependant on meeting project deadlines. You have no clue how hard people will work when rent is on the line. :) it is a brutal tactic, but so is the business...

    7) Just remember that your not 'Uber Coder... no matter how good you are, your not going to carry the whole project yourself and get it in on time. But if you can make your coders accountable for their own work to the whole group... then you just might make a better group.

    Thats my humble advice, now... as for my saveing grace... I have had to carry my project because I learned these lessions the hard way... but the client is pleased with my work, and now, I know.

    Pre-Sig : My spelling sucks because Microsoft hasnt implimented a spell checker into IE.

    --
    The Code Ninja is swift with his tool, precise in his delivery, and deadly accurate in his execution.
    1. Re:My Nightmare Project... and the saveing grace. by Anonymous Coward · · Score: 0

      > Pre-Sig : My spelling sucks because Microsoft hasnt implimented a spell checker into IE.

      ...so sad.

  200. I am a developer, and occasionally, I suck. by windex · · Score: 2, Interesting

    The main problem I have is when I've lost focus on a project, mostly this is a internal political problem at the company, that causes a project that a developer designs to be completly retrofitted by some marketing f*ck who dosen't know what he's doing.

    Once that happens, the project goes downhill. It dosen't *always* happen, it just *usually* happens.

    What I find is that if you give each person of a group a rough idea of what they have to work with and what each chunk of code has to return or do, it will get done. Once you start spoon-feeding it to them, they no longer care to complete the project (multiply this by 1,000,000 if the person spoon-feeding is not technically inclined).

    Of course, I would have absolute faith in my employer under all conditions if they did things for me more offten, like random "take a day off", and mabye the occasional cash bonus at the finish of projects, but it just isin't going to happen and that's why most programmers are just hired guns, going to whatever job pays more. Having faith in my employer would most certianly give me a sense of purpose while listening to the mindless drivel of a marketoid trying to figure out if blue or red is a better color for a text box (actually happened to me, I interrupted the meeting and asked if I should go fetch a box of crayons for them to decide with, this didn't help :).

    But then again, isin't some kind of faith in your job what motivates employees at most companies?

    *shrug*

    Just my 2 cents.

  201. This works in movies by Faeton · · Score: 2, Funny

    You could steal their red stapler. That always seems to motivate people.

  202. Two words by RedWolves2 · · Score: 1

    Electroshock Theropy

  203. I know you. by Gannoc · · Score: 2
    You're the guy with no family that shows up at 11:00-11:30am and codes all evening.

    Who made the estimates on your little project, you? Did the sessions go like this:

    "Ok, this part is so easy, so very easy. You just need to do blah blah blah blah. Get it?"
    "Umm, yeah."
    "Ok, how long will this take?"
    "I'm not sure."
    "Lets say 2 days."
    "Ok."

    Lo and behold, they don't have it done in two days.

    The very fact that your idea of an easy solution is just to code it yourself says loads about you.

    You say that its very obvious that they understand what to do, because you've had "discussions". There's a little thing that we real engineers (Yes, thats engineers or developers, not "coders") like to do. We write "specifications". If you had written specs, or had them write specs, these problems would have come up early.

    No, I know you very well. You had lots of "discussions" where you basically came up with a clever system all on your own, using terminology and technology you were familiar with. Then you disappeared for two weeks into your cube, eating potato chips and rocking to mp3s on your noise cancelling headphones. Then you popped out, and were shocked that nobody had coded the design in your head as well as you had.

  204. Cowboy Coders == Bad by HisMother · · Score: 1
    As I said in my first post, and as another reply to your post has explained nicely, you're displaying precisely the attitude I predicted most folks would have. Everybody makes exactly the arguments you're making, and the fact is, they're all wrong, they simply are. I won't try to recap the vast literature on the topic, but you can certainly visit the pairprogramming.com web site, read any of the recent books on XP, and most importantly, actually try PP yourself.

    And although being "in the zone" is fun, virtually all code written while "in the zone" sucks. Many nifty pieces of software have an essential core written by someone who was "in the zone". That core provides much of the "wow" factor of the software. It also provides many of the unexplained bugs, and most of all, it always provides the nail in the coffin when it comes time to modify the original functionality, because nobody, including the original programmer, can understand it.

    As a 20 year veteran of a large number of big projects, I now strongly feel that I'd rather take three times as long to code something by really understanding it, than to code something quickly while high on caffeine, sugar, and lack of sleep, then spend a month debugging it.

    --
    Cantankerous old coot since 1957.
    1. Re:Cowboy Coders == Bad by Yunzil · · Score: 2

      Everybody makes exactly the arguments you're making, and the fact is, they're all wrong, they simply are.

      Prove it. :) Anyway, I've been to the website, and I'm still not convinced.

      And although being "in the zone" is fun, virtually all code written while "in the zone" sucks.

      My best code is written while I'm in the 'zone' state. If that's good or bad is another topic.

      than to code something quickly while high on caffeine, sugar, and lack of sleep,

      Ahh, maybe that's the difference. My 'zone' does not rely on any of that, and doesn't last more than, say, 6 hours, because I usually don't stay at work longer than eight, and I have to have time to eat and read Slashdot. :)

    2. Re:Cowboy Coders == Bad by Anonymous Coward · · Score: 0

      > virtually all code written while "in the zone" sucks.
      > nifty pieces of software have an essential core written by someone who was "in the zone"

      Try adjusting your attitude. Just because you aren't gifted enough to 1) write tight code; or 2) design "wow" software, please don't take in out on the few of us that are.

      > As a 20 year veteran of a large number of big projects, I now strongly feel that I'd rather take three times as long to code something by really understanding it...

      I'm also as a 20 year veteran with more than a few "Wow" systems under my own belt, and an IT manager that has had exposure to many others. Let me tell you, those "Wow" programmers generally write some of the most readable and stable code in the project.

      My recommendation? Learn to actually *read* the language the project is written in. Whenever you feel your "this code sucks" attitude coming on -- stop -- accept the fact code doesn't understand itself, and go back to reading what the code says.

      > I'd rather take three times as long to code something by really understanding it

      As an IT manager, I don't want to pay you three times your salary. I don't need everyone to understand "the system", really, I don't. Nobody in my company "understands" the code in Linux, Oracle, etc. etc., either. Anyway, in all likelyhood you'll 1) be on a diffferent project; 2) forget all that understanding; or 3) be working for someone else, by the time I need you again.

  205. To properly motivate them... by Anonymous Coward · · Score: 0

    fire them and hire me!

  206. Act like a boss by inerte · · Score: 2, Insightful

    My intern wasn't working the way I needed. So I asked my boss what should I do, and his answer was pretty clear:

    "Sometimes, you have to act like a boss".

    This was the only thing that he said... so simple.

  207. Learn to Supervise by Anonymous Coward · · Score: 0

    You started your supervising too late. Good communication is a constant thing. It takes work, but it pays off.

    Sitting down with each person and asking, "What's you plan of attack?" is a good way to start. Prima-donna's will get offended. Cooperative players will be happy to go over their approach, and even look for the logical errors early.

    Remember, finding problems early in the cycle pays bigger dividends.

    Oh, and ready, "How to win friends and influence people." It's a great book.

  208. Dead weight is hard to change... by ConceptJunkie · · Score: 2

    My experience has been that if someone has achieved some modicum of success over the years (e.g., he or she hasn't been fired), then nothing short of harsh action is going to change that. There are lots of people who will totally coast whenever possible, and lots of jobs where they can get away with it. Once ingrained, nothing short of fear for his or her livelihood will change that.

    At my last job, I kept vouching for a co-worker whom my boss felt wasn't worth keeping around. After initially giving him the benefit of the doubt more than anyone else (I was really the only one actually working with him), after a while I came to realize my boss's impression was correct and I had lots of talks to my co-worker about his productivity, etc. I ended up being appointed his supervisor (we were first hired as equals) but even that didn't work. He ended up giving notice the day I recommended he be canned. In general, I think I put up woth a lot more than I should have because he was a nice guy and generally seemed to be trying hard and the project we inherited was the worst code either of us had ever worked with (discounting perhaps the 1000-line dBase routines written by the boss's nephew I had to untangle at my first job in the late 80's), but given that we were swamped with work and I could never count on him to get anything done, and _then_ he started doing things like not showing up and giving lame excuses, I had no choice to recommend replacing him, and believe me, it was not an easy decision to make. Anyhow, it's clear he hated it there (so did I, and I left 6 months later), and him staying was doing no one any favors.

    Once crisis-mode hits, I'm afraid to say that based on my experience it's too late to fix problem workers.

    --
    You are in a maze of twisty little passages, all alike.
  209. Read Ayn Rand's "Atlas Shrugged"... by Anonymous Coward · · Score: 0

    Read "Atlas Shrugged" or "The Fountainhead" by Ayn Rand. Anyone who's ever been in this position will easily relate to both these novels.

  210. Manage your developers by Aging_Newbie · · Score: 2, Interesting

    I would suggest the following as the normal way you should work with your team --- You will be amazed how much things improve.

    1. When you assign some work ask them to plan and estimate their piece of the work. When they think about what they need to do, they will naturally ask questions -- and give you an opportunity to help. Stress the importance of their understanding what they are trying to do and thank them for clarifying the spec even if you think they should already have known what they asked.

    2. REQUIRE absolutely that they break the job up into small (40 hours and better yet 20 hours) pieces that they can unit test (what a concept!)

    3. Gently hold them to their estimates and when they exceed them, point out that developers typically underestimate by 30% until they get experience doing it. If they beat them let them know they did something neat!

    4. Follow up with them on a daily basis and ask how they're doing -- encourage them to alert you to problems early and then help them through the problems.

    5. Adopt coding standards. Just pick one -- the use of any standard is better than no standard at all.

    6. Plan code reviews for various modules -- start with really good ones and identify and praise the good parts, then go on to weaker ones. Avoid direct criticism and don't do code reviews until you have read and practiced the methods of doing code reviews (being considerate, gentle, and framing criticism in non-negative packages are a good start)

    7. AND MOST IMPORTANT - look in a mirror and tell yourself to do the same things! Look at your work and your estimates and start improving them.

  211. Pessimistic solution. by Davorama · · Score: 2
    To hell with them. Come work with me....

    Seriously, best advice is to take a good hard look at your situation and surroundings and make an honest assessment about whether you can succeed in that environment. If you come to the conclusion that you are doomed to fail cut your losses and get out if you can. Don't throw away good time after bad.

    Hopefully the rest of the advice on this page works for you and you can ignore this. Please don't just discount it out of hand though - you sound like a the honest hard-working type and I hate to see good people wasting their time and damaging their careers.

    --

    Davo -- Free speech, free software, AND free beer.

    1. Re:Pessimistic solution. by smack_attack · · Score: 2

      Quitter. It's far more damaging to your career if you never finish anything.

    2. Re:Pessimistic solution. by Davorama · · Score: 2
      I said it was pessimistic. For all we know this poor sod could have teammates with no clue or ethics at all and no hope for replacement. Management could be equally incompetent and unable to fix things (they hired these bozos after all.) Throwing more time at a situation like that is like buying more stock in a company who's stock has just taken a dive. It sounds/is idiotic but people do it.

      If I've got someone in front of me with good experience and references but I see they quit their last position with no references and I get
      an explanation that indicates that this person is going to hold me accountable for providing them with an environment where they can succeed I tend to take that as a positive sign that this person won't waste their time or mine.

      On the other hand you are right - people with one unfinished job after another on their resumes aren't likely to get the job.

      --

      Davo -- Free speech, free software, AND free beer.

  212. Screwups and recovery. by Jaywalk · · Score: 2, Informative
    I do team lead sometaims and I hate to tell you this, but -- as others have pointed out -- you should have known about this long ago. Next time you're in the lead make sure you have code reviews and regular status reports with work broken up so there are regular deliverables. That is, all the stuff programmers hate to do, but there is a reason managers insist on it.

    But that's water over the dam. You have a project you need to get back on track -- and fast. The first step: have you told your boss? I'm not talking about blaming the other guys, I mean expressing a concern about the project schedule. If he finds out the hard way, he's going to be peeved at the project lead. (That would be you.) If you warn him now, he might actually be able to help. Perhaps he can assign additional resources, change project schedules or at least warn his superiors that there is trouble brewing. Any manager worth his paycheck realizes the value of having employees who give him a heads up when there is a problem that needs to be addressed.

    Next, sit down with your coders and talk out the problem. Again, don't let it come across as blame or they'll just get defensive. Make sure they understand the schedule and what the problem is. Maybe they can work extra hours or maybe there are problems they haven't mentioned. In either case, try to come up with a work plan that meets the schedule or comes as close as possible. Include some form of accountability so you'll know if the schedule is going to slip again.

    Finally, you're probably going to be clocking in some late hours. Keep an eye on that and make sure you leave the office when you have to, regardless of the schedule. Killing yourself won't get the project done and will just make the schedule slip worse in the long run.

    Illegitimati non carborundum. (Don't let the b******s wear you down.) :-)

    Good luck.

    --
    ===== Murphy's Law is recursive. =====
  213. Get in Gear by webnuts4u · · Score: 1

    If you're the leader, you need to lead. Let your direct manager know that the project may be in trouble. The only downside is that he will know that you haven't been watching your project closely enough. Let your team know that the projects in trouble. Lay out the remaining tasks that need to be done and give them hard milestones. If they miss em' fire em one by one.

  214. Pair programming and Unit tests by richieb · · Score: 2
    I'd recommend pair programming in this case.

    I agree about pair programming. In fact, *YOU* as the lead should pair with the other developers, so that you can guide them and maybe find out what the problems are. Spend a day or two with each guy/gal.

    The other thing is to make everyone write unit tests, and if possible setup a continous build that compiles everything and runs tests everytime someone checks code in (you are using source control, right?). There are many OSS tools that do this and send email when things break (compile or tests).

    Then everyone will get a feel how the project is going.

    Don't hog the good work for yourself, just because you think you're much better. Somebody else should know the code too, or else you'll never get any vacation.

    --
    ...richie - It is a good day to code.
  215. Hire.... by _ph1ux_ · · Score: 4, Funny

    .... this motivational speaker for developers:

    ballmer

    1. Re:Hire.... by jsse · · Score: 2

      My former company really did that...but on ME. My situation was exactly like the poster and I've done all the coding, turned out it was me who got complained for being 'insubordinate' and 'disgruntled'. I told the movtivational consultant "Do I look like a killer? Oh forget about that huge stapler I swing in front of your face..."

  216. Are you REALLY late? by Anonymous Coward · · Score: 0

    First off, if this is the first time you have reviewed your friends' productivity, I'm not sure why you'd call this project "late". If you feel you are late, and you have just gone through your first review, you have to come to terms that you will be behind schedule. Either way, a reorganization is necessary. That does not necessarily mean people -- it could be time -- either way, you better take some serious action soon.

  217. The beatings will continue until morale improves by rhombic · · Score: 1

    'nuff said

    --
    1984 was supposed to be a warning, not an instruction manual.
  218. Weekly status meetings. by w3woody · · Score: 2

    Okay, it sounds like what you really need to do is implement weekly status meetings, where at a particular time and place every week, everyone gets together and shares what's going on. The meeting doesn't need to be very formal, and trust me: doughnuts can help keep people in a good mood, and don't cost a lot.

    But at each meeting you should have everyone go around the table and describe what they've worked on that week. Describe where they are in the code, how they're doing, any difficulties that have arisen. The meeting should never be judgemental; instead if someone is taking longer than expected, see if others can offer solutions or help. The whole theme should be group coherency; no-one is an island and no-one gets left behind or allowed to sink.

    If you do have these meetings, it may be best to place them on a Thursday; that way people are motivated Tuesdays and Wednesdays to do something so they have something to show. And that way, they feel like they can have some breathing room Monday and some time Friday to either catch up or slack off, depending where they are in the project.

    But always have them; insist everyone is there, and insist everyone share where they are. The meeting itself, if handled weekly for a small group of people should take no more than half an hour, so there is no excuse for the thing sucking down an entire day. And for God's sake, no presentations! Just an informal chat with the entire team there over doughnuts to discuss progress on the project.

    1. Re:Weekly status meetings. by Anonymous Coward · · Score: 1, Interesting

      There are some pitfalls to this. Some people are willing to say almost anything to make thier life more easy at this point in time. Frequently make them prove what they are saying is true. One project I worked on at a previous company had a weekly meetly one how thing were going. It was a real simple two month web project. The site needed some additional dynamic content. The junior programmer assigned to this had just his hand held on an almost identical project. So, we figured he could do this one. Every week he would tell us things were going well, but the project manager never said "Show it to me". We were to deliver the final product for review to the client one a Monday morning. We need the clients check latter that week to make pay role. The project manager and my boss came up to me on the Thursday afternoon before delivery. They explained to me the financial then tried to explain how they didn't have anything working. The other programmer had made a couple a static pages and the pulled out the excuse that he thought the client wanted a mock up not a actual working product (which was complete BS IMHO). I had the project to testing with about 20 hours of my work and to the client on time. The managers make three big mistakes here. One, the took this individuals word as the truth (never make him prove he had done what he said). Second, they had someone else bail him out. And finally, they didn't learn from what happened. A month latter I was doing in a day what people though he was working on for a month.

  219. Project management issue by tius · · Score: 2, Informative

    From the description of this particular situation I would have to say this is 90% a project management issue.

    Are there no schedule with individual milestones? Keep in mind that the designer (not coder as any schlock can lay down code) should provide input on time lines (e.g. sure, that date is reasonable for that goal...etc.).

    Projects also have to be monitored and have schedules updated to reflect reality and/or make necessary changes in work division.

    Also, use a tiered design approach; ie. high to low level. This way yes, the requirements & application domain are spelled out, but each design documentation layer brings the next level of gritty details to light. So, in terms of S/W design, a high level design document for the overall architecture. This makes it clear as to how components are connected and related. Then go down to document the individual module designs. These highlight the intent of how a module will perform it's function. With this in hand coding almost becomes trivial.

    Now a documentation trick that I picked up from a great mentor in DSP was to use different levels of pseudo code in module design documentation. High level stuff that is to be implemented in high level languages and is not too harry (ie. not some convoluted DSP algorithm) can use a very general level of detail in the pseudo code. E.g. Enable echo canceller AND run state machine Y. However, if one is documenting something to be implemented in assembly (particulary harry DSP algorithms) then use a detailed level of pseudo code that is equivalent to say C or some other high level language. The idea is that the intent of the implementation becomes easier to verify prior to ever writing a line of code. Overall, this also means that people have thought out how things will work in great detail and this has been reviewed; ie. at the design documentation level. This also simplifies & improves the effectiveness of code reviews since the design intent is well documented.

    Which reminds me: code comments should describe the _intent_ of the code and not what the code actually does.

    As for bad code, that is what code reviews are for. Now bad code in DSP can be very nasty, particularly in assembly as one incorrect shift can cause huge problems and be very difficult to find.

    BTW, I'd recommend simulating the code after a code review and it's fixes, to help ensure code sanity.

    I've also seen enough DSP and other "interesting" domain code from people with Masters and even PhD's that is pathetic as far as good code is concerned. I have also worked with brilliant people with this kind of background that seriously put us mere mortals to shame.

    If your designers are really that poor at coding and you do have the skills then I would suggest a frequent level of mentoring. A positive atmosphere and some mentoring can go a long distance in terms of improving a designer's abilities.

    Anyhow, good luck!

  220. Use some sort of reward program by Anonymous Coward · · Score: 0

    Knowing the tendencies of most /.ers, I'd say some sweet hot man-candy would fit the bill just nice.

  221. Who the hell hired those idiots? by Skapare · · Score: 2

    Who the hell hired those idiots? There are too many GOOD programmers looking for work to accept this excuse. Whoever hired them should take the responsibility as being the principle cause of the failure, and replace them on the spot. GOOD programmers can pick up on a project fast. Afterall, this is only a 20K project. That's relatively small. So this will set you back at most another month. Just do it. Please don't encourage BAD programmers to stay in the field.

    --
    now we need to go OSS in diesel cars
    1. Re:Who the hell hired those idiots? by Anonymous Coward · · Score: 0

      I cringe when I read articles like this. I've been out of work for over a year and these asshats can't even code to a design spec.

    2. Re:Who the hell hired those idiots? by LarryPeel · · Score: 1

      I agree with this except that it is extraordinarily expensive to fire someone and hire another - I worked in management before I became an independent contractor (more money, less aggravation) and the costs associated with firing and hiring are greater than one or two delayed projects. The problem, IMHO, is that competer programming is suffering from the Major League Baseball syndrome - dilution of talent. I entered the field by accident - as did most of my colleagues - and was drawn to it. This was before the time of computer science degrees and before the time that many people entered the field because it was highly paid - yes, I am an old fart. Computer systems require a very special kind of person - not necessarily nice, but one who can think like a computer, understand business and devote a large amount amount of personal time to working 'off the clock'. It's not for everyone. I don't think there's much you can do here. You can't fire an entire staff - political problems. The job has to be done. On the other hand, when the 10 and 20% layoff edicts come down, who are they going to keep? I been an independent for many years and been in this same situation numerous times. There's nothing better than waving good-bye to the slackers while you confront your boss with a competitor's offer. Just grin and bear it - revenge is a dish better served cold.

    3. Re:Who the hell hired those idiots? by Skapare · · Score: 2

      Expensive, maybe so. And maybe what the lead guy needs to do is just code the whole damned thing himself and make it clear to everyone up the line to CEO that he's in there saving the company's ass to make sure the project gets delivered. Maybe, just maybe, they will reward him by firing 3 idiots and hiring 2 qualified people to replace them (at a gain in productivity). Too bad salaries get counted as expenses and executive stock options get counted as capital investments (well, not at WorldCom or Enron anymore). It should be the other way around. Then it would make financial sense to hire good people and keep them happy.

      --
      now we need to go OSS in diesel cars
  222. Code that was hard to write... by Anonymous Coward · · Score: 0

    ... should be hard to read.

    Words to live by.

    1. Re:Code that was hard to write... by Inthewire · · Score: 0

      Taco? That you?

      --


      Writers imply. Readers infer.
  223. What about eXtreme BO? by Superpaz · · Score: 1

    eXtreme programming only works if all members of your team practice proper hygiene.

  224. MOD THIS UP by Anonymous Coward · · Score: 0

    The point about programmers believing their work is in vain has got to hit close to home for a lot of people. Imagine working 60-hour weeks for a couple of years on a game that's probably going to be killed by its publisher, and you can see why so many coders spend all day on Fark and Slashdot.

    It's easy to say it's the coder's responsibility to find a more motivating project, but with the job market the way it is, a lot of people end up feeling both lucky (to have a paycheck) and guilty (for surfing all day) at the same time.

  225. Problem solved. by Anonymous Coward · · Score: 0

    I just post my gripe to /. with enough detail so my coworkers will see it and be shamed into 1k-lines per day productivity. Works every time.

  226. Suggestions for motivation` by Anonymous Coward · · Score: 1, Informative

    My experience comes from managing a small (8-person) team. There are a couple of things I learned.

    First, I assigned tasks. If an employee failed to complete a task, I often broke it up into simpler/smaller tasks, and requested them one at a time.

    Some employees were self-starting, some required more hands-on. All required positive feedback. Even though we were about the same age, they seemed to look up to me for approval. I don't know why.

    So, managing a team can mean a lot of work and coordination. I would say that in your situation, you have become the leader.

    Torsten

  227. Give up, or go somewhere else by Anonymous Coward · · Score: 0

    You must be at a big company, because only big companies can tolerate incompetence - small companies usually go under from incompetence.

    So odds are good you're working at a big company.

    My advice, is to just give up and slack off. Where do you think you're going to go in a big company? And if you're going nowhere, what's the point in getting there any faster than you have to?

    It's probably too late to be an underachiever at your present job, but in the future, you might want to think about underachievement as a survival strategy.

    Unless you want to go into management, in which case, I pray for your soul.

  228. "de facto" Management by happyclam · · Score: 2
    You have to manage your team better. You are the leader, take responsibility for the output.

    Actually, he said "co-developers" and "de-facto role of a software team leader."

    What this really means is that Our Hero's manager is weak, a guy who wants to limit his own accountability by blurring the lines of management. He won't acknowledge Our Hero's management role with an actual managerial title or compensation, yet he will continue pushing project responsibilities onto the poor, inexperienced guy.

    This allows the manager to take credit if it works and to avoid blame if it doesn't. Been there, done that. In the long run, no matter how this project turns out, Our Hero will still have the same bad boss, and he'll be in this project situation again and again until he gets a different boss or redefines his role up (into management) or down (back into coder-only).

    --
    He looked at me and said, "Kid, we don't like your kind, and we're gonna send your fingerprints off to Washington."
  229. There seems to be a bigger problem here... by AltaMannen · · Score: 1

    ... unless you have a really backwards hiring process I doubt you'd have 3 people end up on the same team that are as useless as you describe them.

    One in 5, yes, but 3 of 4?

    Perhaps there is a problem with architecture or maybe there is too much irrelevant documentation to solve the tasks. The more uncertain people are about a software interface the less probable they are to ask questions about it, at least in my experience.

    I think you will need to work with them, either paired programming or whiteboard programming (yes, doing code in handwriting) and dedicate a large amount of your time to "lead" the team. Make an example of a programmer by asking him what his task is and ask him how he intends to solve it describing everything in detail.

    Being the one who is most familiar with a project also requires that you have the social skills to make others work in a team, teamwork rarely happens by itself.

  230. Reciprocality by Anonymous Coward · · Score: 0

    It is very simple. You are a mapper, they are packers. Go to www.reciprocality.org for more info.

  231. Show some interest by tldraben · · Score: 2, Interesting
    One easy and effective way to motivate is to show some interest in what your co-workers are working on. By interest, I don't mean a status meeting every other week in which you point a finger at them and say "What have you done?" I mean some general day-to-day chat about their portion of the project. It's amazing how hard people will work on something when they know that another person is waiting for the output and cares about the quality of results. The opposite is equally as true.

    Look for a way to make your co-workers succeed rather than putting effort into documenting their failures. Otherwise, you'll perceive yourself as working with "idiots" the rest of your career.

  232. so what? by bob_jenkins · · Score: 2

    I know how I would react. I would ignore that everyone else wasn't doing anything, let the project run over, and eventually do all their coding myself. Single person projects are so much easier than multi person projects.

  233. Pairs and follow-the-leader. by jfisherwa · · Score: 1

    In my experience, working in pairs with someone taking initiative on most of the project (yourself) works wonders in getting people with different skill levels and styles on the same page.

    When you map out and start a project, think of the most complicated functions within each class/object/module and discuss how you plan on implementing them with the team.. even if they are doing all of the listening, they will understand the goal and how you are going to do it (even if it is over there head).

    Work on the classes that are going to be used throughout the entire application (the ones you see as being important to reducing development time and increasing efficiency) - and as soon as you are done, do one or two implementations of this class.

    Pair/group up and demonstrate how your class is actually implemented--you can touch base on the actual class again, but don't spend too much time (beyond talking about any trouble you ran into, or the cool parts of it) -- concentrate on the actual example of implementation.

    Suggest a location for them to implement this, and that if they have any questions, you're just a few feet away and that you're about to begin on the next class. Touch base on how you plan to do the next big class, and repeat the above steps with question/answer breathers after they have finished implementing the previous class everywhere (or atleast to the point where they think they are comfortable with it).

    You are obviously the most skilled of the bunch here, so they should be (and will be) following your lead and welcoming your guidance. (if they don't welcome guidance, they will never be real programmers. fire them now.)

    This really has worked for me well on smaller projects that I lead, where there is a significant gap in skill level or initiative.

    A lot of good comments here that really do work on bringing someone up-to-speed -- not so much with a project, but on how you as a leader operate and think. Get them into this rhythm, and they will soon have confidence enough to take initiative themselves (with you checking over work still).

    Best of luck!
    Jason Fisher

  234. Easy. by Anonymous Coward · · Score: 0

    This sounds easy. Involve your manager. Have him/her involved in the integration stage. That ought to motivate them. You sound like a good coder. Get somebody else to motivate them.

  235. XP is gaining acceptance by Watts · · Score: 2, Interesting

    As a Computer Science student (one year left), I took a software engineering class this past semester that was basically about the different models and processes of a project. While the waterfall model and others were used and introduced, a variety of techniques like XP were taught as well. The advantages and disadvantages of different development techniques were addressed, along with material on how to find the right process for a given task.

    Although acceptance can be slow, schools *are* teaching this.

  236. No coder is an island. by TheAwfulTruth · · Score: 2

    Never let anyone go off and code on some large single task without keeping a good eye on them. Micromanagement is often a dirty word, but to manage multiple coders that are supposed to be all working on the same project, you need clearly defined and intricate goals. There should be meetings and code reviews at least once a week. Integrations should be staged, as you said, "early and often" that means at least weekly, up to daily if applicable.

    Any slackers then show up early and they will end up being hounded (maybe by you, or the rest of the team). They either shape up or get replaced. There aught to be plenty of people looking for jobs these days.

    One would hope that the idea of remaining an employee would be enough motivation to start pulling their weight. Beyond that, generally a coder works better if they believe in the project and believe in their team mates and bosses and have a generally friendly atmosphere. But I got to say, these days that luxury just isn't as prevelent as it used to be.

    Also, even if they are coding. Keeping good track records of performance and code quality is also important. Basically, if you've got lazy programmers they will get away with what ever they can. Just don't let them get away with anything for any length of time. Don't wait until it can even be a problem.

    --
    Contrary to popular belief, coding is not all free blow-jobs and beer. Those things cost MONEY!
  237. Just say no. by pongo000 · · Score: 2

    Unfortunately, the best coders don't always make the best managers. I've seen extremely good coders fail to manage efficiently, usually for two reasons: (1) They spend too much time coding, and not enough time managing, or (2) they simply aren't good managers.

    The original poster is in a bind, as he's being forced into a position to wear two hats without adequate resources to manage both. My suggestion would be to put the ball back in mgmt's court: Make it clear that you will either play the role of developer, or the role of team lead, but not both (unless adequate resources in time and pay are allocated).

    Continuing down this track is simply giving mgmt what it wants: Two job descriptions filled for the price of one. Your performance suffers, while the bean counter who made this ludicrous decision wins, at your expense. You are being used, plain and simple.

    Just say no.

  238. Keep in touch with them... by rusty+spoon · · Score: 1

    It sounds obvious but when you are the lead and/or you have juniors you *must* keep in touch with them, you must show an active interest.

    Daily meetings: Walk up to them, ask them how they are doing, ask if they have anything to demo, ask to see the code/design, ask if everything is okay, if they have problems etc. This should take no more than ten minutes each person - time yourself to ensure you don't squander massive amounts of time discussing time travel or quake strategies (is there such a thing?)

    Show them the way: Periodically (every few days) drag one of them from their cube so you can share some brilliant insight into how things get done. Explain the problem you had and the magical solution you figured out. Ask them how they would have solved it. Get *them* involved in your bit so they understand the one true way.

    Code reviews: Review one of the other developers code *really* harshly and then have him review someone elses etc. Reviews work wonders especially when they are *very* harsh and if you set the bar really high they will try much harder - possibly exceeding your quality/quantity level. Do this periodically and also force them to review your code.

    When they are slow/late/buggy: Make sure they know it. Have a post mortem at every event. If they are early figure out how come they worked so fast so it can be reproduced. Make sure everyone, including you, learns from each event.

    Encouragement: Doesn't matter how small their achievement make it BIG. Everyone loves to hear "That's great, well done" so make sure they hear it from you. Also, encourage them to read more books, buy the books and hand them out (after you have read them)...then ask for opinions on the books and discuss them briefly.

    Do less coding: Sadly, when you have a team to run there is less time to do the fun stuff. It's a fact.

    Over the years I've noticed that there are more 'career developers' than those that do it for fun. I find these are the ones that need the most attention, the most encouragement (and also produce the crappiest product).

  239. let go of your feelings by Anonymous Coward · · Score: 0

    fuck 'em. do it all yourself.

  240. Do u compete at all? by bowls · · Score: 2, Interesting

    Do your co workers care?
    Simple point, after this project, if you have shown you are the brains and brawn(let us hope) then you will stay with the firm. Look long term. You have shown from posting your comment that u care. That is important. Many firms die to hire empoyees who care and know what they are doing.

    As for your co-workers, Try and get em to take part, they may well be genuises at keeping code together after the end of a project, brilliant at making sure project bosses implement the right thing(damn good communicators), you might not like doing doing all the work, but are you a team? You say they aren't completing, I hope u are experienced enough that completing is not all.
    If u are my sympathies.
    Most folk I have worked with reallly did not like being shown up, but I learnt from them, I showed that I learnt from them. Then all of a sudden they were level with me. Thinking they were not just left behind, these guys/gals learnt from me, thinking that they therefore can equal him me . Some one mention

    --
    Enjoy, well never give up.
  241. Ability is more likely than motivation by cdn-programmer · · Score: 1

    I've been a manager for several years and a consultant for more. It is far more likely that ability is the issue than motivation. But whether ability or motivation it is the MANAGERS job to correct the problem.

    The problem is that most managers will not effectively solve this sort of problem. Furthermore Human Resources people tend to think that if the programmer can find the office then somehow productivity amoung programmers will be somewhat similar and typically somewhat in line with their credentials. Simply put - these ideas are totally flawed.

    Productivity between university educated programmers on the job can vary more than an order of magnitude between people on similar tasks. In addition, the highly productive programmers tend to be highly productive on all tasks and the unproductive programmers similarly tend to be unproductive on all tasks.

    One solution is that if you write 1/2 th code for a project then you deserve 1/2 the salary budget. (in fact you might merit more than 1/2 the budget since the management overhead will tend to focus on the unproductive drones) Of course - this sort of fairness rarely happens.

    A better solution is to just quit and hang out your own shingle so to speak. If you really are good, then you will develope a reputation rather quickly. You can earn more than 2x per hour compared to employees doing the exact same work.

    Some of the pitfalls that I ran into during my days as an employee:

    1) a co-worker suggested I stop working so hard because I was making "them" look bad.

    2) co-workers tried to black list me from the informal office "good guys" because they resented my abilities. It turned out _all_ those co-workers quit save one and I ended up running the project.

    3) co-worker tried to sabatoge my project team. This was quite subtle.

    4) co-worker was assigned the task of developing a critical subsystem. After more than a year of pork barreling this co-worker had not written a single line of code and in fact was not technically able to do the job. This got to a very critical junction in the project and the chap was clearly counting on arguing to the managment that when we failed the reason for the failure was "my" specifications on how this subsystem had to function and not "his" inability to do the task.

    In fact in this case there was a LOT more going on because head office was planning on deep sixing the whole project if we failed. There were more than 50 jobs at stake.

    I grabbed my top programmer and wrote that subsystem while management was on the plane to Houston with a demo planed that of course needed this critical subsystem. It took us Friday til 2 am and part of Saturday afternoon and the subsystem was up and running and fully functional. This for a job the co-worker had sat on for more than a year.

    The demo was a great success and it saved the whole project which employed more than 50 people. My co-worker's response was to go to the VP and claim I exceeded my authority when we developed the subsystem. He tried to get me fired! That backfired in his face because at the time he was on holidays and I had in fact been put in charge of his division as well as mine so I did have the authority to do his job.

    So there are some of the dirty tricks that _some_ people will pull to get competant programmers out of the company. A highly skilled competant programmer is a threat to less skilled technically and usually more skilled socially brown nosers who are looking to climb the promotions ladder.

    So if you are writing 50% or more of the code on a project then beware... typically there is a LOT more going on than recognition of productivity. You can't be brown nosing and office politicing if you are writing code.

  242. Motivating your co-workers by inode_buddha · · Score: 1

    I dunno how this might help for real, but here's a bit of info: I don't even work in the IT industry, yet I face the same scenario on an almost daily basis. Hence, I conclude that the problem is probably more social or political than anything (assuming the co-workers can be proven competent in their fields). If not competent, then it's time to have a few words with your hiring dept., HR, or whatever you call them...

    --
    C|N>K
  243. Some recommendations from the field... by Fnkmaster · · Score: 3, Informative
    I see responses that fall into several categories here: 1) XP/Pair Programming! 2) Push it up the PHB food chain to your boss or his/her boss, etc. 3) Take responsibility, you aren't just a coder, you are a manager now, give them some mentoring and monitor them carefully 4) Get them fired.

    These are all not unreasonable suggestions in certain scenarios. A lot of it has to do with the tradeoffs involved in your deadline. I'll tell you this: you undoubtedly need to meet with your manager at some point in time. Lay it out calmly and cooly and explain whether, in your judgement, the team has potential or is beyond hope. Discuss how you can still meet the deadline, or explain that you need to push this deadline a bit because there's going to be ramp-up time associated with getting this team up to speed.

    You can be a team leader without being a full-time manager. In fact, you should be, in my opinion. A lead developer for a team needs to be concerned with project design, deadlines/scope clarification (from the technical side at least, though you don't have to spend all your time in MS Project to represent the tech team in this regard). It's better that the lead developer not be directly responsible for HR concerns, schedule reporting, and shouldn't have to be the primary negotiator with the business/requirements side.

    That aside, firing people who are continually nonproductive is reasonable - but I'd push that decision up to your manager and let him/her decide that - and generally, unless this is a small startup, people get more than one chance to screw up. Personally, I think they should get two, not five or six. And they should be told that they've been screwing up - ASSUMING that they are supposed to be mid-level or more experienced developers. If these guys are junior, or this is their first job out of school, they need to be cut some slack, and your manager shouldn't have given you a team with four new kids as your first gig as a development lead.

    So this leaves pair programming and mentoring. I don't think there's much of a difference, but I'll say this - pair programming is helpful even if two junior/dumb/mediocre programmers are working together. And if you are working with each of them in turn (swapping out) they WILL improve over time, unless they are ROCK stupid. I can't judge whether these fellows are rock stupid, or just inexperienced, or not good at thinking in the logical manner that programming dictates. I have seen people improve in certain ways, but I've never seen a revelation in which a shitty programmer became a key contributer.

    If their egos get in the way of effective pair programming (or mentoring - well, hell I think you'll need to be doing rounds and mentoring as well as practicing pair programming as much as possible), then you will need to exercise a bit of leadership skills, and make clear to them that they are partially responsible for the team falling behind and that you all need to work together to get things up to speed. If they still resist, take them aside and explain that they are blocking progress, and you'll have to push that up the management chain.

    As for the rest of extreme programming methodology - well, I agree with posters who suggest you might want to try instituting pair programming first, and seeing how that works. If you feel comfortable with that, then instituting the rest of XP for future projects might be a good idea (though I don't know how adaptable some of the methodology is to embedded systems development - it is really geared toward end user app development, IMHO). For other ideas and perspectives check out the book Rapid Development from Microsoft Press (I know, we all hate Microsoft, but there have been some good ideas for software team organization and development methodology to come out of their shop). Plus, it's definitely easier to sell management on organizational ideas from Microsoft than something like XP (though you can certainly find XP success stories out there as well).

  244. Make sure your developers know how to fail. by Anonymous Coward · · Score: 0

    Tell them, "It is possible that you might not be able to handle this on your own. Please come to me as quick as possible if you need help." I was placed on a big project. I didn't know how to fail. I failed anyway, and it hurt myself, my department, and the company. So I left in order to save face for myself and my department.

    A developer should never assume that their management knows exactly what they're capable of, or what kind of project they aren't (yet) suited to. I didn't know that for myself, and it cost everyone.

  245. Three Fingers! by Anonymous Coward · · Score: 0

    I spent several years working in a VERY large organization. Whenever anyone from tech support came around to 'upgrade' my computer, I'd say, "OK, but first, leave 3 fingers from your left hand as security."

    If they were new, they'd laugh, and I'd say "Yes, three fingers." They wouldn't quite believe it, but they'd start to get concerned.

    After a couple of iterations, I'd get to "How else do you propose to ensure that this 'upgrade' doesn't have negative consequences?" The ones who had no ideas were sent away. Most started to think:

    Backup.
    Spare parts.
    Step by step documentation.

  246. Code Reviews by inkfox · · Score: 2
    Picking a day every other week to do a code review does wonders.

    Employers look at this and say "What!? You want to dedicate 10% of our programmers' time to looking at code?" But they miss the point.

    With code reviews, people become accountable for their code, and it quickly becomes apparent who is and isn't producing. This motivates people who don't want high visibility as slackers, and makes it easier to prove a case when you approach management about replacing somebody.

    --
    Says the RIAA: When you EQ, you're stealing bass!
  247. Increase visibility, communication by defile · · Score: 2

    If you're the project leader, the blame rests squarely on you when your superiors ask you why it's not completed! As such, there are two things you can do to make sure the project is moving along:

    1. Make sure all progress is visible. Be able to view everyone's code at any time. How you achieve this is unimportant (CVS, shared development directory, whatever). Just make sure you can see if work isn't getting done.
    2. Talk to your developers often. Not just a "how are things going?". Almost everyone responds "fine" and leaves it at that. Ask them questions, anticipate problems they may have had and see how they worked them out, get them thinking. Maybe even set up some pair coding sessions, etc. Especially do this if you are unfamilar with a developer's work habits.
  248. Show me three useless programmers.... by orthogonal · · Score: 2, Funny

    Show me three useless programmers....

    And I'll show you two testers and an aspiring manager!

  249. There's no such thing as a bad team... by wickedhobo · · Score: 1

    In infantry units like Recon and SF, they say,"There is no such thing as bad teams, only bad LEADERS!" And these people build teams like most developers can't believe. These guys can finish a sentence that another one started. They aren't just saying that to be gung-ho tough guys. It's true.

    I've found that to be true in software as much as anywhere else.

    --

    --Stupidity is Self Curing!
  250. So far overlooked: They're _domain_ people by g.a.g · · Score: 1

    I see this from a different angle than basically all of the responses posted here so far: I'm a (what I would consider) mediocre coder, who comes from the domain side, like I suppose the people are you're working with. I know a lot about the domain I'm working on, but have not had enough exposure to Java and coding in general - it comprises about 20-30% of my job, not enough to get _really_ up to speed. However, I'm the first one to admit my need for tutelage.

    So, your answer is in the above: Tutor them, implement some of the XP stuff mentioned above (Pair Programming, code reviews, frequent builds, unit tests), and feel free to take over some of their assignements.

    Of course, if I misread this and they're just lazy buggers, threaten them with management... and look more often over their shoulders.

    --
    Hurricane Application Group, Dept of Meteorology Control, Ministry of Proactive Defense
  251. eXtreeme Programming rocks! by neitzsche · · Score: 1

    I agree with your insightful comment. I wish the moderators would mod yours up.

    --
    "God is dead." - Frederik Nietzsche
  252. Don't procrastinate the inevitable by helix400 · · Score: 1

    Having been in your situtation, trying to carry everyone elses weight, I've learned a tough lesson. The longer you do their work, the longer you delay the day that everyone gets screwed over. Then, FINALLY, the coders, managers, etc, all learn their lessons. Bite the bullet now, and just stick to your coding. When everyone's asking why the final product isn't done, your bosses will discover a real problem, and they'll do something to fix it. They'll either fire the programmers who didn't pul l their weight, or they'll hire new programmers, or whatever. Either way, with your current team, that terrible day will come. Get it over with now. If you don't, your bosses will continue worrying about other areas of the business, knowing full well that you're constantly maintaining and carrying the weight of a "smaller" problem.

  253. Fire them. Now by wowbagger · · Score: 3, Insightful

    I must respectfully disagree with you - this guy needs to get these guys fired NOW, while at the same time explaining to his bosses that the schedule IS going to suffer in the short run.

    I had exactly this situation myself - I had a programmer who was totally incompetent. Unfortunately, his job title put him squarely in my critical path. I had MANY discussions with management about this, and every time it boiled down to "well, something is better than nothing, isn't it?"

    Wrong.

    We downsized, and he went. Now, I have a competent person filling the role. Guess what? We are having to rip out all the code the moron did, and re-write it. Because we were paying the moron's salary, we couldn't hire a good programmer to replace him. Because we wouldn't admit he wasn't up to snuff, we didn't schedule correctly. Because he didn't identify flaws in purchased code, now we have to live with them, because the service contract has lapsed.

    Joshamania is correct in that firing these people will slip your schedule, and that hiring new guys will slip your schedule. However, your schedule is going to slip, period - take a deep breath and get over it now. You can take a single slippage, or you can continue to hemmorage time through these bleeding assholes (now there's a vivid image, if I do say so myself!).

    Suck it up, fire the guys who cannot/will not get the job done, and get people who can. You cannot afford to pay someone who isn't pulling their weight.

  254. Two orders of magnitude by Spazmania · · Score: 3, Insightful

    Back in college, a professor told me that there are up to two orders of magnitude of difference between the the productivity (as measured by debugged lines of code) of the basic "competent" programmer and the guru. Two orders of magnitude. For the math impaired, that means that the genuine guru delivers in a week what it takes the entry-level programmer a year to produce.

    I've seen nothing since to suggest that this isn't true. If anything, I've seen proof after proof... Programmers who struck me as bright and experienced, yet time after time they just don't get it. And programmers who do get it. Instantly. In the first two weeks on the job.

    You're not going to like the answer, but its this: Hire programmers until you find ones that deliver, and do what it takes to keep them. Fire the rest (which is to say, don't fire them but suggest to them that they should seek alternate employment quickly.)

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  255. There is a difference by NorthDude · · Score: 2, Informative

    Between an inexperienced developer and an incompetent developer. If it is because they are fresh out of school, but you can see they "got it", that they are brilliant, feed them with all the code and the algorithm etc etc that you can. If they are freshies, and they want to learn, they will grasp things really fast and will learn new concept at an inimaginable speed, becoming productive pretty fast.

    If they are just incompetent, ("senior" VB developers who can't even subclass a form or "senior" java developer with "10" years of java coding who have never heard about design patterns for exemple), then you are just in deep sh1t...

    --


    I'd rather be sailing...
  256. They'll just telnet to their home linux box by Anonymous Coward · · Score: 0

    They'll just telnet to their home linux box and use lynx so it looks like they're coding.

  257. Worst Dev Team Ever by Kirby-meister · · Score: 1
    I participated in a workstudy at Virginia Tech last semester for my Unix class. The goal was that my team would build the implementation of the rules, while the other team would build the interface the program used to communicate with the user.

    The function worked in a while loop -
    while [[ `sed -n '1p' do
    taskA
    taskB
    done

    We couldn't share code with the other team, either; the project specified we share information on what our functions did by using a text file to hold all game data and such.

    My group of three split up tasks - I would do initial read in of rules, the file format, quitting, and base of the main function. One teammate was to do rule checking, and the last teammate would do the writing to the file. I left comments for them for where to put this code. Unfortunately, they never saw the comments because they didn't touch the file until the very last night, where the submission came in late and we were lucky the professor was a nice guy to accept our ill-begotten submission.

    Luckily, the grades were based on perceived effort, and all my RCS logs showed I had put nearly all the effort into this project.

  258. Re:AC's Rule BIOTCHES by Anonymous Coward · · Score: 0

    shut up chess buttfucker

  259. Re:Two orders of magnitude - you underestimate by cdn-programmer · · Score: 1

    Your professor underestimated. On many projects a "just" competant programmer will not succeed in a lifetime.

    But your comment is good and I agree with what you say. Rather than "fire the rest" how about simply compensating on the basis of productivity. No productivity - no pay.

    It sounds ruthless but I always liked the idea of paying the people that do the work and letting the others find something else to do.

  260. Try this by Anonymous Coward · · Score: 0

    First, become the lead and make it official by the manager. If you are doing teh work, you should at least have the title. Then try the following:

    1) Assign each code a section or sections of code to complete. Be sure to explain in detail what that code should involve. Only assign a few sections at a time. Once they complete that section, assign more. Start with simple sections and get progressively more difficult.

    2) Encourage questions. Don't be negative, give only compliments. Make sure that they solve thier own problems but check up on them. Don't criticize thier work, but give complements whenever it is rewarded. Give guidance to help them get a good response from you. Don't repeat guidance more than once. They should learn from thier mistakes.

    3) If they really blow it, reprimand thier action but not themselves. Tell them why you think they blew and how it impacted you. Then tell reinforce the good points they have. Don't start with reprimands when they first start going.

    This concept is based on Pavlov(sp?) Dogs.
    1) Give them a clear and easy goal to reach then expand the role.
    2) Reward good behavior
    3) Punish bad behavior (but don't punish the person, only the behavior)

    Also, don't hold them to your own standard, they never'll never catch up to the amount of experience you have while you are working with them.

  261. Whee. by Anonymous Coward · · Score: 1, Insightful

    You absolutely sure they understand the concepts/problems/etc. behind the program? I've found that many people will just nod and smile, all the while having absolutely no clue. Even in a professional environment, some people can't get over that irrational primary school fear of asking questions.

    If they really do understand it, the hard part is figuring out why their code sucks ass. Are they fresh out of college? That's the de facto reason. *snicker* If they've had previous experience, congrats, you're cleaning up someone else's mess - their previous managers should've been figuring out why they can't code and fixing the problem.

    Make it very clear they can ask you for help. Sometimes people don't figure this out until you've said it for the hundreth time. :p Try to team the better of them with the worst of them and have them work in pairs.. Check logs, block sites if they're wasting time.. Most of the stuff people have suggested is probably a good idea. ;)

    Firings? Sounds like you can't afford (or possibly haven't the authority) to fire anyone at this point. Tough luck, a good random firing is a great fear tactic to get people motivated.

    Worse comes to worse, ask your previous managers/etc. for ideas. They've possibly worked with some of these people before, and have almost certainly worked with people like them.

    The final option? Tell your superiors why the program is currently sucking ass. Watch yourself here - while it obviously isn't all your fault and such, sometimes superiors figure - 'Hey, yer in a management position. You, and only you, are responsible.'

  262. They don't understand the design by sunset · · Score: 2
    ... The others definitely do understand the requirements and the design, because we had plenty of discussions....

    I don't think they do. Coding is the process of explaining to a computer something that you already understand.

    If you have THREE programmers, presumably with some experience and an understanding of their tools, with NO useful code, then you have a communication problem.

  263. *Why* aren't they coding? Good/bad? by billstewart · · Score: 5, Insightful
    What we have here is a failure to communicate. If you're surprised, it's not just a problem with them....

    You need to understand why they're not coding. Here are some possible reasons:

    • They're still trying to clarify the requirements. Some projects have well-defined requirements, but many real ones don't, and maybe their parts are fuzzier than yours, or maybe they need help understanding them.
    • They're still designing interfaces and test plans, and are wisely not writing code until they know what it should do and how to do it right. Maybe your part has more obvious interfaces than theirs, or maybe they need some help defining them, or maybe you're rushing off writing code before you've done your critical design work. Writing code is only the middlish 10% of the job.
    • Maybe they're trying to build tools they need to build their real code. This could be forward-thinking planning, or it could be they don't realize the resources they've got available and need help finding / getting them.
    • Maybe they're underskilled and over their heads and don't know how to do the job - but apparently you haven't been communicating with them, and also apparently they haven't been communicating with you.
    So talk with them first and find out what's going on. If you can't come to an understanding, find a manager to help -- I don't mean a Boss to tell them what to do, I mean a Manager to actually manage the project and people. You probably need one of those anyway, and sometimes programmers can do that but sometimes they don't have the people skills to do it.
    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  264. Clearly Define the Problem by BanteringCTO · · Score: 2, Interesting

    As a CTO in charge of a number of programmers, of various skill levels, I've found it's good to vary the method I use to define the problem. For really good programmers, it's enough to tell them to "solve x and produce y." For lesser programmers, it's helpful to write the steps out explicitly, i.e., "do step one and produce x1, do step two using x1 and produce x2...do step? and produce y." I personally write the steps (as comments) for these programmers. If needed, either I or one of my better programmers, will write tests for each phase to ensure the code meets the standard. You may find that, using this technique, "marginal" programmers are capable of producing good code. What they lack is the ability to see the big picture. So, break it down for them.

    --
    The world of achievement has always belonged to the optimist. -- J. Harold Wilkins
  265. give them a promotion by primus_sucks · · Score: 1

    Obviously they should be promoted to management!

  266. The Great Communicator? by Anonymous Coward · · Score: 0

    One question: was the writeup in italics actually your presentation of your perceived problem?

    If so I would strongly suggest you improve your communication skills. Your description, assuming it was yours was repetitive in content and wording. It appeared as if a single paragraph was sliced and diced then put back together to repeat the very same thoughts in a more muddled fashion than the first pass.

    If indeed your post was butchered, you have my apologies; otherwise I strongly suspect you are neither easily approachable nor understandable.

  267. switch to architect by AndersBrownworth · · Score: 2, Insightful

    if you can afford it, stop being productive and do the architecture work. flesh out as much of the guidelines as you have to and leave out the detail. (even though it may be just an easy 5 minutes for you to finish up the job) our principal failing as managers is that we don't communicate. be clear by building out the framework everywhere, it leaves little chance for the beginner coder to get lost and it keeps him on task. think through all of the major paths for a project before-hand and let your staff come in and fill in the details. this will virtualy guarentee that your coders won't "code against the project". then set clearly defined goals and let the team thrive on the emotion that comes with their ideas for refinement of your roughed-out dream.

    i'm not convinced that peer review is worth it mid-project. it has it's place but it detracts from the emotion you are working on preserving. most slow and steady coders don't have (nor want) the big picture in their heads as they work. make that be your job. play babysitter and error on the side of communicating too much by example. if a coder is still not productive, make your team smaller.

    just my $0.02

  268. Asking questions can be bad! by 192939495969798999 · · Score: 1

    The problem I have had is that if one gets the juniors to ask questions, the questions end up being more or less, "can you code this for me so i get credit?" ... the critical thinking process is being sorely neglected in Computer science instruction, i'm afraid.
    sir_haxalot

    --
    stuff |
  269. Judging programmers' skill by Anonymous+Brave+Guy · · Score: 2

    I think you pretty much hit it on the head, right there. Management who are not programming literate are all too likely to use a bad metric (such as number of lines of code written) to judge a project.

    It's true that a top hacker might produce code at a rate several times faster than Steady Eddie. Far more important, though, is the quality of the code written. A really good guy will probably spend most of his time thinking and experimenting, rather than writing final production code. Only when he's got a rough design that he's pretty sure is workable will he write the code itself. It's quite possible that this production code will actually be shorter than what Steady Eddie would have wound up with, because he's got a cleaner design and implements it efficiently. The good developer's faster rate of production comes from the speed with which he gets to the end point, not the volume of code he produces.

    The task before the management team -- who are really the guys responsible if this sort of mess happens -- is to adopt effective metrics for judging the competence of their staff at the various tasks involved in the project. Only after doing so can they redirect their resources to where they are most useful, or if really necessary, take steps to get rid of the incompetents or prima donnas who are genuinely doing more harm than good.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Judging programmers' skill by seanyboy · · Score: 1

      A really good guy will probably spend most of his time thinking and experimenting, rather than writing final production code. - I'm not convinced about this. Yes, a good programmer takes time to think out a design, but I've seen many cases where a simple problem is turned into an algorithm-fest by the sharpest and brightest programmers. The code's great, but five years down the line, when the programmer is doing better and brighter things, that code makes no sense to the people trying to maintain it. I'd agree with you, but with the proviso that all code must be written to be read by less gifted coders. Sometimes the solution which is best is the solution which is understood by everyone in your team.

      --
      Training monkeys for world domination since 1439
    2. Re:Judging programmers' skill by Anonymous+Brave+Guy · · Score: 2

      I completely agree that writing maintainable code is essential. My experience is that the good guys who stop and think also tend to produce a cleaner design, and consequently improve maintainability as well. I wouldn't normally call anyone who wrote "clever" but incomprehensible code a good programmer.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  270. Long hours is not the answer by Anonymous+Brave+Guy · · Score: 2

    Sustained long hours working is never productive. This has been shown time and again in studies on the subject. Anyone who thinks getting programmers to work 50+ hours per week is going to produce more than the same team doing a comfortable 35-40 is just suffering from wishful thinking. You can flog a dead horse, but it still won't get you there any faster.

    And of course, a heavy overtime culture is damaging to everyone in your company, good guys included. I immodestly consider myself an above average developer; I get the jobs done that are asked of me, and I try to do them well. I accept that in this industry, sometimes deadlines happen and a bit of extra effort is needed to make it. I also expect that if I make that extra effort, it will be recognised, and I will be compensated for it. To a point, I don't mind whether this is with shorter hours after the deadline or some sort of reward as a thank-you; it's the principle that counts.

    An employer who treats me well will get my loyal service and the best work I can produce every single day. I consider this my professional responsibility, and I take pride in my work. OTOH, the day any employer tries to take advantage of my good will (or force me to act on a contract clause that claims they own my soul) will be the day before my resignation notice prominently hits the desk of the most senior person I can find, with a detailed description of why I am leaving. I have been told by worldly wise fellow employees in the past that I'm just being complacent or arrogant in making such claims. They still work for shitty employers, while I work for a place where the respect is mutual. I think I'm winning.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Long hours is not the answer by Fjord · · Score: 1

      I don't feel this is entirely true, in spite of the studies. I've been put onto a project after an application was launched and the performance was horrible. My job was to make it perform better. I worked 90+ hours, with one week being 108 hours, for 3 weeks and got a very large part of the system rewritten on in the back and middle tiers, much much more than I could have in 120 hours.

      I agree that I couldn't sustain that for much longer (there were indeed still performance problems in some modules, but they were infrequently used and I had to go back down to 40 hours), but just because you are working more than 50 hours doesn't necessarily equate to less or the same code as 40. Also, I think I got more done than I would have with the same number of hours spread across 7-8 weeks, but only because no one could bug me at night to do other stuff.

      --
      -no broken link
    2. Re:Long hours is not the answer by Anonymous+Brave+Guy · · Score: 2

      Fair enough, occasionally you get someone who can do this for a short time. I don't think anyone can sustain it for very long, though.

      Most who try it at all think they're producing their "best work" or something, but what they turn out past the 40-50 hour mark wouldn't pass a newbie code review unless you completely through it out and rewrote it.

      The question isn't how much code you produce, it's how good the code is, and it's a rare developer indeed who can produce good stuff under those sorts of conditions.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  271. Either take the lead, or stop complaining :) by jkm_jkm · · Score: 1
    After 12+ years of going through similar situations (often being the most productive developer, and taking delivery way too seriously), there are two things I would do:

    i/ Structure the project such that your part clearly depends on deliveries from other people. Ensure it is clear you can not proceed further without the other developer's deliverables. This first part, you *must* do, otherwise who's stupid here?

    ii/ Now, only bother with the second part if you are willing to try to lead the team, as opposed to just complaining. The essence of these early stages of leadership is being helpful and understanding. People like to be led by helpful and nice individuals, and resent the opposite. Come to work earlier than others, leave later. Practice the Pair Programming techique. Try to come up with ways of helping people to deliver - daily builds, write interfaces, write simple 'smokescreen' tests that will be run after daily builds. Ask people to sit in on code reviews of your code. Look for tools to simplify the tasks of the group. Encourage, cheer people up, give helpful answers, avoid putting people down.

    After some time of practicing leadership, you will see that you are spending A LOT of your time away from your desk, talking to people. You will also see that the team will break down into two groups: those who want the project to succeed, and are willing to work for it, and those who don't. Don't waste your time with the latter group, and focus on the work with the first group.

    And, finally, after a year or two of doing this, you can sit down and ask youself: do I really enjoy being a leader? Do I want to go into management, perhaps take some courses in Project Management and People Management? Only at these latter stages do you get to make major decisions. Or do I prefer technical work?

    Good luck in your journey!

  272. Its hopeless by Anonymous Coward · · Score: 0

    Programmers are born, not made. People don't like to hear that, but its true.

    1. Re:Its hopeless by Anonymous Coward · · Score: 0

      I tend to agree. This thinking applies to most technical fields, I find. In electronics, it's the same. You can go to university for as long as your Mommy and Daddy can afford it, but in the end, you can't replace early hands-on experimentation.

  273. Why They Don't Ask You for Help by Nintendork · · Score: 1

    Do you make them feel stupid or get impatient when they come for help? There's not that many techies out there that are approachable. Big egos and a competitive edge are the faux pas of us nerds.

    1. Re:Why They Don't Ask You for Help by ask_ray · · Score: 1

      You know what happens when you reply with a socially acceptable answer? Thoz asking, who are already too laz to find the answer themselves, see you as their own personal encyclopedia asking you the answer to every fart their brains can expell. No, the correct methodology is sarcasm and a laugh.

  274. systemic failure of the lead developer by falsemover · · Score: 1

    if you are the lead then you should be doing regular merges of your coworker's code :- a merge tells all - it show them how little work they are producing, and gives you a chance to offer feedback about crusty programming style. You should be in their face offering to help at all times of the day. You should have 100% availability and be ready to drop any of your own work to immediatly help one of your team. You should also monitor if they are getting stuck, if they are stuck for more than 2 hours, *you* move in and help. If you do daily merges they will be very embarrassed to show you that they have written two lines of code in the diffs.

    In short, if you can't get work out of your team then *you* are not doing your job properly. If you are not the lead, then your boss is not doing their job properly, in which case you need to tell them so, or leave the company or both.

    --
    consider coffee a lubricant that helps one penetrate the coding zone
  275. Ask them why they aren't making progress? by shess · · Score: 1

    Have only read a couple dozen posts, but...

    Why not just ask them what the problem is? You say they understand the domain problem, because you've had plenty of discussions - maybe they think _you_ understand the domain problem, and are afraid to appear stupid?

  276. A familiar problem... management! by e40 · · Score: 2

    So, in 2 weeks they got nothing done. Possible causes:

    1. Lazy.
    2. Assigned tasks over their heads.

    If it was #1, then your management gave you a bunch of losers for the project. If it was #2, your management probably suffers from #1.

    Death by management failure. Very common.

  277. Component design make life easier by jyz · · Score: 1

    I faced same cases before, It is very hard to have all the programmer produce same high quality code. Various quality code will casue trouble when intergation...

    Component designing make such life much easier, The major isusses will be solved in design phare -- just defining componets and its interfaces... and then ask those guys pick/be-picked up components they like/assigned.

    The beauty of Componet designing are:
    1)It does not require every one know the whole the system, most guys only need to deal with simple context (defined by interface). so it is very easy to assign such component to a new guy, or jonior programmer.
    2)It provide a lot of flexiblity at intergation pharse, if a component sucks. just replace/rewrite
    it.
    3)If your boss push you too much, you can assign a compont to him to help :)

    Hope this helps.

  278. Patent Pending way to get a job done by Anonymous Coward · · Score: 1, Interesting

    1. Get yourself an Engineering notebook (with grids).
    2. Every Monday have a meeting at 10:00am.
    3. Randomly start with someone.
    4. Put the date and their name at the top of the page.
    5. Ask them what they did the previous week.
    5a. Write everything down on a separate line.
    5b. Mark the line with a "<" to represent last week's doings.
    6. Draw a line at the end of what they say they did.
    7. Now ask them what they are GOING to do this week.
    7a. Write everything down on a separate line.
    7b. Mark the line with a ">" to represent what they are GOING to do.
    Use at least one page per person. Write only on the FRONT of the paper. Don't cram it all together.

    When you meet again next week, start over. Only this time, flip back and forth between what they are saying they have done the past week and what they said they would do. If they leave anything out - don't point fingers. Do NOT say "YOU SAID YOU WOULD DO THIS!" or anything like that. Instead, say "Last week you said you would get X done. Did you manage to do so?" In other words - something non-accusatory. If they did NOT get X done just note in the "<" area they did not but then just ask them if they will be able to get to it this week. If they say yes OR no do not critize them - just enter their answer into your book in the ">" area and go on.

    Do tell everyone that the ledger book you are entering everything in is what you are going to use to create your weekly report for upper management.

    It is important to NOT argue with anyone about your doing this. You are not there to demand that they cooperate. BUT! Do tell them that if they do not want to participate that that will go into the report also.

    This works. This is simple to do. The peer pressure of having to sit in front of a bunch of your friends and say you haven't done anything is enough to get even the toughest slacker to start doing something. Further, so long as you make everyone talk about what they are doing it is impossible for duplication of effort to happen. Since, by the end of the meeting, everyone knows what everyone else is working on these types of problems come out immediately. Also, if someone is holding up everything you have the perfect time to gently let someone know that if they can not complete the work that you will have to assign it to someone else. It also is the perfect time to reward someone for doing something right. Like completing all of the tasks they said they would do the previous week.

    You also wind up with your weekly/monthly/whatever report and when it comes time to hand out raises you can base it on facts and not just what happened within the last thirty days. Which is a much better way to hand out raises than just "Oh - I like B so he gets a 10% raise but S, well, she's nice and all - but she should only get a 3% raise." Instead, you will know that B actually only got one out of ten projects done while S did 90% of her projects.

    Using the ledger also allows you to note, on the back of the pages, when something happens. Like a fight between A&B. You can note on the back of BOTH A&B's pages that they had a fight and why. So you don't forget that either. Or that A comes in late three of the five days for that week. Or that they called in sick four of the five days last week but did not have a doctor's excuse. Then you can say, without a doubt, "The reason you only got a 2% pay raise was that not only did you not finish your work on time but you are coming in late a lot, calling in sick almost every week, and you are costing the business time and money." Or in other words - you have an actual basis for saying what you say.

    I have used this system several times and let me tell you - it works like a dream. I had someone say, to my face, "I will not do this" and "I do not have to do this." I agreed with them. I said, "You are right. You do not have to do this. Let me just write that down in my report. 'You do not want to tell me what you did last week and left the meeting.'" They never made it out of the room. They were smart enough to realize that they were acting like an idiot in front of a bunch of witnesses. They came back and sat down and asked if they could change their entry. I just shrugged and said "Sure" and we took it from there.

    There is no need to fight. Just let peer pressure and people's normal need to do the right thing lead you along. Everything else will just fall right into place.

    Hope this helps!

    PS: If you really want to make your employees very happy - figure out how to spend some money on them at the end of the month. Pro-rate it depending upon how much they get done and how many employees there are. After all, you can't spend a fortune just to show your gratitude that they did their work. But maybe put their picture up on the wall as employee of the month? Reward everyone with a bag of pretzels and soft drinks? Maybe a bowl of fruit? Put a list up of the top performers? But if you do the last - do not fall into the trap of using the list against those who do not always come out on top. That is a good way to lose employees. Also, if someone consistently comes in first/highest/whatever - then you will have to do something like make a golden list and a silver list. (ie: Break things up so those who do not do quite as well have a chance to succeed and become better employees.)

  279. Choose a good team int he first place by snester · · Score: 1

    Coosing a balanced team in the first place is crucial

    1. Team Leader...controls the bulk of the framework of the code
    2. Maths Guru....handles all the abstract programming requirements...sqeezing the most out of every cycle
    3. Interface.....handles all the GUI requirements (dialogs, windows, check boxes etc)
    4. Project Manager....Ensures everything is on track, plays King Solomon and does all the other things such as communication to outside parties, testing, documentation and feedback.

    snester@viewbuild.com

    --
    A shrubbery
  280. daily meetings, goals set, results reported. by nut · · Score: 1

    Unskilled coders are a hard thing to fix quickly (let's face it, what you're looking is an instant extra few years of experience) but motivation is something that can be addressed a bit more quickly.

    First off, you need to start coding *less*. This is very difficult when you can see deadlines looming and you know you are the most skilled coder there, but if you want to get more out of the rest of the team, you need to adopt a more managerial style.
    This means spend your time planning the work, doing or reviewing design, and breaking the project out into packages of work you can give out to other people.

    Hold regular meetings - daily is best, at least weekly. These meetings have two purposes.

    • Set goals for each person, to be achieved by the next meeting. It's perfectly ok if they are setting their own goals, as long as goals are being set.
    • Each person has to report on their achievements since the last meeting.
      It gets embarrassing to say, 'Well actually I haven't done anything' every time, and most people will make an effort to have something to report. If they won't, they're beyond all hope.

    Do code reviews, post them to the whole team if you can (don't tear people to shreds) This will help you set project-wide coding standards, and is one of the best ways to mentor people.

    Set milestones within the project and make sure you celebrate hitting them! Even if it's just a long lunch and pizza. See your line manager and find out if you can get a budget for that sort of thing.
    In my experience any project that recognises work done with a bit of a party now and again gets a whole lot more out of its coders. You need that positive reinforcement.

    Over-communicate
    By this I mean hold a meeting and discuss your goals/milestones/requirements/etc. Make sure everyone understands them. Then send round a summary in an email to the whole team. Then print it out on a big piece of paper and pin it to the wall during all your meetings. Make sure it's at the fore-front of people's minds all the time.

    Hope some of this is useful.

    --
    Never trust a man in a blue trench coat, Never drive a car when you're dead
  281. The right way to motivate people... by McPierce · · Score: 1

    At my old company, the way they motivated poor developers was to make them senior engineers or program managers and then lay off all of the good engineers who now worked under/for them.

    --
    Darryl L. Pierce "What do you care what people think, Mr. Feynman?"
  282. Some points by SimonK · · Score: 2

    OK, well this post is much too late, but possibly the author might find it and read it.

    You say you're the "de facto software project team leader". Who is the "de jure" team leader ? Who is meant to be doing the work you're doing ? If you have someone who's meant to be managing the project or providing technical leadership, and they're not doing their job, you need to make sure their boss knows about it. Have a few words with them first about your concerns, and if they don't act, go to their boss. I know it sounds harsh, but I've been in your situation, and it is a hiding to nothing. Noone gives you any credit for doing a job if they don't know about it.

    If your place of work is relatively unstructured (as mine now is - I prefer it that way), and noone has an official leadership role, make sure your ultimate boss knows what you are doing. Once again, you don't get any credit for doing a job if noone knows about it. You're an employee (I assume), and ultimately the success or failure of the enterprise isn't your responsibility, although, of course, your job is.

    If you're pretty confident that you have the responsibility of sorting out your project, then you really do need to sort out the problems you are having with your cow-orkers. It sounds to me as if they're either lacking in motivation, or not very good coders.

    There's a judgement call to be made here as to whether these people are redeemable. They might not be. Some people just aren't up to programming, others require so much effort to train up that it is not worth the investment, others are unmotivated, due to personal problems, in such a way that you can't help. The only answer is to let such people go. This is why you need to be in a position of authority acknowledged by your boss. I don't necessarily mean that they need to be hurled bodily from the doors, but they need to be moved to work that they're capable of doing. When it comes to hiring new people, make sure you're involved in the process.

    However, the only way you're going to find out whether your cow-orkers are redeemable, is by trying to help. If at the end of that process you,ve acheived nothing, then proceed as above. In order to help, I'd suggest some or all of the following:

    1. Make sure people are motivated. They need to know what your project does for the company. They need to know what they, personally, can expect to gain from success. If - as is common is technical organisations - there's not real career progression opem, you might want to try to fix that.

    2. Make sure they know what is required. That is: what must be delivered and when. They should feel that it is a team goal, and that it is acheivable. They should feel personally responsible for their bits.

    3. Track what people are doing, on a day-to-day basis. Go from desk to desk and ask. Help with problems. If people have gaps in their knowledge or misunderstandings, talk them through it, rather than just telling them answers. If there are problesm with the rest of the organisation, try to sort them out.

    4. Institute code reviews or pair programming. Make sure you are involved, but encourage them to critique one another's work and improve on it.

    5. Change the way you're scheduling work to make tracking easier. Expect people to deliver demostrable units of functionality every at least week or so.

    6. Never lose your temper or act in a condescending manner.

  283. Maybe it's you... So, modularity! by Tom7 · · Score: 2

    It's possible that your design or execution of your part of the program makes it difficult to write the others. Not for you, since you know all the tricks and hidden invariants of your code, but for others, who don't understand what you're doing. The key to successful team programming is carefully defining modules and interfaces between them such that they can be implemented with minimal interaction and understanding of the other programmer's code.

    Anyway, I am probably just guilty of giving the benefit of the doubt to your co-workers, but don't overlook the fact that your personal code output is not the only measure of how good you are for the project.

    If you need a quick fix, I suggest taking a few hours with each other team member and getting them started on their code in a pair. Programming in pairs (the best idea in 'XP') is pretty good, and it usually results in high knowledge transfer and low bugs.

  284. Give it up you're doomed! by cfaulkingham · · Score: 1

    Your project is doomed. Start looking for another job. Seriously, unless you want to code the whole project which to me sounds like what you will be doing.

    Life is to short to be doing other peoples coding.

  285. How do you measure that? by SEGV · · Score: 1

    And what wonderful accounting scheme do you have that can tell when 10KLOC can be more profitable 10 years later than another 20KLOC?

    Management can't even evaluate people, let alone code.

    --

    --
    Marc A. Lepage
    Software Developer
  286. Start looking for a new job by anthony_dipierro · · Score: 2

    And sit back and relax at your current one in the mean time. Y'all are screwed, and when the project doesn't get done it's doubtful you're going to be spared.

  287. Happened to me by Cable · · Score: 0

    other guys didn't want to do their work, or share information with me that I needed to finish mine. I got fired, they still have their jobs.

  288. This is something almost every developer hasn't... by freeBill · · Score: 2

    ...had to deal with.

    This is something almost every developer has had to deal with.

    Actually, 90 percent of the programmers haven't experienced the problem of being in the 10 percent who do most of the work. They have, by definition, been in the 90 percent who do 10 percent of the work.

    --
    Eternal vigilance only works if you look in every direction.
  289. Code Reviews by arb · · Score: 1

    Only thing I would add is the use of code reviews, first as a teaching tool (review the better coders' work first), then to improve the lesser coders quality after they've gotten accustomed to the review process.

    Another advantage of code reviews you missed which is very relevant here: it lets everyone know how much progress is being made by other developers. If developers are falling behind, it becomes blatantly obvious...

  290. Manager vs. Technical Skills by Anonymous Coward · · Score: 0

    Being a good programmer does not make you a good manager. In fact, nine times outta ten, you're a bad manager. I would spend a little time looking into some basic managerial skills. Off the top of my head:
    Don't focus on your co-workers weaknesses, but rather their strengths. They were hired for some skill set.
    Motivation - learn how to reward employees . . . not just monetary rewards . . .maybe a pat on the back. Don't just always say negative things. Don't say negative things to one employee about another. This might create . . .
    Mistrust - Trust is essential in any relationship . . . and that doesn't exclude a boss and his employees. You need to trust your employees and your employees need to trust you.
    Empower - make your co-workers feel as if its their project and their ass if it doesn't get done on time. Then, don't micromanage, but rather, keep everyone informed on the process of the project . . . maybe weekly. Which bring us to . . .
    Communication - your employees need to feel that your door is always open for anything. That means . . . LISTEN. You don't have to necessarily agree, but at least act like you're listening and considering someone's else's opinion fairly. Explain your side . . . objectively.
    Again, try looking at some management resources, or attending a training class because the entire scope of being a good manager cannot possibly be included in one email.

    Good Luck!!!

  291. Are you working with me? by Anonymous Coward · · Score: 0

    Hello. I'm an intermediate level programmer who doesn't do much anymore. I'm not alone in my organization either.

    I've always needed some external motivation to move me along. The thing that motivates me most of all is a sense of community which just so happens to be seriously lacking in my current place of employment. What once was a realm of creative collaboration with mentoring and open design processes is now a place of closed doors and heads down coding. The most senior programmers now do all the design work, and leave little else besides typing for the rest of us. They carve up the projects how they see fit and don't share the birds eye view that is hatched behind those closed doors. They want the rest of us to type the code, document it, and test it. In short all the rest of us have become coder bees.

    Sure, I could work hard and over the years prove myself worthy of getting better scraps and hope to join their elite ranks or that things will change back to the way they were. But for some reason it's so much easier to do the bare minimum, let them sweat the deadline, and at the last moment cranking out some code that meets the specs.

    If you're coworkers are anything like me there's really not much you can do to motivate them, except maybe get them involved in the whole process. Who wants to work hard in a place that develops a caste system and treats them like unimportant or even non-members? So until I find my next gig, I'm all for coasting and driving my lead crazy.

  292. difficult by Anonymous Coward · · Score: 0

    it's difficult problem.
    but basic bottom line is,
    if they have desire to do something,
    trust them and give them some works even though they are not
    much experienced.

    if they don't,
    fire them.

  293. So, do great coders make great managers ? by PinglePongle · · Score: 1

    Or even mediocre managers ? The "team lead" role is the worst position to be in - you have a whole load of resposibility, and almost no authority.

    I'm guessing you haven't got the authority to fire your team (and I don't think it's the right solution anyway), hire more team members (ditto), change the scope of the project (this is more likely to yield results), or change the way you're working (bingo ! give the man a cigar !). You can't exert much formal control over the team, and you have to be careful with running to the senior management team, because they usually don't like to hear bad news.

    So, I would suggest that you get the team together to do a semi-formal project assessment, compare actual to plan, that sort of thing. If things are as bad as you say they are, the team will likely recognize this; you can then declare an official "state of emergency" - note that you should do this without involving the managers at this stage. Suggest that you all spend a couple of hours brainstorming ways to get the project back on track.
    Sneakily, look into eXtreme Programming and / or Scrum - there are a couple of easily digest books available on both methodologies from your favourite patent owner.

    I would suggest that in the brainstorm meeting, you steer the discussion towards ensuring progress visibility is the key priority. If the project is in trouble, you need to know how badly, what the backlog is, and what your current estimated delivery date is - it's the only way to measure your progress. This can be as simple as a spreadsheet on a file server with tasks and status (hint : accept only binary completeness indicators - otherwise you end up with lots of projects at "90% complete" status which turns out to be 30%. A task is complete or incomplete - final).

    I would also suggest revisiting the original plan. I have found that it is usually better to allow people to make their own estimates and prioritisations, so ask everyone to adjust the estimates and dependencies, see where you're at - if you're gonna slip, find out today, rather than 2 days before shipping.

    Next, you might want to discuss introducing iterations, ie complete, running, shippable software implementing one or more new features into the product. I've never worked on embedded products, so this may not work in your environment, but it really helps to improve the visibility of your progress when you know that you'll be delivering a complete application every 4 weeks or so. If you promise management/the customer/your mom to do a demo, it helps even more. It also ensures you don't have any last minute bugs to deal with on shipping day.

    Work out - with the team - what you're going to do, and then do it. Don't tell anyone until you know it's gonna work. Make sure you stick with the changes, and enforce them. Review the situation after a week or 2; tune, repeat. If you find you're in such deep trouble you can't see a way to fix it, tell your boss the moment you know for certain you can't recover.

    There are no magic bullets; stuff I can pretty much guarantee won't work are adding more people to the project (except if you have an exceptionally well-defined design and a lot of repetitive drudge-work to do). Bullying people and threatening to fire them is a surefire way to get them to spend their time honeing their curriculum vitae and surfing the job sites. Stuff that usually helps but may not be enough is improving visibility of project status, increasing the level of detail in the plan to binary 1-3 day tasks, and increasing the team's level of ownership of the plan.

    Welcome to management. Coding's more fun.

    --
    It's all very well in practice, but it will never work in theory.