Slashdot Mirror


Dealing with Difficult Development?

jjwahl queries: "I've recently been handed a funded web development project, and in an industry where almost any paid work is good work this is a welcome opportunity. This database intensive site basically has the look and feel developed but none of the plumbing. I have been given the job to create the database and write the code to make the site work - all at a reasonably good rate and with a time and materials payment structure (i.e. this is not a fixed cost project). Sounds like good news, right? Not necessarily." The company wants the work done in a timeframe that prevents a well thought out design and pretty much eliminates a decent testing phase. How would you handle working on such a project?

"Why [is this not good news]?

The project timeline is insanely short given the complexity; there is nothing of substance developed yet - no schema, nothing; given the timeline, all schema development will have to be done on the fly - no time to sit down, take a holistic view of the project and develop the schema properly; and there is also no timeline for testing - other than the ad-hoc testing a developer does, there is no time for formal testing at all. All of this means that I'm basically going to develop this site on the fly which means that I'll eventually make mistakes, and won't have a proper testing cycle during which I could catch them -- the public will catch them, instead and complain.

I'm afraid that despite my heroic efforts to bring this site to fruition, this job will look sloppyand reflect badly on me. Have any of you been in a similar situation? How did you deal with it? Should I just turn the project down?"

7 of 61 comments (clear)

  1. Maybe walk away, maybe not by WolfWithoutAClause · · Score: 2, Interesting
    If you think you can hack together something that works (i.e. tested!), possibly with suboptimal performance, with a horrible schema etc. then do it; otherwise walk away.

    If you've hacked something together you may well get more money to spruce it up afterwards; a working site may be upgradeable to a better schema or whatever, although it will cost. It sounds like the company doesn't care so much what it costs, so that might work.

    But if you can't see any plausible way to do it right now, you should walk.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  2. Re:Several options by spongman · · Score: 3, Interesting
    Yeah, if you're not adverse to a Microsoft-based solution check out the Object-Role Modeling (ORM) support in Visio.NET. The general idea is that you specify the schema of your data using a format that is easily understandable by both you and your clients: english sentances, but at the same time that information can be used to create a database schema, tables, constraints, sample data and source code for operating on that data.

    But as the parent said it might take too long to familiarize youself with the tool for it to be effective.

  3. This might be a good time to apply XP by Lumpish+Scholar · · Score: 2, Interesting

    If there's literally zero time for anything but unit testing -- if the customer is saying, "you must deliver perfect code in this agressive timeframe" -- then the project is doomed. (Can you put it to them that way?) Find some way to accept the job without being seen as responsible for its inevitable failure.

    You can't do "big design up front." I'm sure there's no way you'll get detailed immutable requirements. You're going to need lots of unit tests and lots of automated tests. (If you're description of the other trends is accurate, it's a given the customer will change their minds during this project. You already know you'll make mistakes and have to recover from them. That means you're going to make changes to working code, and will need to ensure your changes didn't break anything.) It's also a small project.

    Extreme Programming isn't a good choice for all projects, but it sounds as if it might be for this project. If you look at the twelve practices of XP, most of them seem applicable.

    Some of the practices won't apply. You can't "pair program" if you're working by yourself. I don't know how close you'll be to "on-site customer." The call for acceptance testing is one you'll need to deal with no matter what process you follow. (This is not the right setting to discuss 40 hour work weeks, so let's not concentrate on that one.)

    On the other hand: Small releases and the planning game will get the most important work done first (i.e., when the schedule slips, it'll be less catastrophic than it might otherwise have been). Automated unit tests can speed development, and they are (XPers hardly ever say this) useful design artifacts in their own right.

    Having said that, let me say this. Some of these practices take some time and experience to master. (Personally, I can't yet say I really "get" XP-style automated unit tests. I often run into cases where I can't find "the next test" that leads me in the right direction.) You won't be able to pick up Extreme Programming Explained (Amazon.com, BN.com) today and be a good Extreme Programmer tomorrow. Using a new process, even a good one, is like using a new programming language (even a good one): you'll be slower when you're climbing the learning curve. You may not be able to afford that on this project.

    Finally, if you turn the job down, do so in a way that doesn't involve burning any bridges. Perhaps say you don't think anyone could succeed under the specified terms. You may yet be called in later if (when?) the first developer hired can't make it happen.

    Good luck!

    --
    Stupid job ads, weird spam, occasional insight at
  4. _Death March_ by Yourdon by herrlich_98 · · Score: 2, Interesting

    Several years ago when I found myself on an understaffed tightly (insanely) scheduled project I, and several others on the project, read _Death March: The Complete Software Developer's Guide to Surviving "Mission Impossible" Projects_ by Edward Yourdon.

    Summary from Yourdon's site

    I see a lot of Yourdon's advice in these /. comments. Basically to know what you are getting into and do it with eyes wide open. There are both reasons to do it (money, foot in the door, etc) and reasons to run away, but your most important time to negotiation is before you say "yes".

  5. Living in a watered-down version of this now by smittyoneeach · · Score: 2, Interesting

    The customer demands.

    I explain that the simpler, better, working implementation I just showed them is really what they want.

    The customer re-iterates demands.

    The project manager capitulates, and I get stuck writing extensive logic in a scripting language (!) to do something completely tasteless that will only dismay the customer when the lousy repercussions of their demands hit them in the face.

    "Welcome to software consulting" says the project manager.
    The fact that I held true to my ethics and tried to dissuade the customer is cold comfort.

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  6. Run fast, run far by Anonymous Coward · · Score: 2, Interesting

    They have the look and feel developed before they have something to look at and feel? This one is doomed, kinda like trying to build a car under the paint job that is already complete.

  7. IMPORTANT COROLLARY - by Anonymous Coward · · Score: 2, Interesting

    If you look closely, it is very likely you will see that the example you gave is just one of many crazy things happening at the company that is suggesting the impossible deadline.

    My experience is that we only get called into the most disastrous situations. If these were well-managed companies, with cheerful, friendly, helpful, intelligent, introspective employees, they wouldn't need us in the first place.

    Free lancers are asked to solve the problems caused by lazy, inept, and cruel managers, and are forced to interact with lazy, inept, rude, and hateful employees. That's just the way it is.

    Rise above it: Be kind, considerate, helpful, industrious, and talented, and, in the long run, people will remember you for it. Or at least that's what I'm hoping.

    PS: Above all else, KEEP YOUR MOUTH SHUT! Nothing foments a torch & pitchfork peasants' rebellion quite like publicizing the obvious blunders they've made in their work.