Slashdot Mirror


Useful Hints for Software Project Planning?

staaktdenarbeid asks: "Over my software-writing career, I noticed that development efficiency closely follows the 80/20-rule. That is, 80% of the progress is made during 20% of the time. The rest of the time, er ...well you are waiting for the next big idea. No matter how well planned a project is, it turns out that true progress is only made at very few points over the entire project lifetime. I would like to ask other Slashdot developers for their experiences, and if they know (and apply) project planning techniques that create a smoother development path."

60 comments

  1. simmilar thing at me by 216pi · · Score: 4, Interesting

    I am a developer with similar experiences. but I am not 'waiting for the next big idea' but mainly, I am, uhm, surfing around, reading slashdot, until the pressure of the release date becomes high enough.

    Then I start working hard, through the nights, and oh wonder, I have all the tables, primary keys, foreign keys, objects, constructors and destructors coming right out of my fingers.

    Perhaps I use the time hanging around to 'plan' databases and software in my head.

    P.S.: I am a web-developer.

    1. Re:simmilar thing at me by Cokelee · · Score: 1

      Exactly. I've told my employer if he made me pay when I was thinking, I'd be charging him 112 hours a week (12x7).
      I am constantly revising things like dbases when I realize new needs, or think of a good way to handle something.

      I don't think this is a bad practice. When I sit down to write some code, I am very prepared. I'll just sit, and output. The thinking has largely been done.

    2. Re:simmilar thing at me by gi-tux · · Score: 2

      But he wouldn't pay you much as 12x7 is only 84. Maybe you meant 16x7 which would be 112, but either way, without simple math skills you aren't worth as much, nor would you know the difference. :-)

      However, I agree that the preparation time is best done up front. Just because code isn't being produced doesn't mean that progress isn't being made. I have trouble getting my management to realize that also. The get really nit-picky about somethings, but certainly don't object to me thinking of an idea on my own time and using it.

      --
      I have no sig, does anyone have one to spare?
  2. Its.. by floydman · · Score: 1

    Its human nature my friend, it human nature...

    --
    The lunatic is in my head
  3. Is it a problem ? by RyoSaeba · · Score: 5, Insightful

    Is that rule a problem for you ? I mean, does it cause you unneeded stress ? Are you concerned about spending 80% of your time doing those 20% ? If not, maybe you can just stick to your current habit ^_^
    That said, I don't have maaaany years in software development, but i think even when you are not coding like a crazy your mind is idling working stuff out, getting ready for that biiiiiig flash-bulb that's gonna make the next big advancement. So it isn't exactly lost time, right ?

    Apart that, I'll just point out the regular stuff others here will prolly detail a lot more:
    * know as much as possible the final result you want, and deduce how to make it from that
    * if working with others (your post doesn't mention in either way), try to brainstorm together, and dispatch work to each depending on skills / interest / CPU/brain occupation, and so on
    * if not actively coding, maybe browse idly the code from time to time. I have sometimes be surprised, doing just that, to realize how dumb something in the code was, or a bug no one has noticed before. Again, brain working in background manner ^_-

    --
    Tsuyoikoto ha taisetsu da ne, dakedo namida mo hitsuyousa (Strength is an important thing, but tears too are necessary)
    1. Re:Is it a problem ? by Mad_Fred · · Score: 4, Interesting

      To me, the knowledge of this rule alone can cause some stress. You know "Yeah, I've got weeks to do this, but I can be pretty damn sure I won't be working very hard most of the time, and then have to stress like hell toward the end of the given time." And of course starting early just prolongs the unproductive period in the middle ...

      Then on the other hand, I do think that there's still a point in the other 80% of time spent. Like you say, I feel like (or is it just hope?) there's some work going on that's required to get around to the next big productivity leap. Those 80% still seem necessary to, I don't know, sit through or whatever. But the knowledge does annoy me sometimes, oh yes!

  4. the 80/20 rule by Anonymous Coward · · Score: 5, Funny

    the 80/20 rule is the deepest truth I have come across. 20% of the people have 80% of the brain cycles, 20% of the people commit 80% of the crime, 20% (techies) of employees contribute 80% of the company's output, 20% of statistics cover 80% of the cases where a statistic would be good, 20% of the people (not /.ers) have 80% of the sex. 20% of the 80/20 rules cover 80% of the general cases.

    1. Re:the 80/20 rule by vandel405 · · Score: 1

      80% of your images are unique 20% are dupes ;)

  5. Ho, and let's not forget... by RyoSaeba · · Score: 4, Insightful

    if idling, use your time to comment the code a lot, it may help in the future, and forces you to think about your program design / flow

    --
    Tsuyoikoto ha taisetsu da ne, dakedo namida mo hitsuyousa (Strength is an important thing, but tears too are necessary)
  6. Shoot the Boss ! by Anonymous Coward · · Score: 1, Funny

    Then you can adopt the old shift the milestones approach.

    It works for M$ ;)

  7. hyperthreading for people? ;) by Anonymous Coward · · Score: 3, Insightful

    stop banging your head against the wall! if you always keep a few (3 or more) threads running at any one time, you can keep those big ideas coming, without feeling the urge to bludge.

    working on _something else_ is the most useful kind of bludging there is!

    it's not 100% efficient, but i've definitely double the "big idea" rate by always working on 3 or 4 reasonably different projects...

  8. Creativity by Sabbath.sCm · · Score: 4, Interesting

    This so called 20%, at least for me, is when I enter the state of flow. There are specific requirements to be met so that one can enter this state of mind, in which the person is very creative and time seems to go faster, among other things. Read this for more information on entering the state of flow.

  9. Ideas by King+of+the+World · · Score: 4, Informative
    Make it easy for everyone people to keep a list of good features (ie, central whiteboard with pen). Google does this.

    I don't believe in dual programming, but you can get somewhat of the same effect by requiring that programmers get together and explain their code to everyone several times a week. Just high-level architecture stuff. Each programmer should spend 5 minutes.

    When developing software the most dangerous part should come early on. You don't want to pull a Daikatana and not understand what's difficult until late in the development - that's what causes late releases. Because you want to understand what's difficult first you should prototype the application. Hardcode as much as you can, even if it's half-assed, and program the minimal you need to get something that a programmer can recognise as components that address the main problems.

    Prototyping is part of "release early, release often". Shame is part of "release early, release often".

    Rather than planning technica details start from the interface. If you've got a client, and they're not computer programmers, they won't be able to know their requirements (and whether they're feasible) until they see it in front of them. Get them to draw the interface on paper and how they think it should work - this will help them get in the right mindset about the application. Provide them with prototypes. It's all about trying to jog their memory.

    Price on phases (prototype releases).

    1. Re:Ideas by russh347 · · Score: 4, Interesting
      I don't believe in dual programming,

      Have you ever tried it seriously? If not, you are falling into the trap of speaking in ignorance.

      A few years ago, I would have said much the same thing. After giving pair programming a honest try, I write virtually all of my production code with a pair.

      As a result of pair programming and Test Driven Design (TDD), we have been able to write a new embedded, real-time application for one of our systems in just a few months. IIRC: The number of bugs found in this application is 5, and 2 of those were compiler/tool related.

      This is just the most recent application we've developed.

      Don't knock it 'til you try it.
    2. Re:Ideas by Anonymous+Brave+Guy · · Score: 1
      Have you ever tried [pair programming] seriously? If not, you are falling into the trap of speaking in ignorance.

      Don't knock it 'til you try it.

      With all due respect, why do XP evangelists always assume that those of us who disagree with their golden rules either have never tried them or have failed to understand or appreciate them?

      There are plenty of good, experienced programmers who have experimented with various aspects of XP, including the big ones of pair programming and a test-first process, and have found them to be inappropriate or ineffective for them. If they work for you, that's great and I'll be the last person to tell you you should do anything else, but that's you, not me.

      Personally, I can see the merit in these approaches, but I don't hold them on a pedestal as some sort of panacea. I reckon my programming matches the 80%/20% pattern pretty well. In my particular circumstances, when I get hung up on something, it's usually because I'm not aware of a relevant detail in how our software works, being a relatively new member of the team. Speaking to someone more experienced to find the missing link, or bouncing an idea off another team member to see where they instinctively see it going, is often a way to get clear of the 80% and back into the 20% again for me, right now. Given how naturally our group works together anyway, I could see pair programming potentially working out.

      On the other hand, we have a very effective lightweight process going on, which is based on an initial proposal for a feature, followed by a very iterative design and implementation phase, with automated tests. I wouldn't swap that for a test-first process given any choice in the matter, because I've tried both, and found the latter lacks the power to work well in my development areas. If it works for you, that's great, please use it, but don't assume that it would work for everyone else just as well...

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    3. Re:Ideas by Alric · · Score: 1

      I have tried XP (extreme programming) about a dozen times, a few times as the keyer but more often as the watcher. In some cases, it produces some good results, but generally I dislike it. Here's why. When I am coding, my watcher (a good, skilled friend) catches a few mistakes that probably results in a net productivity, considering future debug time, increase of 25%. If we work together for one hour, we produce 1.25 hours worth of good coding. Working separately, perhaps on projects that require parallel development, we get 1.5 combined hours of good coding. I can understand that it might work for some pairs, but I will outline a better solution, for me, below. When I am the watcher, I get distracted so incredibly quickly that my only real value is in catching low-level mistakes. It is just impossible for me to maintain a high level of interest. That's just me, but I think that a lot of people feel similarly.

      I think that instead of formally using XP, a better strategy to take is paired offices or physical workgroups. At my office, we have 8 month - 14 month projects, and when we begin a project, we move all of the design level programmers (about 6 usually) to a centrally located part of the office. We have a large white board and a large shared table. I often will have somebody sit next to me while I am coding, but we don't have these formal XP sessions. We tried following the rules strictly, and it just felt wasteful. Creating a comfortable work environment and teams that work well (synergistically if you like using that word) is so much more important, in my opinion.

    4. Re:Ideas by russh347 · · Score: 1

      The reason I assumed that 'King of the World' hadn't tried pair-programming is that he didn't say he had. What he said was that he "didn't belive" in it. Belief is a funny thing. Most of us has firmly held beliefs that are based on virtually no objective data (like the attitude I used to have toward XP).

      I'm not going to tell you that XP in general (and pair programming in particular) will work for everyone. I can say from experience, that it has worked for me... after an overwhelmingly negative initial reaction.

      Did 'King of the World' give pair programming an serious attempt. I have no idea. I wouldn't call sitting bored with another programmer for a half a day and then saying that you don't like it a serious try...

      BTW: I wouldn't introduce pair programming as the first 'XP' practice. I'd introduce Test Driven Design first. It works better in isolation and it has a faster payoff.

    5. Re:Ideas by Anonymous Coward · · Score: 0
      Blah blah blah... you overstated your case and it makes you sound like you wouldn't listen to another opinion.

      Pair programming is a waste of time.

  10. %80 lost time or not ? by jurrehart · · Score: 3, Interesting

    For every project I've done in my career I had a timesheet where I wrote what was beeing done that day. Well after reading this post I checked those timesheets and about 80% off the time I wrote "research and study"(being surfing around the net, walking around the office and reading ./). So you could say that those 80% of the time where it seems you're doing nothing are in fact the base of the 80% progress you'll do in that 20% short time period.

    1. Re:%80 lost time or not ? by robb0995 · · Score: 1

      Who the hell is reviewing your timesheets??

  11. The 90% rule by codexus · · Score: 5, Interesting

    "90% of all your coding work will never be used for anything".

    It's a rule I found out after a few years in the coding business. Most of your work will go directly to the trashcan.

    Companies you're working for go bankrupt before your code has been used, projects get cancelled, clients (or managers) change their minds all the time and you have to recode some parts 10 times.

    Not to mention doing quick'n'dirty code to meet a deadline and then you're told "Oh, finally we didn't do the demo, we didn't have the time for it". And you can press the delete key and start recoding that part the right way (or sometimes you have to leave it that way and it will come back to haunt you later).

    --
    True warriors use the Klingon Google
    1. Re:The 90% rule by p3d0 · · Score: 1
      Good lord, what companies have you been working for?

      All the projects I have worked on professionally have been released except two, one of which involved a one-line change to an existing product that never ended up being needed, and the other was a "first draft" of a product I ended up rewriting from scratch. That means well over 50% of my professionally-written code has been actually used, especially if you include scripts and things that were intended just to be used by me.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    2. Re:The 90% rule by rodolfo.borges · · Score: 1

      *companies*? *working for*?
      Well, (thanks god) most of the code I write is personal (hobby project, hacking around, learning, testing, having fun, etc), so that the "90% of all your coding work will never be used for anything" pretty much apply, and that's no problem.
      And I don't think it's wasted time.
      Now, in a professional (capitalist) enviroment the coding is make by demand, so most of it *will* be used.
      (Just as I don't think that when it comes to a point that you just throw away (mostly) all the code and restart from scratch is not a waste either.)

    3. Re:The 90% rule by p3d0 · · Score: 1

      Take another look at the parent post. It was all about professional work.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    4. Re:The 90% rule by Prior+Restraint · · Score: 1

      Good lord, what companies have you been working for? All the projects I have worked on professionally have been released except two...

      We obviously work at different companies. I work for an RBOC, and I've lost count of the number of development projects that get canned less than a month before going live. So far, I've been lucky; nothing of mine has ever been pulled, although the one project was threatened. Then our manager decreed that everyone would work 12x7 until the customers were happy.

      Number one reason for cancelled projects: The users don't know what they want. ("This isn't anything like what we requested!" "Really? The requirements document says otherwise. Plus, you seemed perfectly happy with last week's demo.").

    5. Re:The 90% rule by p3d0 · · Score: 1

      Man, I hope you still get paid for those cancelled projects.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    6. Re:The 90% rule by Prior+Restraint · · Score: 1

      I have the dubious fortune of being salaried; I get paid just for showing up, but overtime is non-existent.

    7. Re:The 90% rule by Pfhreakaz0id · · Score: 1

      or how about this...

      90% of the code you change for a business rule change, will change back in six months because

      a: the users hate it.
      or b: the manager was wrong to begin with.

      I never EVER delete code. I just comment it out. More than once I have been asked to change something back and I just uncommented the old code.

  12. 16x7 by Cokelee · · Score: 1

    damnit, that'd be 112=16*7, preview, preview . . .

  13. Simple advice... read books by Jouni · · Score: 5, Insightful

    In this day of constant deadlines and lighting-fast Internet, few people stop to seriously study what they are doing. You have stopped, at least for long enough to ask about this on SlashDot.

    There are plenty of good books on software project management out there, from Peopleware to Extreme Programming eXplained and from The Psychology of Computer Programming to The Mythical Man Month.

    I use a simple rule of thumb for every book I read; if the ~12 hours spent on the book is not going to pay itself back in time savings in the next 12 months of my life, it's not worth reading. However, I can safely say that any one of these books should have enough to save you at least one working day in your year.

    The worst excuse for not reading is that you don't have time. All of us have equal amount of time allocated, it's up to you to choose how you spend it.

    Wanting to learn software project management is a good start, now hit the books, then apply your learning to real life. Ideas can be summarized in books and Internet posts, experience you have to get for yourself.

    Jouni

    --
    Jouni Mannonen | Game Designer, Consultant
    1. Re:Simple advice... read books by rodolfo.borges · · Score: 1

      I'm not saying that books are useless, your mileage may (will) vary (wildly), but I have bought/read just *one* (technical) book over my entire passage on the university (tanembaum's "modern operating systems", from 197x IIRC).
      And, yes, I completed the computer science course, and I consider myself a pretty good coder (and even a scientist :)
      (yeah, i would be perfect if i was modest)

    2. Re:Simple advice... read books by fishboy · · Score: 1

      I use a simple rule of thumb for every book I read; if the ~12 hours spent on the book is not going to pay itself back in time savings in the next 12 months of my life, it's not worth reading. However, I can safely say that any one of these books should have enough to save you at least one working day in your year.

      I sincerely hope this does not apply to your reading-for-pleasure selections. My rule of thumb for books is all about how much of my time they can actually waste.

      I'll leave the definition of waste up to the reader.

  14. 80/20 (or 90/10) rule by Anonymous Coward · · Score: 0

    I thought the rule as applied to programming was

    The first 90% of the project takes the first 90% of the time.

    The last 10% of the project takes the other 90% of the time.

    Of course if you believe in the e or pi rules for
    scheduling, this is over-optimistic :-)

  15. Arbitrary clerical deadlines RULE by swillden · · Score: 5, Insightful

    Most developers I know, including me, are most productive when under pressure (a large number of us have strong symptoms of adult ADD). When the deadline is far away and there appears to be plenty of time to reach it, we tend to dawdle, surf, read slashdot and generally get easily distracted from the job at hand (like, er, now -- oh, wait, my deadline is today! Okay, one post...)

    Years ago I was frequently pissed off by the obviously completely arbitrary deadlines that were imposed upon me. I could tell that this "absolute drop-dead date" that was being forced on me wasn't important at all, and that the *real* deadline was some days or weeks later. It pissed me off that I was being pushed to get finished long before it would really matter. A buddy and I took to calling these dates "arbitrary clerical deadlines" (ACDs), implying they were defined by some secretary who knew nothing about what we were doing or what was needed.

    Then I was enlightened.

    After ignoring several arbitrary clerical deadlines and finding myself up against the real, market-driven deadlines, and after seeing my company suffer significantly when I *missed* the real deadlines, I began to understand that arbitrary clerical deadlines are a Good Thing, and that the managers that were pushing them on me were Wiser Than I, even if they couldn't code their way out of a paper bag.

    ACDs apply the pressure required to keep us focused and provide a buffer of time between the established finish date and the real deadline (for when unexpected problems arise). Not all programmers require this, but, IME, most do.

    So now I try to take ACDs one step further, setting even shorter-term goals than the ones that are assigned to me and trying to pressure myself to meet them. It doesn't always work, and I envy the few developers I know who are able to work slow and steady and always have their modules done on time, but it helps tremendously.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  16. Rule #1 by Dr.+Bent · · Score: 4, Insightful

    "Plan to throw one away"

    The first version of whatever you write will be worthless, and probably require a lot of re-writing before it becomes production quality. This is unavoidable, no matter how much you plan and design in the early stages. So just accept the fact that the first version is really just a fact finding mission and plan accordingly.

    1. Re:Rule #1 by splattertrousers · · Score: 4, Insightful
      The first version of whatever you write will be worthless, and probably require a lot of re-writing before it becomes production quality.

      So will the second version, and the third, and the fourth... In my experience, any code that isn't re-written often gets crufty and becomes increasingly worthless.

      The more the code gets rewritten (a.k.a. refactored), the better it gets. Hmmm... so, what if you were to refactor it often? Very often? Extremely often?

  17. Peopleware and MMM by aburnsio.com · · Score: 2
    The best project planning books I've seen are Peopleware and Mythical Man Month. These should be required reading for anyone planning or participating in software teams.

    My favorite truth from these books comes from a chapter in Peopleware where team productivity was studied under several scenarios: where a manager plans the schedule, where the programmer plans the schedule, where a third party plans the schedule, or where there is no planned schedule. Not surprisingly, the manager created the poorest schedule with the lowest productivity. The programmer, however, wasn't far ahead. The third party did slightly better. But by far the best performance was from teams where absolutely no schedule was done.

    In software, you're best off without schedules at all! I follow this in my own software planning; if at all possible, which means if people above don't push it, I have no schedule or plan. I do the design and the work, and when it's done it's done.

    1. Re:Peopleware and MMM by Mr.+Slippery · · Score: 1
      In software, you're best off without schedules at all!

      Probably because you're not wasting time and energy trying to explain to ignorant managers why the schedules are meaningless fantasies.

      An analogy that occured to me during the scheduling of our current project: You are presented with a jungle. You have no idea of the terrain inside - rivers? quicksand? swamps? You don't know if there are any paths through it at all, much less where any that exist might be. Your job is to build a superhighway through it.

      Your first step - before any other work - is to build a detailed schedule. Not just an estimate of how long it will take, but a list of "milestones" such that you know exactly where the project will stand on any given day.

      If your project is simple - just building a bridge across a river, where the terrain is well-known - you might be able to do this. But I've yet to work on a software project simple enough that the schedule

      I'm going to have to track down a copy of Peopleware and beat managers over the head with it in the future...

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    2. Re:Peopleware and MMM by Anonymous Coward · · Score: 0

      A tangent to this is not to plan extra time in the software schedule.

      For example, when planning a task that, when finished will take 2 hours, if you estimate 2 hours, don't tack on an extra 1/2 hour buffer time to make sure that you meet the schedule.

      If you were to schedule the 2 1/2 hours (as is commonly done,) when finished the task, you'll most likely end up idling away, and thinking that there's plenty of time to spare.

      However, if 2 hours is scheduled, when the task is complete, there is no reason for idling... in the end, the schedule is more likely to be accurate.

  18. XP by aminorex · · Score: 2

    Agile methods address this problem by keeping development
    cycles very short. They also tend to foster short-term
    thinking, but if you can avoid that trap, and keep your
    team members as loosely coupled as possible, schedule-wise,
    without losing effective communication and coordination,
    having frequent (like 2 week) release cycles will flatten
    out those humps and raise the mean productivity significantly.
    So says my personal experience. Pundits may differ.

    --
    -I like my women like I like my tea: green-
  19. The "Do what you have to do" rule by reuel · · Score: 3, Insightful
    I learned a good rule from my manager at HP many years ago: First, do what you know you have to do.

    Let me explain: When a new project starts, those involved will come up with all kinds of technical problems to be addressed. Some of these may even seem like show-stoppers. Upper management will want these problems to be solved before allowing the project to move forward.

    Project managers and engineers have 2 choices: put the project on hold and work on solutions to the problems, or put the problems on hold and get a prototype of the project working. We all know what happens when you put the project on hold: nothing. If you go ahead and do what you know you have to do to get the prototype working, miracles occur! Many of the so-called problems turn out not to be problems at all. Or some clever engineer just solves the problem while working on the prototype. Or new problems, much worse than the original ones, are found and can be addressed now that they're known.

    Which kind of project do you want to be working on?

    --
    [place clever signature here]
    1. Re:The "Do what you have to do" rule by lorcha · · Score: 2
      Many of the so-called problems turn out not to be problems at all.
      OTOH, many of the so-called problems will come around and bite you in the ass harder than a rabid pit-bull in the later stages of the project. These problems tend to be of the form 'system X does not play nicely with technology Y'.

      I always like to first do a Proof Of Concept first and make sure all of the systems and technologies talk to each other play nicely with each other in the sandbox. Once you get that far, then I agree with you wholehartedly--get started on that prototype, because you can prolly work out anything that was holding you up.

      Now that I think about it, the only non-compatibility-related showstopper issues I have ever encountered were bad project managment and/or political fighting. Check out the recent /. article on the VNC failure for an example of what I mean.

      --
      "Avoid employing unlucky people - throw half of the pile of CVs in the bin without reading them." -- David Brent
  20. So while sweating out the 80% ... by staaktdenarbeid · · Score: 1
    a developer can, based on your comments, do any of the following
    • collect data that will improve the software code.
      This includes reading books, surfing the web, ...
    • rework the code.
      For example writing documentation, throw away/rewrite, use shorter development cycles and early releases.
    • work on multiple things/ problems at the same time and apply a multi-threading development style.
    • go out and interact with others to decide the next logical 'do what you have to do' step.
    • relax and wait until stress level is high enough.
    This list looks quite useful to me. For my own project (hardware simulation), it seems that the logical thing to do would be to go out and ask either a beta user or a fellow developer for early feedback.
  21. when you are really on... by francisu · · Score: 1

    This is when I'm productive. I'm excited about what I'm doing. I'm really into it. I don't know how to explain it otherwise. The funny thing is that I can go from one moment being totally unexcited and the next moment really wanting to work.

    I work by myself at home on software for my own company, so I have no deadlines, except those imposed by my desire to eat.

    There are sometimes (usually late at night) when I'm tremendously productive. Then other times, where I have to force myself to work.

    The thing is, I don't know the magic that makes me "really on". And I do know that it is probably better for me *not* to be working when I'm not in that condition. I also think there is a limited amout of time you can be in that state; one must have downtime.

    And of course, its probably true that I'm "really on" only about 20% of the time, but I have not kept track. That would be interesting to do... And also track how much time I spend working when I'm not interested.

  22. Scrum by Anonymous Coward · · Score: 1, Interesting
    1. Re:Scrum by mattc58 · · Score: 1

      Seconded. I've used this on my last project to some good effect. Just having a 15 minute meeting a day and breaking things into 30 day "Sprints" works wonders.

  23. Developers have Attention-Deficit Disorder? by BerntB · · Score: 1
    a large number of us have strong symptoms of adult ADD
    You mean the people you know that are developers tend to have ADD?

    You don't mean this as a general rule? ADD people shouldn't be the kind gravitating to sitting still on chairs for long hours? Or?

    --
    Karma: Excellent (My Karma? I wish...:-( )
    1. Re:Developers have Attention-Deficit Disorder? by swillden · · Score: 3, Insightful

      You mean the people you know that are developers tend to have ADD?

      No, I mean I suspect it's a widespread trait among developers, particularly the best ones. I've been working as a programmer for a dozen years and the last six of those as a consultant, so I've worked in literally dozens of development shops and with many, many developers. Once I knew the symptoms of adult ADD, I began to recognize them all around me.

      You don't mean this as a general rule? ADD people shouldn't be the kind gravitating to sitting still on chairs for long hours?

      I think programming is an excellent job for adults with mild to moderate ADD, in fact I think ADD gives them a significant advantage.

      Why? The flip side of ADD's scattered focus, particularly in adults, is the ability to "hyperfocus"; to focus your mind completely on a single, intensely immersive task for hours and hours on end, in a way that "normal" people can't do. This is a huge advantage for a programmer because producing large quantities of bug-free code requires that you be able to build and maintain a mental representation of the program or module you're building. For code of any size or complexity this is a difficult task, and any distraction can bring the whole mental structure tumbling down.

      So, I think that such people naturally gravitate to programming because they find they're damned good at it.

      Note that I'm a professional programmer, not an MD or a psychologist; I have not been trained to diagnose ADD, and I could be completely up in the night. Regardless, I have educated myself on the subject and I'm convinced there's something to this.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    2. Re:Developers have Attention-Deficit Disorder? by BerntB · · Score: 1
      Hmm, you might be on to something.

      Personally I'd fit -- I've described myself as having about 0.5 in simultaneous capacity... (I am INTP in Meyer Briggs, the only test I've taken.) Still, only anecdotal "proof".

      Write it up and get someone to investigate it! It's interesting.

      (-: You don't want to depress parents of ADD children even more by telling them that their children might grow up to become computer nerds!? :-)

      BTW, liked your .sig, but too cynical even for me!

      --
      Karma: Excellent (My Karma? I wish...:-( )
    3. Re:Developers have Attention-Deficit Disorder? by swillden · · Score: 1

      Personally I'd fit -- I've described myself as having about 0.5 in simultaneous capacity... (I am INTP in Meyer Briggs, the only test I've taken.)

      Here's a test for you. No, I have no idea why this page doesn't use Javascript and calculate your results for you. I've thought about fixing that and sending them an updated page.

      Still, only anecdotal "proof".

      Yep, that's all I have.

      You don't want to depress parents of ADD children even more by telling them that their children might grow up to become computer nerds!?

      Well, my children have ADD (one of them for sure, two others probably, the fourth does not, or she hides it well) and I hope they *do* grow up to be computer nerds ;-)

      BTW, liked your .sig, but too cynical even for me!

      Not cynical, sarcastic. Works either way, though.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    4. Re:Developers have Attention-Deficit Disorder? by robb0995 · · Score: 1
      Here's a test for you. No, I have no idea why this page doesn't use Javascript and calculate your results for you. I've thought about fixing that and sending them an updated page.

      I just wonder which ADD-stricken person lacking attention to detail decided to make you calculate your total score only to not refer to it at all in the evaluation!

      BTW, my score was 285, with 67 items at 3 or above (scoring suggests that 20 or more indicates ADD). Gee, do you think I just might have it??

    5. Re:Developers have Attention-Deficit Disorder? by swillden · · Score: 1

      BTW, my score was 285, with 67 items at 3 or above (scoring suggests that 20 or more indicates ADD). Gee, do you think I just might have it??

      It sounds to me like it might be worth your time to go get a formal diagnosis. The main thing that does for you is to get you a prescription for Ritalin or one of the other ADD drugs. I'm considering doing that. I've never liked taking any sort of medication (even aspirin), but there are parts of my life in which my ADD causes me significant problems, and it seems to me that taking something might significantly improve my quality of life. I snitched a couple of my son's pills one day, and even though he has a minimal dose for a person one third my size, the effect was huge. The main difference I noticed was in my ability to focus on "trivial" tasks that occupy less than 100% of my attention, like driving, or holding a conversation.

      In particular, I'm almost incapable of carrying on a conversation with anyone who isn't a quick-thinking adult -- any slowdowns in the pace cause my attention to wander. With such "less engaging" people, I must do all of the talking, or else I will begin thinking/doing other things while trying to listen and I'll lose the thread of their conversation. This means that I'm unable to really talk to my children and I'm willing to consider medication to fix that.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    6. Re:Developers have Attention-Deficit Disorder? by Anonymous Coward · · Score: 0
      You mean the people you know that are developers tend to have ADD?

      I've given this matter a great deal of thought and have determined that very few people actually have ADD, or ADHD as it is now denoted. In fact, I can give you extensive statis... Oh look! A butterfly!

    7. Re:Developers have Attention-Deficit Disorder? by robb0995 · · Score: 1

      I do have a formal diagnosis and a prescription. My only problem is in remembering to take it regularly!!

  24. Housekeeping v. creativity.... by PinglePongle · · Score: 1

    There's a bunch of stuff I do when trying to remain productive but without the immediate inspiration.

    - Refactor. Look at my work to date, and see if there are things I could improve without adding new features or changing the external behaviour. Refactoring steps should take a fairly short time - it usually takes me around 30 minutes to make a "normal" improvement. I often get a flash of inspiration during that time, so once I've finished the refactoring I have something new to move on to.

    - I believe very strongly in using test driven design (there's a book by Kent Beck on the topic which I recommend). When I'm stuck, I like to create additional unit tests for functionality I know I'm going to be implementing in the next day or so. Doing so exposes new ideas and insights, usually enough to get me back to coding the business functionality. You could argue that test driven development is a very strong antidote for the malaise you describe because it forces you, the programmer, to create many micro-tasks (unit tests) and complete them several times every day.

    - Browse the books that seem to inspire me to write better solutions : Design Patterns (Gamma, Helm, Vlissides, Johnson), Agile Software Development (Robert Martin). Usually I recognize something appropriate to my current project, and get inspired to improve it...

    - Code reviews : get someone to review my code, review someone else's code. Fresh eyes, new ideas, the joy of communication....It's really easy to get bogged down in the detail of my current project. I like being able to look over the parapet and remind myself of the bigger picture, but in the most concrete way - by looking at the code.

    - Hey, why else does /., IRC, IM, dilbert, userfriendly etc. exist ?

    --
    It's all very well in practice, but it will never work in theory.
    1. Re:Housekeeping v. creativity.... by chromatic · · Score: 1

      Actually, Alistair Cockburn wrote Agile Software Development (ISBN: 0201699699). Robert Martin wrote Agile Software Development, Principles, Patterns, and Practices (ISBN: 0135974445).

  25. It's not unique to programming by Anonymous Coward · · Score: 0

    As a programmer, I know what you mean. But I don't think it's unique to programming.

    Take photography, for example. How many photographs does a professional photographer publish a week/month/year? Far less than the number of exposures he makes -- probably far less than 20% of that, even. Ansel Adams, I believe, once said that the most valuable tool in his darkroom was the trash can. Writing a lot of code is great, especially if it means you get better at knowing what to ship and what to trash.

    This is one reason why I like open-source. If I feel I'm not being productive with my program, I can go find some other program that's interesting to me and hack on that for a while. Perhaps somebody will return the favor. I think it was Alan Kay or Bill Joy who said something like, "the best innovation happens elsewhere!"

  26. Mimimize wasted time - I learned this in college by sbrylow · · Score: 1

    The sooner you get behind, the more time you have to catch up. A motto to live by!

    --
    Faster, better, cheaper; pick any two.
  27. Get out of my hair == get shit done by Anonymous Coward · · Score: 0

    No matter how well planned a project is, it turns out that true progress is only made at very few points over the entire project lifetime.

    Yeah, progress only happens when the boss is not sticking his/her ignorant capricous fingers into the pie.