Mark As Completed Discussion

Build Something For Yourself

It is crucial to actually do the work of building something-- it's in the doing that you make numerous realizations around the "why" of software design. It's especially a good learning experience when it's your own project because of the emotional investment.

To put it bluntly, you need to feel the pain of your site being down to understand why there needs to be a load balancer. You need to lose part of your data during an outage to get the importance of redundancy. You have to spend hours digging through multiple services and components in an effort at debugging to fully grasp why it's important to have good logging.

The only requirement is to work on projects that are comprised of multiple moving pieces. A good start is any CRUD web application that provide some kind of tool or service to an end user. Some ideas and tips to maximize systems learning:

  • Try to use a data store like a modern relational databse
  • Make sure to use a modern web framework with an ORM (and without)
  • Try using a frontend framework with a REST API
  • Use a job queue does some kind of background processing
  • Add a cache layer that scales reading of data
  • Incorporate a load balancer to your application
  • Build a microservice that your application depends on (e.g. thumbnail service for photos)
Build Something For Yourself