- Gather functional and non-functional requirements. Analyze and create user stories and tasks. Taking into account possible risks, impediments, and assumptions.
- Choose the most efficient and suitable programming language, programming paradigm, technologies, tools, and database.
- Estimate effort based on the chosen technologies - projected duration and cost, team composition / capacity / velocity.
- Create a roadmap for milestones: Proof of Concept, Prototype, Minimum Viable Product, and Further Iterations.
- Full support during Software Development Life Cycle.
- Implementing Agile in an organization.
- Ensuring and enforcing Software Engineering Best Practices: Clean Code, Code Quality, Structure, Architecture, System Design, Naming Convention, Style Guide, Standardization, Documenting, Code Reviews, Unit/Integration/End-to-End/Load Testing, Security, Monitoring, Maintenance, Deployment, Infrastructure, Backups.