views:

132

answers:

5

Being a young, inexperienced developer doing one man development work for a client, I thought I'd just need my laptop and a development environment when asked if I needed anything. Flash forward to some testing later on and I realize I need to test my software on operating systems I do not have access to.

So now I know to ask about that.

What other stuff should I be asking about? Anything I should be looking for?

+2  A: 

"test my software on operating systems I do not have access to.". You need vmware (assuming windows) and licensed copies of the other operating systems to start.

If you are developing on the live server, then you need a development server.

If the work is too much, then you need help.

Cervo
+1  A: 

I am one-man project.

I would kill for competent interested partner developer. I know this is probably not which you meant in question, but it's really helpful to have different person collaborating with you

aaa
+1  A: 

Besides the items you already identified, I would want

  • a printer
  • a written, agreed-upon specification of what I was supposed to do (unless they were paying me by the hour for open-ended support)
  • a single human point of contact at the client, responsible for all exchanges of information and decisions, hopefully all of which was quickly documented with an email audit trail.
joe snyder
+2  A: 

Documentation:

A good requirements specification will give all stakeholders the same picture of the software to be developed and can help resolve contractual issues later. Consult references on software requirements if needed (Software Requirements by Karl Wiegers is a good source). Be sure it is accurate and kept current--you will rely on this if the client feels the software is not complete and refuses to pay.

Software:

Get a rough idea of the work to be done (or if you have a complete spec, even better) and the development language. Of the requirements listed in the spec, determine which are supported by the language and which aren't. Decide if you will need to buy third-party libraries to complete the unsupported requirements (user interface controls, etc.). You will likely want to include the price for this in the contract. You don't want to get stuck paying the bill for these unless you think you can reuse them in other projects.

Also consider development software, database software, etc. For testing on different system configurations, virtualization software with operating systems licenses will be helpful.

People:

Having extra programmers can help, but adding a programmer does not double the output, especially if they are inexperienced and require your assistance. As your team grows, it becomes more important to have well-written requirements and a thought-out design to keep everyone on the same page. I wouldn't do this unless the job is big enough for it, since you will have to spend part of your time managing the other programmers.

Someone dedicated to writing documents (user manuals, help pages, some technical specs) can be useful. If a lot of documentation is required, this might be worth considering, since it will allow you to focus on what you do best. I have never had a technical writer work with me, but I would really like to try this and see if it pays off.

Michael Venable
+2  A: 

Some ideas:

  • A remote version control system (itself backed up regularly)!
  • A development environment
  • A UAT environment
  • An issue tracking system
  • The best development tools
  • Some virtuatlization software to run the various OS you need
  • Install CDs for the various OS you need
  • An Internet connection
  • An access to the coffee machine
Pascal Thivent