This write-up is part 2 of the discussion on how to become a full-stack Java developer. If you haven’t read the first part. Here you go –
Time to talk about the database component…
The resources stated in this article contain affiliate links. That means if you find the resources helpful, worthy of spending your money on to educate yourself & you buy a subscription or a single or a few courses. I get a small cut without you paying anything extra.
Database
There are a plethora of databases supporting different data models such as Document Oriented Database, Graph Database, Relational Database, Wide Column Database, Key-Value Database, Time Series Database & so on. Every data model fits a certain use case that we would need to implement different features of our web application.
For starters, let’s keep things simple and stick to the two most widely used databases in the application development universe that are Mongo DB & MySQL. Mongo DB is a document-oriented NoSQL database & MySQL is a relational database.
To educate ourselves on full-stack Java development, we can develop an application picking any of these two databases. Ideally, we don’t pick a database based on the popularity we pick it based on the use case. But here we are learning the database to become a full-stack dev and our mission is to get a high paying job. So, we should learn the ones that are widely used in the industry.
Besides the knowledge of databases, there is another skill that is super important, when it comes to implementing the storage component of our application & that is data modelling.
Data modelling entails the process of designing the data model for the application. When we develop an application from the bare bones, we first design our data model and then move forward with writing the backend application code, wiring our Java classes with the database tables and so on.
Before I get down to discussing the right resources to learn relational and NoSQL databases. I would like to discuss the importance of having the knowledge of application architecture to be a top-notch full-stack Java application dev.
When designing a full-stack application we need to be thorough with the fundamentals of web application architecture. We should be aware of the nuances of picking the right technology for our project.
We need to be aware of things like what database would fit best for our use case? Do I pick Mongo DB – a NoSQL database or MySQL – a relational database? What is the fundamental difference between relational and NoSQL databases?
Do I put all my business logic on the backend module or do I move some of it to the client, making it a thick client to cut down the bandwidth consumption eventually improving the end-user experience?
These kinds of questions are frequently asked in the full stack dev interviews & having knowledge of all these concepts will give you an edge over other developers.
Now, let’s talk about how you can master the fundamentals of application architecture?
Web Application Architecture
To have a thorough comprehensive insight into web architecture I recommend checking out my Web Application & Software Architecture 101 course on Educative.io.
This course is a 101 on Web Application & Software Architecture. It walks you step by step through different components & concepts involved when designing the architecture of a web application. It educates the learner on various architectural styles such as the client-server, peer to peer decentralized architecture, microservices, the fundamentals of data flow in a web application, different layers involved, concepts like scalability, high availability, micro-frontends, load balancing & much more.
Designing software is like fitting the Lego blocks together. With this course, you’ll develop an insight into how to fit them together and build cool stuff. It will help you nail your software engineering interviews, especially the full stack developer ones.
In this course, you’ll also learn the techniques of picking the right architecture and the technology stack to implement a certain use case. I walk you through different use cases which will help you gain an insight into what technology & architecture fits best for a certain use case when writing a web application. You’ll come to understand the technology trade-offs involved.
There are no pre-requisites to this course. No problem even if you have a zilch idea of web architecture. By the end of the course, you’ll have a comprehensive insight into it and you’ll be a more confident developer.
Web Application & Software Architecture 101 is one of the best selling courses on the platform & I also continually update the course from time to time.
You can check out the course here.
Alright, now let’s have a look at some of the good resources to learn databases and data modelling.
Best Resources To Learn Databases & Data Modelling
Educative has several courses on databases, that I’ve listed below –
This course educates you on the basics of SQL such as how to create a database, how to insert, query, and update data. You’ll learn fundamental concepts that developers and data scientists use everyday such as multi-table operations, nested queries, and how to set up views.
Throughout, you’ll get to execute SQL queries in your browser and see results in real-time – you won’t need to worry about the set-up. At the end of this course, you’ll also get some hands-on practice with common SQL interview questions, so when the time comes, you’ll be ready and confident to answer any question that comes your way.
Fundamentals Of Database Design
This course is a beginner level course on database design. In this course, you’ll learn about the fundamental concepts of databases, why and when they’re used, what relational databases are, and entity-relationship diagrams. You will also be exposed to techniques like normalization that help to increase the efficiency of databases & so on;
A Definitive Guide To Mongo DB
Some of the database courses on Udemy, that I recommend –
The Complete Database Design & Modelling Beginners Tutorial
The Ultimate MySQL Bootcamp Go From SQL Beginner To Expert
So, till here, we have covered all the three components of a full-stack web application the front end, backend and the database with the right resources to learn them.
Overwhelmed?
Yeah, I know the syllabus is vast. And full stack development demands dedication & patience. But with enough grit, you can easily become a full-stack dev. You don’t have to invest the entire day learning it, even a couple of hours a day is fine.
And mark my words acquiring this skill it has its rewards. Besides getting a nice job you can always work on your idea on the side. You wouldn’t need anyone’s help to write an application end to end. Just write the app, deploy it on the cloud and test the waters.
I’ve written numerous applications from scratch single-handedly. And I couldn’t be more happy knowing that I am capable of designing and implementing an app end to end.
If you are intrigued who I am?
I am Shivang, worked as a full-stack dev in the industry for the past 10 years. My last job was at Hewlett Packard Enterprise as a full stack Java developer in their Technical solutions R&D team. So, I believe I am qualified to advise you on full-stack development.
In case you are interested, you can read more about me here.
Also, this detailed write-up is not to scare you off but to provide you with a holistic view of the process of becoming a full-stack Java developer, step by step.
Now, let’s have an insight into what companies are looking for, for this particular job profile –
Full Stack Java Developer Industry Technical Requirements
Individual Contributor
The most important & common requirement that you’ll find in jobs posted for full-stack Java dev is being an individual contributor. What does this mean?
Individual contributor means you solely develop a certain feature in a large scale application without the assistance of any other programmer on the team. In the interview, you would be questioned on the feature you developed, the design decisions you made when writing the feature. What technology you picked to write the feature and why? And other relevant questions on whatever you say you’ve developed.
You cannot fake answers for this. The interviewer will in a jiffy figure out if you have or haven’t written an entire application or a feature from the scratch or any other module that you are saying you’ve implemented.
To nail this you need to write an application end to end before you even apply for a full stack java dev job. And the application doesn’t have to be as big as Facebook, Instagram or TikTok in terms of features and complexity. That would be insane.
Much simpler versions of these applications will do. You can also implement only certain features of these large scale distributed systems, for instance, implementing the chat feature, or image upload feature as opposed to writing the entire application.
Java Stack
Besides this you are naturally expected to know Java, Java EE & Spring.
You need to be aware of web services that entail concepts like JSON, REST implementations, microservices & so on. The difficulty of the questions varies with the years of experience you have in the industry.
Besides this, you must know a distributed Version Control System Like GitHub.
Knowledge of a front end framework & a database as I’ve discussed earlier.
Knowledge of Agile. If you are a beginner and haven’t worked on Agile. You can skip this, once you work on a project you will easily learn it. It’s a project management methodology as opposed to being a technology;
You can further have a look at full-stack Java dev jobs here on StackOverflow
Let’s talk about avg. salary in the industry for the full stack Java dev profile.
Salary
We know that salary for a job profile varies based on the work location. According to Glassdoor, the salary of a full-stack Java developer in the US ranges from US $60K – 120K. The average pay is approx. 77K USD
PayScale shows a similar avg. salary of 75K USD
And as your work experience increases your salary rises in accordance.
Well, this is pretty much it. If you like the write-up, share it with your friends. You can subscribe to my email newsletter to stay notified of the new content published on the blog.
More On The Blog
Best Handpicked Resources To Learn Software Architecture & System Design
YouTube Architecture – How Does It Serve High-Quality Videos With Low Latency
YouTube Database – How Does It Store So Many Videos Without Running Out Of Storage Space?
An Insight Into How Uber Scaled From A Monolith To A Microservice Architecture
Instagram Architecture – How Does It Store & Search Billions of Images
Shivang
Related posts
Zero to Software Architect Learning Track - Starting from Zero to Designing Web-Scale Distributed Applications Like a Pro. Check it out.
Master system design for your interviews. Check out this blog post written by me.
Zero to Software Architect Learning Track - Starting from Zero to Designing Web-Scale Distributed Applications Like a Pro. Check it out.
Recent Posts
- IP layers and the TCP/IP model – A deep dive
- Application architecture explained in-depth with a real-world example
- System Design #3: Leveraging the Backends for frontends pattern to avert API gateway from becoming a system bottleneck
- System Design #2: Understanding API gateway and the need for it
- System Design #1: CDN and Load balancers (Understanding the request flow)
Follow Me On Social Media