Frontend , Backend , Full-stack , etc. Choose the one which suits you best 😉
When you start working as a software developer, there are plenty area you can get into : Frontend, Backend, Full-stack, DevOps, Mobile Apps, Game, Security, Desktop, Embedded, etc). Most of the time, they can be grouped in 4 majors categories. Frontend, Backend, FullStack, DevOps Engineers.
If you make a quick search with any of theses key words, you will have lots of articles describing each one and associated roles. In this article, i'm not going to go deeper into each of them, i will just give you necessary keys to choose the one that suits you best according to your preferences.
First of all, being a software developer is all about building user experiences that suit and convert end users. As a developer, building all of this requires to master (at least a certain level) of tools and technologies needed to do it. Thus, it sometimes requires within the same team different's profile of developers. Here i will describe and you will have to choose where you could be the most comfortable.
- Frontend (Client-Side)
A Front-end developer is the one specialized in building user interfaces (UI). He is responsible to deliver a great visual experience to the end user who access the app trough a browser or any client side device like mobile app, Desktop app, etc. Since the result of his work is directly presented to the end user, he must have mastered certain key concepts such as animations, man-machine interactions, responsive design, design systems etc.
Most of the time, everything visual is done by Front-end. The skills required to be Front-end basically include :
- For Web development: HTML, CSS (Sass, Less), JavaScript. With the current evolutions of the web and the development of Internet, it will be great to add to the tech stack UI frameworks such as Tailwind CSS, Bootstrap, Bulma, Semantic UI, Foundation, Materialize, Chakra UI etc. (I cannot name them all 😉), javascript frameworks like React, Vue.js, Ember.js, Meteor.js, jQuery, etc.
- For Mobile Apps : Mobile apps can be built using two approach. Native platform specific SDK (Android sdk for android apps, IOS sdk for ios apps) or cross-platform framework such as React Native, Cordova, Ionic, NativeScript, Appcelerator, Flutter, Xamarin, RubyMotion, etc. Most of theses framework uses javascript
- For Desktop apps : A desktop developer is a programmer who writes code for software applications that (1) run natively on operating systems like macOS, Windows, and Linux. Desktop apps can be built with programming language such as C/C++, JavaFX, Python, C#, Ruby, Swift, Objective-C.
Since we are more productive with the tools we are most comfortable with, if you think you are more proficient and more comfortable producing rich user interfaces through animation and visuals, the front is for you. For more details, take a look here to see an example of front-end developer roadmap https://roadmap.sh/frontend.
2. Backend (Server-Side)
The backend developer specializes in design, implementation, functional logic and performance and scalability of a piece of software or system running on machines that are remote from the end-user. Backend development refers to server-side development that centers on scripting, databases, and web application architecture. In simple terms, the backend developer handles behind-the-scenes activities that take place while performing a function on the website or application. It’s the backend developer’s responsibility to write code that communicates with databases or APIs, creating libraries, working on data architecture and business processes, and so on. Back-end systems can grow to be very complex, but their complexity is often not visible to the users. The whole complexity is absorbed on the back to deliver the best experience to the user on the front. Backend developer should have strong algorithm skills and will deal with programming languages such as Java, C, C++, ruby, Perl, Python, Scala, Go, Javascript, etc. He should be also been able to understand concepts such as microservices, APIs, distributed systems, storage, databases, Continuous delivering, Architectural Patterns, Scalability ( scaling Vertical vs Horizontal) caching, logging, metrics measurement, etc. For more details, take a look here to see an example of back-end developer roadmap https://roadmap.sh/backend.
3. Full-stack
A Full Stack Developer is someone who works with the Back End — or server side — of the application as well as the Front End, or client side. Full Stack Developers have to have some skills in a wide variety of coding niches, from databases to graphic design and UI/UX management in order to do their job well. They are something of a swing, ready to assist wherever needed in the process.
Some of the responsibilities of a Full Stack Developer include:
- Helping with the design and development of software
- Testing and debugging software to keep it optimized
- Writing clean code for the front and back end of the software
- Designing user interactions on the web application itself
- Creating servers and databases for the back end of the software
- Ensuring cross-platform compatibility and optimization
- Testing and maintaining the responsive design of applications
- Working with graphic designers to design new features
- Developing APIs and RESTful services
- Keeping up with technological advances to optimize their software
- Communicating effectiveness of emerging technologies to decision makers
- Considering security, maintenance, scalability, and more when developing
4. DevOps
A DevOps engineer is an IT generalist who should have a wide-ranging knowledge of both development and operations, including coding, infrastructure management, system administration, and DevOps toolchains. DevOps engineers should also possess interpersonal skills since they work across company silos to create a more collaborative environment. Some core concepts that constitute the DevOps process can be:
- Agile planning
- Continuous development
- Continuous automated testing
- Continuous integration and continuous delivery (CI/CD)
- Continuous deployment
- Continuous monitoring
- Infrastructure as a code
- Containerization
- Microservices
- Cloud infrastructure
- System architecture and provisioning
A DevOps engineer must have programming experience to cover scripting and coding. Scripting skills usually entail the knowledge of Bash or PowerShell scripts, while coding skills may include Java, C#, C++, Python, PHP, Ruby, etc., or at least some of these languages, Knowledge of database systems, strong communication and collaboration skills, experience with automation tools. Take a look here too see more https://roadmap.sh/devops
Thanks for reading.
Follow me on socials media to stay up to date with latest posts.