One man team
- Zero-Communication Overhead
- Know all aspects of codebase
- Usually have lower quality
- No peer pressure to stop doing dirty hack. Code become patchy and messy.
Agile Team
- Product Backlog (Tickets)
- Feature request
- Describe ‘what to build’, but not ‘how to build’
- What is Sprint?
- The collection of work (tickets) to be done in a certain timeframe.
- The timeframe can be 1 week, 2 weeks or even 1 month.
- Each member was assigned some tickets.
- Some tickets are unassigned, members who finish their work before the end can pick them.
- Only deploy at the end of sprint.
- If member cannot finish the task, they have to communicate before the end of sprint
- Sprint planning
- Before the end of sprint, team need to pick important tasks for the next sprint
- Use “Story point” to measure complexity, not time
- Because different engineer need different amount of time to finish it.
- Stand-up meetings (SCRUM Meetings)
- 10-15 minute
- Answer 3 questions:
- What did you do yesterday?
- What are you going to work on today?
- Is anything preventing you from getting what you need to done?
- Another meeting may be scheduled if follow up is needed.
- Task Boards
- Each one have at most one task at the same time.
- Keep track tasks in different stagings, such as
- To do
- In progress
- Finished
- Having a real board can help in stand up meeting.
- Headphones mean: Don’t bother me
- Best Practices
- “The stuff that is generally accepted as a good idea in the long run, even if it is a bit of a pain to implement in the short run.”
- Test Driven Development
- More people work in the same project -> # of code increase fast -> software complexity grow fast -> engineer don’t know the big picture in detail -> new code easy to break other’s work
- Use test to verify the code is working
- Continuous Integration
- Run test automatically before integration.
- Continuous Deployment
- Automatically deploy to production once code is accepted
- Pair Programming
- One person code, another give alternative and suggestion.
- Switch position from time to time.
- As a junior developer, it is good to see how other code, to learn thing you don’t know.
- Code Review
- To identify issues hasn’t thought about by the person who write the code.
- Person who review should not involved in writing the code.
- Code Style Guides
Some questions to ask by developers during interview
- Do you use test driven development? If so, dive in and find out more specifics of how they write tests.
- Do you have continuous integration or deployment setup?
- How do you feel about pair programming?
- Do you follow a certain coding style guide?
- How do you conduct code reviews?
Review
The Story point concept assume the difficulty of a task is the same for all engineers. It ignores the fact that knowledge need to be transfer if a new engineer take over the task.
Reference: Get off Your Horse and Stop Coding like a Cowboy.