Guide to Becoming a Full Stack Developer – Part 2
Previously, I have written about what is a full stack developer, and how to become a full stack developer. In this post, I will outline what a full stack looks like, as well as some of the technologies used to implement it.
There are a number of different stacks out there, and distilling any stack into a compact list is somewhat arbitrary. So how did I come up with this list? Very simply, it is based on my years of experience as a Full Stack Java Developer.
HTML and CSS are the basis for User Interfaces (UIs) in web applications. As a full stack developer, you need to know the basics of HTML and how it is styled with CSS. To take it a step further, learn about CSS Preprocessors. Preprocessors are good to know as a developer, since they are likely to be involved in a web application.
The front end and back end of applications need to communicate. In modern web applications, this is usually done via REST. REST is not really a technology, but a pattern or style for communication.
You need to know what REST is, and be familiar with its operations. You also need to know how to use it to make calls from the front end, and to receive and respond to them from the back end.
The back end of an application typically contains application specific logic. If the purpose of your application is to calculate commissions, the back end is where that calculation would be done.
Java has been a big player in web applications for a while, and isn’t likely to go away anytime soon. However, Java is not the only language that runs on a Java Virtual Machine (JVM). Other languages that may be worth learning include Groovy, Scala, and Kotlin. Even in organizations where Java is the language of choice, it is not uncommon to see other languages used for test code.
Regardless of the language used for back end code, you need to know how to respond to HTTP requests (i.e. the REST calls mentioned above) and how to access data. This functionality is almost always implemented using frameworks. The essential framework for Java web applications is Spring.
Spring encompasses many different projects. Spring Framework (“core” Spring), Spring Boot, and Spring MVC are commonly used. Spring Data and Spring Security are also good to know.
Relational databases using SQL are the traditional standard for persisting data in web applications. Knowing a particular SQL database is not so important as learning SQL itself. Once you know SQL, you’ll be comfortable using most any relational database.
Relational databases are not the only option. NoSQL databases have become very popular in recent years. Some common ones are Cassandra, Mongo, and Redis. It is good to know what these different databases can do, and what their strengths and weaknesses are.
In addition to writing code, developers needs to know how to build and run applications, among other things. Here is a list of some of the tools developers need to know to be effective:
- Version Control – Version Control Systems are tools for managing changes to code over time. Many tools are available, but Git is by far the most popular. If you are a developer and haven’t used Git, you will. So learn it now.
- Build Tools – Building an application can be very complicated and include many steps (compiling, testing, packaging, etc). You need a way to manage this. Maven has been a mainstay for years, and is still very useful and popular. Gradle is more recent, but is also a mature tool and a popular choice.
- Automated Testing – JUnit is the foundation for the majority of testing for Java based applications. Knowing how to write good tests for your code is critical to building quality applications.
- IDE – IDE stands for Integrated Development Environment, but nobody cares that you know acronyms. These are the tools that you use to write your code, and they provide all sorts of other useful functions such as executing the build process and running the application locally. Thus, you need to know how to use IDEs. Eclipse and IntelliJ IDEA are the most common.
- Linux/Unix terminal – whether it is configuring and installing software locally, or accessing application servers to check logs, developers need to be comfortable using a terminal.
- Docker – containers have soared in popularity recently as a way to deploy and run applications, with Docker leading the charge. Knowing how to use containers is quickly becoming an important skill for developers.
This article contains only the minimum of what full stack developers need to know, and yet it can seem overwhelming. How do you know if you know enough? Remember, you don’t need to be an expert at everything, but you do need to know how all of the layers fit together to form the full stack of an application.
For example, consider this question: how would you build a web application that takes text input from a user, stores it in a database, and then displays all saved inputs (i.e. input from previous users) from the database? If you can put all the pieces together to build and run this application, you are well on your way to being a full stack web developer.
What is a full stack developer? See this post for an answer.
For advice on how to become a full stack developer, see this post.