Whenever you start a new role, it’s easy to get overwhelmed. You’re afraid to prove yourself and ramp up as quickly as possible. You are bombarded with an influx of new knowledge.
Here are some questions I think software engineers should consider asking when joining a new development team for a successful integration:
- Who are the target customers for the product / software that the team is developing? From the customer’s point of view, what is the purpose and the long-term vision?
- What type of data storage system is used? What is the source of truth for the data that has been stored? Who are the downstream consumers of data?
- What types of services (REST / RPC) does the team have? What is the mechanism for routing requests and the underlying infrastructure? What is the error handling protocol for each service?
- What is the process for managing code packages? What construction tool is used? What tool is used to manage dependencies and version control? What is the process for setting up the IDE and the development environment?
- What does the software development lifecycle look like? What is the deployment procedure? What does the deployment cycle look like? How does the restore mechanism work?
- What are the team’s standards and best practices for code quality? What is the code review mechanism? Who is responsible for merging the pull request? How many reviewers are needed to change?
- What is the test procedure? Are there automated test suites? Are the services subject to load / performance tests?
- What is the team’s strategy for dealing with the operational load? Is there a runbook and metrics dashboard for calls? What steps are taken to resolve production issues?
- What do typical office meetings look like? What agile mechanism is followed? What methods are used to estimate tasks?
- What methods are used to manage and review documents? Ask for design and process documentation that pertains to the team.