Top Down, Bottoms Up

The whole is greater than the sum of its parts. - Aristotle

In our efforts to get up and running, we have mostly concentrated on graphic design, user interface languages (HTML, CSS), and workflow fundamentals. In Part 4: Programming, we will further explore the world of software engineering using JavaScript, the programming language of the World Wide Web.

Amongst the topics we will cover are: programming languages and standards, computer science history, pseudocode, JavaScript fundamentals, JavaScript libraries, asynchronous JavaScript (AJAX), “single-page applications”, package managers, and JavaScript runtime environments (browsers and Node.js). In doing so, we venture beyond the front-end, into full-stack engineering. Along the way, we also address toy problems, which are job interview questions designed to test your ability to think algorithmically.

Once you have passing familiarity with the topics covered in this chapter, you should feel confident about beginning to apply for jobs. You will be able to (1) describe internet software systems (top-down), and (2) describe how you would implement certain parts of those systems (bottom-up).

Note the repetition of the word “systems” in those described abilities. A primary consideration in structuring the content of this book is to enable you as a systems thinker. In the context of software development, a systems thinker is someone who consciously considers the overall software system before developing an individual part of it.

It is important to realize that you do not need to know how to describe of the minutiae of any particular software system. The day-to-day labor of a software engineer is actually to discover and implement minutiae. But by demonstrating a conscious consideration of the basic pieces of a typical frontend software system, you demonstrate an ability to build individual parts of it in such a way that integrates with and enhances the whole system. This is the sort of programmer that (good) employers want to hire.


  1. Are you going to software meetups and connecting with the community? This is the #1 thing you can do to help yourself get a job!

  1. As the CSS Book was our companion for “Part 3: Building Blocks”, so will Eloquent JavaScript be our companion for Part 4.

Review the Table of Contents of Eloquent JavaScript, 3rd edition (see the Bookshelf appendix for details).