New Client, New Project – What do you want to know?

I'm starting at a new client in a couple weeks.  Last time I did this I created My Gameplan for Starting a New Project.  I think it mostly held up with a few exceptions, mostly around the quality of the upfront analysis leading into the initial story list.  I think next time I'd like to get just a bit more time and much more access to the business experts for building up the initial story list and release estimates.  Last time I was worried about the effects of Analysis Paralysis and gaining momentum early.  I want to revisit that just a little bit and think about the questions I want to ask my new client team right off the bat:

  • What constitutes success for this project?  What's the primary goal?
  • What's the iron triangle constraints?  Time, resources, or scope?
  • Who are the stakeholders?  End users?  Who's paying for this thing?
  • Who are the business and technical experts that we'll need at some point?
  • How much contact and interaction are we going to be able to have with the end users and business experts?  Are we going to have a customer representative or advocate embedded onto the team?
  • What are the legacy systems we'll need to interact with?  I want to know the challenges around the legacy system or existing infrastructure – and you know there's always something nasty about a system of any age. 
  • What external teams are we going to need to interact with?
  • Is the team self contained (testers, analysts, developers, and a PM all together under a single organizational structure and team), or is the testing team in a completely separate organization?  Obviously, I think the first choice is far superior in terms of results and efficiency, but you gotta play the cards you're dealt.
  • Obviously, I'm going to try to use Agile practices (mostly XP with some Scrum flavoring).  Is that acceptable to you?  Do you have any experience with a disciplined iterative approach (waterfall is still by far and away the most common SDLC)?  What kind of project management practices do you use today?  How about development practices?  I would try to use Continuous Integration and Test Driven Development no matter what, but other practices can be harder to sell or do in non-Agile organizations.  As an immediate example, I want to do Acceptance Test Driven Development anytime the analysts and testers can and will play along (I think we can in my next project, but couldn't on my current project).
  • A very important question:  can the team exert a great deal of control over their practices and process?  Or are they bound by a corporate standard?
  • Assuming that you can control your own process, what are your pain points today in your existing process?  Theoretically as a consultant, you're supposed to do something to add value ;-)
  • Where's the build server, and can I and the team have full control over it?
  • What is your policy towards using Open Source software?  Obviously I'd never advocate any tool under a viral license, but how about less restrictive licenses?  Do I get my head chopped off for suggesting OSS tools when they're superior to the built in or nonexistent Microsoft offerings?
  • What is it that you're not telling me?  It's worth a shot ;-)
  • Can I get my laptop in the network?  More importantly, what am I not supposed to do on your network.  Never hurts to ask.
  • You are using Subversion right?

 

What'd I miss?

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Starting a new Project. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Carlton

    How quickly can you build and deploy ALL your software – executables AND database.

  • http://joeydotnet.com/blog JoeyDotNet

    Yeah, of course that statement about TFS I made was quite broad. I guess I was just speaking from my own experiences with some of the pains I and my fellow consultants have experienced with TFS. I have no doubt that there are quite a few TFS shops out there doing some good stuff and are very successful (including ours). Personally, I just much prefer the simplicity of Subversion and the edit-merge-commit model of SCC, over the check out/check in model of TFS. Although shelvesets in TFS are one of the features I do like and use quite a bit.

    “My last client was a multi-million $ project where they used VSS and followed the DBCAL principle of stupidity…”

    I would agree that’s obviously not a good thing. So I’m not sure what bearing my comment on TFS has to do with organizations using bad development practices. And certainly TFS is 1000 times better than VSS, no doubt.

  • http://www.flux88.com Ben Scheirman

    “…be glad they’re not a TFS shop…”

    I don’t agree. I think that TFS shops actually see value in a lot of the things that I talk about, however it would be my choice implementation of such ideas.

    My last client was a multi-million $ project where they used VSS and followed the DBCAL principle of stupidity…

    (DataBase Conains All Logic)

  • http://joeydotnet.com/blog JoeyDotNet

    Jeremy,
    Exactly! And in “his” case, they are *very* much at odds with one another, but that was the expectation that was set for the consultants. That the projects would be delivered AND their staff would participate in the development from the start of the projects, all while they were being mentored so they could maintain it once the consultants left. Of course that kind of problem regarding expectations has little to do with the consultants themselves, at least in this particular case.

    Just wouldn’t want you (or any other fellow consultant) to end up in a situation quite like this…

    Heck, “he’d” be happy if “he” could even *get* answers to half of those questions in the first place… :O

    Oh, and having complete control over the build server, definitely important if you’re going to be helping them set up automated build environments and CI (which I’m sure you will). If you don’t, be prepared to have to nag the infrastructure guys who also just so happen to be out at lunch when you really need to tweak the build server. :)

    Anyways, seriously, hope things go well for ya!

    (oh, and be glad they’re not a TFS shop, that’s all I’ll say…) :)

  • http://codebetter.com/blogs/jeremy.miller jmiller

    Great comments one and all. I’ve dodged CMMI for the last 4 years and I’d like to (mostly) dodge SoX too, but you can only run so far.

    Steve, if that’s the way it is, I’d rather find out sooner rather than later and go in with eyes wide open. Sigh.

    Joey,

    One big thing I did miss was the inevitable enablement vs. delivery question. Do they want coaching and improvements, or just to get the job done as quickly as possible. Those two goals are sometimes at odds.

    Tom,

    My new client is an SVN shop. I was afraid they’d be ClearCase, but no such problems ahead. Why SVN is usually pretty easy -> *free*, easy to use, works well in remote situations, fast, branching is easy, merge is better than CVS, lots of different clients, CC.Net & VS.Net integration

  • http://joeydotnet.com/blog JoeyDotNet

    Raymond mentioned I think one of the most important things, speaking from my own experience and current client engagement. The skill level (and motivation!) of the existing team members is very important.

    This “guy and other fellow consultants” I know have been in an on-site client engagement for almost a year now, and it’s been quite challenging due to their inexperience and lack of knowledge of basic, fundamental programming skills. Things like how do I write an “If” statement… yes, “he” was serious. So just make absolutely clear what their expectations for your role are going to be. If you’re expected to help deliver large enterprise systems, while mentoring their staff to maintain it, beware.

    Even more than skills, is motivation to learn and improve their skills. If you recognize the typical “day coder” mentality in them, you’re in trouble.

    “His” .02. :)

  • Steve

    LoL.

    “We are a data-centric company with 500 dba’s and you need to work with our VB.NET programmer who likes to drag and drop datagrids on the page. Our last guy setup sourcesafe so you won’t be able to work remotely very well. We oppose all open source and strictly are a Microsoft shop. We don’t want any of that junk on our systems because the guy to maintain this stictly works with the Enterprise Library and has the 400 stored procedures setup and ready to go for you… ”

    “Subversion? I hope this project can stay afloat actually.”

    “I have XP on my system, I didn’t know it was ‘agile’”

    “Build server? There is your laptop and there is ‘the’ server – we just copy over the files and restart the services”

    “You like to test? Good – we like our test cases all written out so Mary can data key in the stuff you tell her to verify that is what comes out on the other end”

    lol

  • http://www.opgenorth. Tom Opgenorth

    I think, as part of the “You’re using Subversion” question you need a reply for when they say, “No, we’re using VSS and are happy with it”. :)

  • http://www.e-Crescendo.com jdn

    If they are a public company, what are their specific SOX requirements?

  • http://www.winterdom.com/weblog/ Tomas Restrepo

    Asking about their production/testing deployment procedures and overall network architecture/infrastructure is something I try to do early in the project as well. It can save you a few nasty surprises down the road and gives you a few important points for the application’s overall architecture (particularly if it involves hitting legacy systems).

  • http://www.codebetter.com/blogs/raymond.lewallen rlewallen

    If you are interjecting into an existing team, its also important to know the skill levels and experiences of the current team. Are they experienced with the current SDLC? Do they have experience with TDD? Source control? Pair programming? How much OOP experience? What are their strengths and weaknesses. This gives you a good idea of obstacles you many have in front of you strictly from a team synergy aspect.