Fundamentals
01The fundamentals are core areas, skills, languages, or tools that you should know. You do not need to master them all. Some are recommended, while others are useful but have a lower priority. You also do not need to know every tool, language, or skill in a section. For example, learn one or two programming languages well. This foundation makes it easier to learn the others later.
Programming languages
- Recommended
- JavaScript
- Python
- Java
- PHP
- .NET
- Great to know
- Go
- Ruby
- Bash
Programming tools
- Git
Experience with
- Software Development Lifecycle (SDLC)
- Test-Driven Development (TDD)
Strong understanding of
- Recommended
- OWASP Top 10 vulnerabilities and methodologies
- CWE Top 25
- The Twelve-Factor App
- Great to know
- MITRE ATT&CK
- HackerOne Top 10 vulnerabilities
Security testing
- Writing test cases
- Manual testing
- Automated testing
- Experience with testing tools
- Dynamic and static testing
- Source code reviews
Networking
- Networking basics as they relate to development
- DNS
- HTTP(S)
- Ports
Linux and server administration
- Setting up web application servers
- Creating development, staging, and production environments
Ability to
- Create threat models
- Perform security risk assessments
- Perform vulnerability assessments
Communication skills
- Writing reports
- Effective presentations
- Explaining technical concepts to non-technical people
- Documentation