views:

485

answers:

9

There is Ruby on Rails (1.8, 2.3.2) project. First version of project was made by some organisation. I will implement next versions of this project without any help from this organisation. I will be able to talk with developers from previous development team during meeting (1-3 hours).

Project statistics: ~10k LOC, 1.0/0.6 code to test ratio, rspec

What questions about project can you recommend to ask?

+39  A: 

First review the entire project and to figure out as much as possible so you have context and can actually understand what they tell you.

Ask

  • If you can record the conversation
  • For an architectural overview
  • Why they made certain architectural decisions over another
  • A complete list of dependencies (if you can't figure that out on your own)
  • What the biggest problems are
  • Which parts of the projects are always / never being fixed
  • What the Achilles' Heel of the project is
  • What will cause the biggest headaches
  • What security issues are there and what the constraint is to fixing it
  • What would you do next if you were me?
  • What you should know that you didn't ask (most important question)

Also, don't be judgemental, you want them to reveal any problems they know about. There are probably tons of things wrong with the app that they are embarassed about, which you need to know sooner rather than later. They're not going to open up to you if they don't trust you.

John MacIntyre
@John MacIntyre, all solid advice. Good answer!
Simucal
@Simucal-Thanks.
John MacIntyre
Very nice answer, well thought out. I wish I had this list when I took over this job :)
amischiefr
You forgot a couple of *really* important ones: Where's the kitchen and where are the best places to eat around here? :P
BenAlabaster
Forgot, +1 very solid answer ;)
BenAlabaster
+5  A: 

I would ask for a code walkthrough. Not line-by-line, but more for the overall structure of the project, relationships between individual modules, etc.

Anna Lear
+3  A: 

Find out the Why's. How is easy enough to see in the codebase, but the why is sometimes impossible to figure out, and will bite you in the ass.

For instance...

Which parts of the application were the biggest performance issues? Which of those issues were resolved? Which are still issues?

Why did you opt for pattern / tool / library x? What other things did you consider? Why?

This will hopefully. (Hit some wood.) Help keep you from having to trudge through the same learning curve and mistakes that the first team had to deal with, and should give you good insight into where the first team actually made a poor choice, instead of making a choice based on factors you have not accounted for yet.

Matthew Vines
A million times yes! I've seen people so many times break something because they didn't like how it was done and rewrote that section and didn't think to ask why it was done that way. There are often reasons (some of them legal reasons) for what initially appear as poor design choices.
HLGEM
+2  A: 

Ask if the new features will cause any major changes to the existing code (architecturally) and what the implication of that will be with other dependent parts of the application.

Also get their emails, as you will have more questions.

MatthewFord
+1 for "get their emails"
Carl Manaster
+1  A: 

One of the most important things, in my opinion, is to get as much technical documentation as you can prior to meeting with them. You should try to go into the meeting as informed as possible, so that you not only know what areas you need to focus on the most, but also to have a preexisting knowledge of how some of the subsystems relate to each other.

Also, do not be afraid to ask what they would have done differently, if given the chance. Some of the best ideas come too late in the development process to be implemented - be it from library availability, change in requirements, change in team, etc.

joseph.ferris
hahaha documentation might be inaccurate/out of date - so should be taken with grain of salt.
dplante
The "hahaha" is a little immature, don't you think? Inaccurate or out of date, it provides preparation that the OP does not have. If an interview had been conducted with stakeholders, domain information might still be highly accurate and relevant. No documentation is 100% of anything, but to ignore it is flat out ignorant.
joseph.ferris
A: 

Bring cookies (or pizza, beer, or wine as appropriate); you will want them to have positive memories of you for when you call with questions.

Edit: to put my answer in the form of a question: "May I offer you a home-baked cookie?"

Carl Manaster
A: 

Perhaps you have done this already, but I would make sure you can:

  • Checkout the latest version
  • Run all the migrations
  • Run all the tests
  • Deploy (even if to a staging server)
  • Run the application locally

Before you go to the meeting, so you can make sure you can by the time it is over.

csexton
A: 

Other things that might be useful

  • data model
  • UI wireframes
  • bug tracker data / issue tracker data
  • who are the customers / people representing customers
  • development environment configuration
  • source control locations, etc.
  • explanation of special configuration settings
dplante
A: 

Wow! All great answers, right down to the cookies.

My contribution assumes that this is your one and only chance to access the old dev team, therefore you need to kick it up a notch:

  1. Agenda. Split the meeting into several parts, for instance:

    • A quick (15 min) introduction and arch overview
    • One on one with team members.
    • Design review as a group, etc.
  2. Positive Energy. Especially if the relationship is inherently difficult, keep a positive focus by postulating: what improvements would you put into the next version - (rewrite is not an option, right Joel) - capture every nuance, and drill down past their comfort level only nearer the end.

  3. Facilitator. Use a trained design meeting facilitator. They can help prep for the meeting, conduct pre-meeting interviews, design the agenda. During the meeting they can drive the intensity, and keep the focus. They can also suggest forms of capturing what can be a fair amount of information.

Also, I would try to id all design artifacts beyond the code, if any, and come to an understanding of how accurate it is. This may include doing design reviews of key elements of these documents vis a vis the as-built system.

Don

Don Gillis