On Quora I've seen this question asked quite frequently: What is the difference between a junior developer and a senior developer? It is more than just years of experience. One of my co-workers was looking at a potential candidate for hire. He said that this person has 5 years of experience but he is still a junior. He repeated the beginner year of experience five times. This begs the question; what skills should a junior developer have? Whether you have completed a computer science bachelors degree, gone through a boot camp, or are self taught, these skills are essential for the basics:
Junior Developer
- Operating system basics
- Networking basics
- Digital device basics
- Programming basics
- Cloud computing basics
- Data structures and algorithms
- Object oriented programming
- Mobile device programming
- Database basics
- Infrastructure security
- Cybersecurity
- AI driven coding
- Debugging
- Database applications
Mid-Level Developer
A mid-level developer has at least two years of experience in either the front end or the back end. A key indicator that a developer has reached this level is that they no longer ask the team lead for help. In fact they may be helping other junior developers.
Backend Skills
- Language: C# or Java
- Backend Framework: .NET Core or Spring Boot
- ORM: Entity Framework or Hibernate
- Database Language: SQL
- Backend Unit Testing: NUnit or JUnit
- Backend Mocking: MOQ or Mockito
- API Testing: Postman or RestAssured
- Cloud Technologies: AWS or Azure
- File Formats: JSON, YAML, XML
- Technologies: GIT, JIRA, Azure DevOps
- Principles: SCRUM, Kanban, REST, Microservices, SOA, Estimation
- IDE: Visual Studio, Rider or IntelliJ IDEA
Frontend Skills
- Language: JavaScript and TypeScript
- Frameworks: VueJS, React, Angular, Blazor, or ASP.NET MVC
- HTML
- CSS
- CSS Frameworks: Less, SASS, Bootstrap, Tailwind
- Front End Unit Testing: Jasmine or Jest
- File Formats: JSON, YAML, XML
- Technologies: GIT, NPM, NODE, JIRA, Azure DevOps
- Principles: SCRUM, Kanban, REST, Microservices, SOA, Estimation
- IDE: VSCode
Senior Developer
A senior developer is a full stack developer. They normally have at least 5 years of experience. They have mastered the front end, the back end, databases, unit testing, integration testing, GUI testing, and cloud technologies. They have also learned and are using design patterns. They adhere to the solid design principles and create clean code. They are able to build deployment pipelines. Here are the additional skills for a senior developer.
- Design Patterns
- SOLID Design Principles
- Test Driven Development
- Multithreaded Development
- Memory and Performance Optimization
- Load Testing
- Continuous Integration
- SAFE
- DevOps
- GUI Testing: Playwright or Cypress
- Pipelines: Azure, AWS, Google Cloud and GitHub Actions
- N-Tier Architecture
- Onion Architecture
- Clean Architecture
- Hexagonal Architecture
- Serverless Architecture
- CQRS
- Microservices Architecture
Architect
There used to be only one meaning of the word Architect, a Software Architect. However now there are four meanings. The Software Architect is at the application level, establishing the architecture of the application, the initial design patterns, creating feature designs, establishing coding standards, establishing testing standards, creating the onboarding process, creating the development process, GIT branching strategy, performance standards, and best practices. If there is no SCRUM master, the Software Architect also becomes the SCRUM master. If there is no DevOps Engineer, the Software Architect sets up all of the build and deployment pipelines. The Cloud Architect, is familiar with all the services for AWS, Azure, and Google Cloud Platform. They know how everything is configured and how to pass data between the different services. They script it all with Terraform. The Infrastructure Architect plans and implements physical data centers. The Enterprise Architect plans how systems will interact at the enterprise level typically using TOGAF.
So how do you learn all of these skills? Primarily I use a combination of YouTube, Udemy, and Cheatography. You can also ask ChatGPT to explain each concept to you.
This is a great article by my friend Jonathan Danylko about the difference between knowledge and experience:
No comments:
Post a Comment