What is a Full Stack Developer?
A full stack developer is someone who is familiar and comfortable with all layers in computer software development. These developers have the functional knowledge and ability to take a concept and turn it into a finished product. They understand how everything works from top to bottom and can anticipate problems accordingly.
What does a Full Stack Developer do?
Web development specializations exist for a reason, and the idea of a full stack developer isn't about being an expert in every possible technology there is. It's more about someone with a familiarity and an understanding in each layer, and a genuine interest in all software technology. It's also about being able to communicate intelligently with team members and to be a helpful asset if the situation requires it. Personal interaction and communication skills are necessary in order to manage and work with front-end developers and back-end developers.
Full stack developers understand how every part of the web development process takes place and can guide on strategy and best practices. These developers will have an increasingly important role in the web development of the future, and are able to look at the 'big picture'. They are knowledgeable with the server side as well as the client side’s user experience.
A full stack developer has knowledge in all stages of software development, and would be proficient, if not fluent, in:
- Server, Network, and Hosting Environments - this involves understanding what can break and why; appropriate use of the file system, cloud storage, and network resources; knowing application scale given the hardware constraints; and working side by side with DevOps
- Data Modeling - this involves knowing how to create a reasonably normalized relational model, complete with foreign keys, indexes, views, lookup tables, etc; being familiar with the concept of non-relational data stores and understanding where they shine over relational data stores
- Business Logic - having solid object oriented skills
- API layer / Action Layer / MVC - knowing how the outside world operates against the business logic and data model; using frameworks; being able to write clear, consistent, and simple to use interfaces
- User Experience - can step back and look at a process that needs seven clicks and four steps, and get it down to one click; write useful error messages
- Customer and Business Needs - having a grasp of what is going on when the customer uses the software; having a grasp of the business
To reach this level of qualification, it clearly takes years of work experience in different languages, roles, and industries. Because of this, full stack developers are few and far between, making them very employable and in-demand.
What is the workplace of a Full Stack Developer like?
A full stack developer may work full or part-time in an office setting, or may choose to conduct business at home. Travel may be involved if one chooses to freelance. Some full stack developers freelance their skills to various organizations, while others choose to outsource their skills to organizations by using their expertise to act as consultants or independent contractors.
Which languages do full-stack developers use?
Full-stack developers must use a wide range of programming languages to accomplish their goals; these can be grouped into front-end and back-end languages.
Back-end languages are typically used to store and manipulate data, manage user permissions, and do all of the complicated calculations required by the program. There are a wide variety of languages that can be classified as back-end, including: Ruby, Python, PHP, Java, Go, and Swift.
In addition to being comfortable with both front-end and back-end languages, a full-stack developer should also have an understanding of the technology that runs alongside their programs. This includes a rough understanding of the SQL database language and the HTTP communication protocol.
The requirements of a full-stack developer can seem daunting at first, but it is important to remember that it is a "jack of all trades, master of none" profession. A full-stack developer will find themselves using multiple languages on a daily basis, but they will also typically find themselves working alongside dedicated front-end or back-end developers who have a much deeper understanding of their chosen technologies.
How do full-stack developers stay up to date?
The technology industry moves at a fast pace, and the broad range of technologies used by full-stack developers means that they will need ongoing training.
The first step in staying up to date is understanding which new technologies and frameworks are gaining popularity. The best way to do so is to follow online technology blogs and communities, such as Hacker News or Stack Overflow. Github - the most popular host of open source code - publishes a list of up-and-coming projects.
Once you know what to focus on, the next step is to find good resources to learn from. There is a wealth of online information for languages and libraries, and most of these will have resources and getting started guides on their websites. Youtube is increasingly a good source of tutorials, and most technology conferences upload their talks and occasionally even stream them live on the site.
The most reliable source of training will come from online MOOCs - Massive Open Online Courses. These courses emulate a traditional university course, and in some cases can even lead to certification upon completion. Examples of companies that produce high-quality technical MOOCs include Treehouse and General Assembly.
Full Stack Developers are also known as:
Full Stack Software Engineer Full Stack Engineer Full Stack Web Developer Full Stack Coder