software-engineer-checklist
Hard skills
Software design knowledge
- Programming paradigms. Object-oriented. Functional. Reactive. Which from (OOP, FP) to pick for solving predefined type of business need
- SOLID
- GRASP
- DRY, KISS, YAGNI, etc.
- Design patterns: classification, definitions and examples
- Imagine situation you need to perform as an architect on a brand new project. What are your steps to create a good architecture
- Monolithic architecture
- SOA
- Microservice architecture
- Serverless
- MVC vs CBA (component-based architecture), pros & cons
Software development process
- VCS. Git. SVN
- Writing documentation: why, when, how to ensure quality, balance between implementing features and making docs
- Code review process. Code smells. Inappropriate intimacy, cyclomatic complexity, etc. Code refactoring: why, when, how. Technical debt
- What is good code. How to ensure code quality
- Continuous integration. Continuous delivery and continuous deployment. Tools
Software testing knowledge
- Testing pyramid: Unit tests, Integration tests, End-to-end tests.
- TDD, BDD. General-purpose language. DSL. Ubuquitous language
- A/B testing
Common web development knowledge
- REST vs SOAP
- Cross-domain communications. CORS, iframe, origin, headers. JSONP
- Web security: XSS, XSRF. CSP
- Authentication strategies: basic, session-based, token-based, mixed, etc. Token structure
- Web sockets
- Server-side rendering. Pros&cons, e.g. influence on SEO results
- DB: SQL vs NoSQL. Comparison, pros&cons, when to choose the particular one
- Web storage: cookies, sessionStorage, localStorage
- HTTP vs HTTPS. HTTP/2
Front-end web development knowledge
- How browser works. Render-blocking operations. Critical rendering path
- Page loading speed optimizations. First meaningful paint. Time to interaction. Latency decresion
- JS optimization. JS Profiling. JS memory leaks, detection and elimination
- Mobile-first vs desktop-first. Offline-first
- Web components. Shadow DOM
- AngularJS vs Angular vs React comparison
- HTML5. Semantic code
- CSS preprocessors, comparison
- JS Core. ES2015. JS Module types
- Build tools (gulp, grunt). Module bundlers (webpack)
- JS source code linting tools
- Imagine you need to setup project from scratch. How will you choose the tools and frameworks to build the product
Soft skills
Software development process
- Agile, XP, Lean, Waterfall
- Agile manifest, values and principles
- Scrum. The Scrum guide. Scrum events, roles, artifacts
- Scrum vs Kanban. When to pick the particular one
- Estimation techniques
- Imagine situation you’re in the middle of Scrum sprint and customers comes with super-highly-valuable feature to implement immediately. Your steps?
- SDLC
Common soft skills knowledge
- What is Senior SE in your understanding
- How to delegate task. IDEALS principle
- How to motivate inert person
- Mentoring, coaching
- How to control team work
- How to deal with conflict situations (5 types)
- Time management techniques
- Task prioritization techniques
- SMART goal setting
- Problem solving skills: 7 steps to eliminate any problem
- Interviewing candidates. How do you rate candidates. What skills do you rate as the most important for the compabny. Giving valuable and actionable feedback. Sandwich rule