Rather than look at the Java language first and the greater Java ecosystem like Spring and other open source libraries, let's look at the kinds of problems a senior developer has to deal with.   We'll first consider a simple bookstore application and keep expanding with increasing complexity.

In most business applications you have to deal with at least 3 tiers.  The front end, which is usually HTML and CSS,  the middle tier, usually Java or similar, and the database tier such as MySQL, Oracle, Postgres, and SQL Server.  Most mid and large companies have this stack.  We'll be using Postgres.  

It was far simpler about 10-15 years ago but today a business application could have as many as 7 or 9 layers including horizontal and vertical integrations.    

In our bookstore application and in most business applications, senior developers spend a lot of time understanding data and therefore need to have a good grasp on relational database concepts.   There are plenty of database courses out there so if you aren't familiar with how to work with databases, do take some time and learn the basics.  

Let's pretend a friend of yours, Maya, has a physical bookstore which is growing and she has asked you to design a complete system so she can manage the bookstore, create an online presence and provide her customers with the ability to purchase the books and have them delivered or come to her store to be picked up.  

In this simple request, there is a lot to unpack.  As a Senior Developer, it is vital to have to have meaningful conversations until you've flushed out all the data that you may need to hold in this system.  

You also need to pick aspects of the request from Maya and focus on all the nuances of what it means to her to have an online presence.  Here are some questions I'd ask:

  • Do you anticipate out of state purchases since there will be tax implications
  • Would you like to run promotions online or a rewards program that add to the customer experience.
  • Do you want reviews of books by customers or would you be curating recommendations
  • Are you concerned that the community aspect of the bookstore may diminish because you won't get the customers coming into your store which is key for your popularity?   For example, Starbucks lost a lot it's store culture when it introduced its app https://www.fastcompany.com/90732166/what-happened-to-starbucks-how-a-progressive-company-lost-its-way

The last point is very nuanced and shows the level of partnership that a senior developer brings in making the requestor aware of possible pitfalls of going down a particular path.   Maya indicates that she is concerned.   What I'd suggest is that we track the store and online purchases and also use the data to create campaigns on the ecommerce site to lure people into the store.   For example, publish out reading, author meet and greets, in-store discounts and possibly partnering with local restaurants to cater in-store events.   Giving her these types of suggestions differentiates the senior developer from the developers who only work from "requirements."   It is often the case that business owners don't understand either the power or the pitfalls of an online presence.

We can already see that we will need at least several entities in our database, Customer, Order, Author, Address, Book, and Tax.  We may need a Promotion and a Review entity as well.    We also know that Maya is concerned about the culture in her bookshop so it's important to know which customers are buying both online and physical so she can do outreach and draw more people in.  We will also need an Event table that may possibly tie into a Promotion but let's walk before we run.

At this stage, we can either start creating the database or continue the conversations with Maya to see if there may be additional entities needed and also determine which aspect of the system is a priority.    I'd ask Maya if it more of  an issue in managing the store or it is more important to create an online presence to help sales.    While online commerce is fairly easy to model, managing a bookstore may be difficult until we can further talk to Maya.

I'd ask Maya the following question:

  • What are the most difficult aspects of managing the bookstore?  

Maya informs you that managing inventory is a very manual task where she has to go to the shelves, count the remaining copies of popular books and then order books in a separate publisher or publisher's system.    A Senior developer here would ask if she's like to integrate the sales from either the ecommerce or physical store automatically into the publisher system so that she can set up automatic ordering.   These connections are commonly referred to as API integrations which is a topic we'll spend a lot of time on in later sections.  

Maya indicates that she can manage manually for now so she'd like to focus mostly on the ecommerce part with particular attention to promotions, events, and customer outreach.  

Let's begin by creating our database and then we'll populate it with data and take it for a test drive.