I'm a programmer at a small company who's used to receiving projects by someone saying in a meeting: "make an e-commerce website," and then I'll just take it upon myself to do it. The only requirements I receive are the ones I ask for.
We're expanding, and I've been tasked with leading the development/management of a large web application. We will be utilizing a new in-house team of several programmers, as well as an outsourcing company.
In order to allow a new programmer to develop a component for this application, what should I provide to them?
What I'm really struggling with right now are determining the types of resources to provide, the level of separation that should exist between them, and how granular the details should be.
Let's say this project is an e-commerce website that will consist of a storefront, a shopping cart, and user registration, and I want a programmer to work on the user registration. I would greatly appreciate if someone can list out, very exactly, what should be provided, as, despite my best Googling, all I can find is high-level "fluff" about this. For example:
- Should I include diagrams (UML?), and if so, which ones, and what should they be conveying?
- Should I prepare written documentation (like a spec sheet?), and if so, what types of details should be included?
- Should I provide things like functional/non-functional requirements, business requirements, etc.?