Live data from Hacker News

I'm Sure It Will Only Take You A Few Days To Code

danshipper.com

91–100 of 117 posts

Re: I'm Sure It Will Only Take You A Few Days To Code

#91
post #60
post #19

The Lifecycle of a Project Manager: Phase I: (Idealism) Treat building software like building a bridge. Analysis --> Design --> Development --> Testing --> Implementation. Phase II: (Pragmatism) Realize that Phase I doesn't work. Try to figure out why. Decide that the weak link is Analysis, i.e. we're no good at estimating and hitting deadlines because we never have good enough specs. Devote your life to the art and…

I once interviewed a project manager.. asked how he came up with deadlines. He said "ask the programmers and subtract 20%". Talk about a red flag in an interview!

I heard somewhere long ago "double the estimate and add a unit". Two weeks ==> Four months.

Re: I'm Sure It Will Only Take You A Few Days To Code

#92
post #90
post #19

The Lifecycle of a Project Manager: Phase I: (Idealism) Treat building software like building a bridge. Analysis --> Design --> Development --> Testing --> Implementation. Phase II: (Pragmatism) Realize that Phase I doesn't work. Try to figure out why. Decide that the weak link is Analysis, i.e. we're no good at estimating and hitting deadlines because we never have good enough specs. Devote your life to the art and…

But how does that help the customer (be it internal or external)? How is he supposed to align capital, human or financial? For example: when does he tell the marketing team to start the big launch campaign, etc? An example would be something like a main-stream game, say Battlefield 3. The have marketing videos months in advance, they sell games in advance and by doing so they promise that the product will be availabl…

This may come off a bit cliche... but their is the alternate Blizzard Model (Yes, I know blizzard isn't the only one doing this)... Blizzard has tended towards the "It will release when it's done" model in the past.. and recently with Diablo 3 their model had been identical until the very end where they cut half (maybe less than half but it felt like it) of the game out of the final deliverable to decide when they were going to deliver (They cut the pvp content though they intend to add it back later).

In this way I think blizzard provides a good counter example for A) Setting deadlines at the beginning and B) Not shipping whatever is done.

Re: I'm Sure It Will Only Take You A Few Days To Code

#93
post #19

The Lifecycle of a Project Manager: Phase I: (Idealism) Treat building software like building a bridge. Analysis --> Design --> Development --> Testing --> Implementation. Phase II: (Pragmatism) Realize that Phase I doesn't work. Try to figure out why. Decide that the weak link is Analysis, i.e. we're no good at estimating and hitting deadlines because we never have good enough specs. Devote your life to the art and…

I like your idea about constant deadlines, but I'd add a twist. In a novel writing course I'm attending, I know what I want my character to say as her last line, so I build the dialogue backwards starting from that.

I should do the same with a deadline: estimate what is to be delivered on that date, backwards. This could be a good method for reaching a consensus on scope with customers, and they would understand that meeting the deadline is a given.

Re: I'm Sure It Will Only Take You A Few Days To Code

#95

P = programmer; NP = non-programmer NP: How long will it take? P: It'll take as long as it takes. NP: I don't understand. What does that mean? P: When you tell me that the product is finished, it's done. NP: You mean you can't estimate how long it'll take? P: I can't estimate when you'll decide that it is done, therefore an accurate prediction is impossible. From experience I know that a project like this can take fr…

    NP: You're fired.

Re: I'm Sure It Will Only Take You A Few Days To Code

#96

P = programmer; NP = non-programmer NP: How long will it take? P: It'll take as long as it takes. NP: I don't understand. What does that mean? P: When you tell me that the product is finished, it's done. NP: You mean you can't estimate how long it'll take? P: I can't estimate when you'll decide that it is done, therefore an accurate prediction is impossible. From experience I know that a project like this can take fr…

This is the difference between an engineer and a programmer.

That programmer is giving literally correct answers but acting like a passive subject in what should be an active relationship.

Our role as engineers is to push back on all of the possible negative choices/directions a product-owner or business person makes and guide them to the simplest, scoped solution that solves their problem.

Re: I'm Sure It Will Only Take You A Few Days To Code

#97

P = programmer; NP = non-programmer NP: How long will it take? P: It'll take as long as it takes. NP: I don't understand. What does that mean? P: When you tell me that the product is finished, it's done. NP: You mean you can't estimate how long it'll take? P: I can't estimate when you'll decide that it is done, therefore an accurate prediction is impossible. From experience I know that a project like this can take fr…

So you have an easily identified problem to solve.

Specification and Responding to Change are not mutually exclusive. You do the first. You get an estimate. When a change is mandated, you specify the change. You estimate it. When you discover a feature was under-specified, you re-specify it.

You wouldn't find out your code doesn't work, and then not update the tests. Why would you treat specification any differently?

When the 3 month project ends up being a 9 month project, you have clear, actionable documentation on where your process needs fixing, and if the developer truly did hit all their marks, they get their well deserved rewards/kudos despite being saddled with a poorly managed project.

There are projects (I'm sure) that are practically impossible to specify well. I've never worked on one though. Web Development is, by it's nature, a rather straight-forward process. The more unpredictable portions (design, data-migration) can be sandboxed in a pragmatic manner.

I've been a part of projects that have run very well and satisfied the client despite changes doubling the original project cost. That's what Change Requests are for. To make sure you're all on the same page and everyone knows what they're paying for.

The fallacy of Agile for the projects I've worked on is that the clients will be delighted to recieve "what they want" if they don't know the ultimate timeline, can't make their own plans around it effectively, and have payed a lump sum of money thinking they were buying X, but instead recieved X--.

Since let's be realistic, when you talk about shifting to an "lean" process in a fixed-bid environment, you're not talking about delivering a better suited to the needs Y to a client who paid for X. You're talking about delivering a subset of X that fit within the time allowed. And who ever walked away happy when they got less than they paid for?

If you take for granted the Perfect Specification is impossible, you don't have to shoot the whole process in the head either. Would it be valuable to spend a few minutes post-design on deciding what Validations apply to the Form fields presented? Or how to map those fields to your data-store? Spend a few minutes thinking about what business-logic applies "in the background" once that Form is submitted? What happens on error? What test-cases should be defined to ensure we get the basics covered like HTML escaping, CSRF protection, etc?

Even a deliberate attempt to cover half of what you might ultimately need to consider to deliver this feature makes the rest so much easier, more predictable and easier to estimate.

The dirty secret is estimates (again, speaking from experience in Web Development) aren't all that difficult. It's just a Garbage-In-Garbage-Out situation. I've been doing this for 10 years. Estimating the time it'll take me to write a Form is not difficult to do accurately. Just like I can't off-the-top-of-my-head estimate the effort involved in writing a Web Framework or O/RM before breaking it down into Routers, Actions, Templates, etc, I can't estimate a Feature without breaking it down into smaller chunks either.

The overarching theme in most of the comments to this post is that estimates are hard, impossible or not worth doing. I respectfully disagree on all counts (within the context of web-development anyway, which is all I can speak to here).

It certainly doesn't benefit the Developer to have all the accountability and none of the authority when working on an extended project without strong Project Management backing him or her up. So it seems to me pretty self-defeating when instead of figuring out what works and what doesn't, like your average Developer would tackle any other problem, instead the popular opinion seems to veer towards throwing out the baby with the bath-water and absolving oneself of responsibility instead.

The Executives are going to blame someone, and it's rarely going to be themselves. At least not in any meaningful way. Like it or not if you're working on a Doomed Project, and you don't have someone to back you up, realistically you're going to be looking at a reevaluation in the capital of your own reputation. Fair or not, that's the way it works in my experience more often than not.

Re: I'm Sure It Will Only Take You A Few Days To Code

#98
post #60

Earlier quoted context omitted.

I once interviewed a project manager.. asked how he came up with deadlines. He said "ask the programmers and subtract 20%". Talk about a red flag in an interview!

That's funny, because as a programmer I always estimate how long it'll take and add 20%.

[deleted]

Re: I'm Sure It Will Only Take You A Few Days To Code

#99
post #89

One of my favorite ones was a fellow who wanted an iPhone and iPad game done. He proclaimed that it had to be done for $10K. This game easily required six months of work. It also required server-side development and support. He also had no idea that every so often you need to fix, I mean, update, your apps because new iOS releases might break them. I was open-minded and decided to invest some time educating him on th…

Come on now. Don't blame the programmer being Indian for the problems your friend is having. Good programmers anywhere cost almost as much as they do in the US now. Globalization means that an Indian programmer has the same access to salary information in the west. He/she might knock off 10% to be competitive. You're friend could have easily got a cheap, inexperienced programmer anywhere else in the world, including…

If an unsophisticated client looks to another hemisphere to get a one-off iOS app built I wouldn't bet "world-class talent at a 10% discount" was their hiring strategy. More likely "I can get this done for 1/3 of what this guy is quoting me? What could possibly go wrong?"

Re: I'm Sure It Will Only Take You A Few Days To Code

#100

You are in a closet, looking at a closed door. How big is the house?

The more I think about it, the more I like this metaphor. Because you CAN make SOME estimates based on what's in the closet. If it's a huge closet, you could guess that the house was fairly large. If there are a lot of coats of different styles, you might infer that many people live in this house. But you're still making a guess about something you can't actually see because you haven't been given enough information. Brilliant!
Post reply on HN