|
I can not agree more!
That is how I have always felt about coding. Good code is an art form and a thing of great beauty. It makes it easier to maintain and understand. Due to time constraints, or other reasons, I have not always been able to create great art, but I do try.
At one point in my career I had nightmares about the code I inherited. I am not sure if I would have taken him under my wing or requested that he be fired. I know the true meaning of spaghetti code and have learned how to straighten out some amazing messes.
My favorite analogy has always been that of an author creating story: research, outline, write, and rewrite; with attention to detail. You do not design your character by placing his head in one place and his arms, legs, and body in a dozen others.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra
|
|
|
|
|
The programmer, manager, CEO/stock holder and client/customer will all have different priorities.
Hence the conflicts we have in any development effort.
Marc
|
|
|
|
|
Having a good PM to run interference between development and clients takes some of these conflicts away, or at lest pushes them further away.
only two letters away from being an asset
|
|
|
|
|
in software development, it is quite common that the budget is an amount of working hours; the longer the developers spend on a project, the more the project will cost. I would be surprised to see the two values differ too much.
just my two cents
Federico
|
|
|
|
|
Federico Sasso wrote: in software development, it is quite common that the budget is an amount of working hours; the longer the developers spend on a project, the more the project will cost.
Not necessarily. The client may say they need the project completed in three months (by the calenday) but only want to pay for 6 man-months of development effort despite the fact that in order to get it in on time it will take 3 people (i.e. 9 man-months)
So, they are going to have to trade off something.
|
|
|
|
|
Hi Colin. Thanks for your comment. I'm not so sure I get your point, who is "they"? Do you mean developer and client?
I realized that there's a potential ambiguity in my statement.
I'm talking from a developer company standpoint: when I say "cost of the project", I do not mean how much the client will pay for it, but how much it will cost to the software house to develop it.
Once a contract has been signed with a fixed price (and may be penalties for late delivery) and release date, the software company allocates the resources to make it on time; suppose now that problems arise, two things can happen: release date is delayed, and in this case running out of time means running out of budget, because even without penalties, I still have my developers working on an old project and cannot apply to a new one, so the company income lessens but we have to pay the developers the same; or, we have to inject new human resources to make it on time, so that also in this case development cost arises, since the newly added developers could otherwise work on something new.
Project scheduling tastes so much diffent when you're the one paying the bills... (I'm still am not the one, btw
Federico
|
|
|
|
|
In my more than thirty years of programming every place I have worked, time was the biggest factor. The old saw there is never enough time to do it right, but always time to do it over seems always to apply.
When prediction serves as polemic, it nearly always fails. Our prefrontal lobes can probe the future only when they aren’t leashed by dogma. The worst enemy of agile anticipation is our human propensity for comfy self-delusion. David Brin
Buddha Dave
|
|
|
|
|
David Lane wrote: time was the biggest factor
Indeed. A while back, the company I work for brought in one of these 'touchy-feely' management consultants to find out why the engineers were so disgruntled. One of the complaints was that our schedules are dictated from above.
A typical schedule discussion goes something like this:
Management: "We need features X, Y, and Z by the end of Q1 next year. What's the schedule for that?"
Engineering: "Uhh..."
Software Zen: delete this;
|
|
|
|
|
Sometimes it becomes necessary to add manpower to meet schedule. The project can come in on time (end date met) but be way over budget because of unplanned staffing.
|
|
|
|
|
In my last job they developed the project to a budget.
The time I worked on the job multiplied by my hourly rate was counted in the project cost. So, I was under pressure to finish quickly and it wasn't quite done to the quality that I would like.
There was free time at the end to improve my module, but they wouldn't let me because the extra time spent would bust the budget. And I had no other work to do once the project was finished. I'm a saleried worker, they pay me weither I'm working or just hanging out on the forums .
Really smart project management
|
|
|
|
|
I think the following ( 1 is most important)
1. The design and implementation was first rate
2. The job is fully documented
3. The client / boss etc is happy (although some people never are)
4. The job is done within budget
5. The job is done on time (although, it will take as long as it takes to satisfy 1)
6. The job matches the initial specs perfectly (very rarely happens)
7. The job is done error-free (there has never been a project of any import which works on version 1.0.0.0)
|
|
|
|
|
How long have you been in the industry?
"3. The client / boss etc is happy" is number one. It shouldn't be but it is.
regards,
Paul Watson
Ireland & South Africa
Andy Brummer wrote: Watson's law:
As an online discussion of cars grows longer, the probability of a comparison involving the Bugatti Veyron approaches one.
|
|
|
|
|
'On Budget' should be higher surely if you want to make a living...
Apathy Rules - I suppose...
|
|
|
|
|
Client won't pay if they aren't happy
And it depends how you charged. We never go on fixed price.
regards,
Paul Watson
Ireland & South Africa
Andy Brummer wrote: Watson's law:
As an online discussion of cars grows longer, the probability of a comparison involving the Bugatti Veyron approaches one.
|
|
|
|
|
Since you're developing iteratively (you are, aren't you), you're reviewing the project every 2-4 weeks. If the business call is that greater investment will bring sufficiently greater returns to justify it, or if by keeping to the budget you'll not actually have anything that customers will buy, or if you have to meet a deadline and missing it will nullify the project (think Olympics, for example) and you can pull it in by increasing investment, going over budget is fully justified.
It does, of course, need to be a calculated decision with the business case to back it up.
Ian Brockbank
"Legacy systems are systems that are not protected with a suite of tests. ... You are building legacy code every time you build software without associated tests." - Mary and Tom Poppendieck, Implementing Lean Software Development.
|
|
|
|
|
Paul Watson wrote: The client / boss etc is happy" is number one. It shouldn't be but it is.
Unless you're an academic researcher, you're developing software for a paying customer. If that customer isn't happy when the job is done, none of the other considerations matter. I don't see the problem with that being the primary consideration, especially since it encompasses the other entries.
Interestingly, all of the other items reflect the developer's esthetic regarding the job, his criteria for success. They can contribute to the 'customer being happy', since he may define his requirements in those terms. "I've got to have this by the end of the month", "I can only budget $20K for this effort", "I don't care how many features you give me, but what you do supply has to be rock-solid", and so on.
I think if more us spent more time on accurately identifying what the customer really needed and then meeting that need, the software industry would have a much better reputation. It's like the old joke: "You start coding; I'll go see what they want."
Software Zen: delete this;
|
|
|
|
|
Gary R. Wheeler wrote: I don't see the problem with that being the primary consideration
Because you can make a client happy with a badly architected system.
regards,
Paul Watson
Ireland & South Africa
Andy Brummer wrote: Watson's law:
As an online discussion of cars grows longer, the probability of a comparison involving the Bugatti Veyron approaches one.
|
|
|
|
|
Also often our clients are not the end users. Our clients often don't understand what the application's users need. So what suites our client may not suit the end user.
This is very true in web-development.
regards,
Paul Watson
Ireland & South Africa
Andy Brummer wrote: Watson's law:
As an online discussion of cars grows longer, the probability of a comparison involving the Bugatti Veyron approaches one.
|
|
|
|
|
I agree. If one's aim is to succeed at anything, making the client/boss happy is number one.
|
|
|
|
|
Because of "The client / boss etc is happy" I never have any time to think of the design or to document very much so my priorities are very different. I have to eliminate "The job is done within budget" because there is no real way to judge that for me.
1. The client / boss etc is happy
2. The job is done on time (this usually is a part of 1)
3. The job is done error-free
4. The design and implementation was first rate ( My skill and experience help here but there is 0 time allocated to the design phase )
5. The job is fully documented ( we need to remove the word "fully" as it never applies )
6. The job matches the initial specs perfectly ( this also is never done )
John
|
|
|
|
|
"I've got to go to the bathroom!"
Shohom67
|
|
|
|
|
In my personal opinion, I guess, it's depending up on each person’s view, which is involved with the project. In this case, every single point have to be rated as very important.
Regards,
Peter
|
|
|
|
|
I assumed the poll wanted me to rate the parameters in order of importance (i.e. 1 to 7). Looks like it meant "1 = very important, 5 = least important" or "1=not very important, 5 = extremely important". Which one is it?
The presentation of the poll could use some rework.
/ravi
|
|
|
|
|
Yes.
One can legitimately consider these numbers as priorities so read them this way: "1 is my first priority and 5 is the least" (Unfortunately, different web sites consider different meanings which make things even more complicated.)
The first days that I registered to this web site articles had such a way of rating. I can remember that I gave a 1 to an article that I thought should has the top mark(compared to A+ and C-) Thanks to CP admins who changed that to Poor and Excellent.
What we see in this poll is either weak design or ignoring users feedbacks
// "Life is very short and is very fragile also." Yanni while (I'm_alive) { cout<<"I love programming."; }
|
|
|
|
|
Other way around. The description says "1 = not important, 5 = very important"
regards,
Paul Watson
Ireland & South Africa
Andy Brummer wrote: Watson's law:
As an online discussion of cars grows longer, the probability of a comparison involving the Bugatti Veyron approaches one.
|
|
|
|