Web Development in Real Life

A practical guide to writing, deploying and maintaining enterprise-grade web applications

So you have an idea for a web application.

Unfortunately you don't know the first thing about web development and aren't sure how to get started.

Or you've already completed a few tutorials but don't know where to take it from there.

Or you've tried to write the application but you're still confused: you've been googling your way through seemingly innocuous problems, and you feel that the result is shaky at best.

Well you're definitely not alone, and there's good news for you. Read on.

What seems to be the problem?

With so many online resources showing off how you can write an application that displays "Hello <your name>" in a few minutes or how you can use this or that brand new framework to create a blogging application from scratch in a couple of hours, it's easy to get lured into thinking that you're just a week away from turning your killer concept into a speckless and well-oiled web application.

As you'll come or have come to realise, it's not quite that easy, and the typical way forward is to learn more about the language by trying to make sense of its documentation and patching together bits of code found on the Internet, and to make progress by trial and error. This approach, which narrowly interprets web development as being just code, may or may not produce the intended result and almost inevitably causes frustration at some point. Here are a few reasons why:

  • It's natural to start coding straight away when creating a small or simple web application without giving much thought to software design, but this is the kind of practice that doesn't scale well: a common occurrence when working on bigger projects is that poor choices made early in the process lead to entangled situations later down the line, which then require potentially large parts of the application to be rethought and rewritten.

  • Unless it's a mock-up (or a failure), a web application usually needs to work over the long run, which means it must be easy to iron out bugs, add new features, accommodate technical changes, redeploy and support. All of these need to be planned for well before writing the first line of code.

  • Web applications are also about the technologies that drive them, including formats, protocols and architectures. High-level web frameworks make developers' lives easier by abstracting away a lot of the nitty-gritty, but when debugging on a day-to-day basis or when a feature happens to be unavailable in the framework, knowing what's supposed to be going on behind the scenes makes the difference between hours of clueless head-scratching and having a fairly good idea about how to solve the problem.

Attempting to address these issues on your own can mean reading books on software engineering and studying standards for months on end and still not being sure about how all this newfound knowledge applies to your web development practice.

This is where Web Development in Real Life comes in.

What you'll find in this book

Drawing from industry experience and blending web-focused software development theory and practice, this comprehensive book will teach you everything you need to know to become a proficient web developer and will guide you all the way from your initial idea to a professionally written web application that's straightforward to deploy and painless to operate and maintain.

Fundamentals

To give you a solid foundation to build on, all the fundamental concepts and principles you'll need are presented assuming no prior knowledge and are explained with experiments that you can (and should) try out for yourself with freely available tools.

Development workflow

The stucture of the book is closely modelled on professional web development processes, and can serve a blueprint for your own projects.

Alternatives and tips to adapt the workflow to your preferences, project constraints and technical choices are also discussed.

Use cases

Some commonplace features of web applications — e.g. image uploads, sign-up/-in/-out workflows, searches — are not as simple to design and implement properly as their pervasiveness would have you imagine.

These features are analysed in depth, from theory to implementation, as the book progresses and as the concepts they're based on are introduced.

Practice

The book is packed with exercises for you to work on to make sure that you're actively engaged in the learning process and in finding out how the concepts are implemented with your preferred tools and languages, and that you're not passively reading your way through.

This book does not target a particular language or framework. Code examples are written in PHP, Python and JavaScript, using popular web frameworks such as Laravel, Django and AngularJS, but guidance is included to work out how the programming concepts apply to other languages and frameworks.


Who this book is for

This book is for anyone who wants to develop high-quality web applications and who's willing to put in the effort to actively learn how to achieve this. There will be lots of information to process and plenty of dedication will be required from you to do your part (i.e. work on the exercises). Let's be clear: if you're a novice and you're looking for a silver bullet that will turn you into an expert overnight then this book is not for you (nor is any other for that matter). On the other hand if you know what you're getting into then this book will be intellectually stimulating and most definitely rewarding.


Contents

The final table of contents may be slightly different, but here's the current outline of the book.

Part 1 - The big picture
  • Chapter 1 - Overview
  • Chapter 2 - Architecture
  • Chapter 3 - Web technologies
  • Chapter 4 - Software services
  • Chapter 5 - Infrastructure
Part 2 - Environments
  • Chapter 6 - Server environments
  • Chapter 7 - Client environment
  • Chapter 8 - Configuration managament
Part 3 - Operations
  • Chapter 9 - Overview of web operations
  • Chapter 10 - Monitoring and logging
  • Chapter 11 - Availability management
  • Chapter 12 - Performance management
Part 4 - The deployment pipeline
  • Chapter 13 - Version control
  • Chapter 14 - Automation
  • Chapter 15 - Continuous integration
  • Chapter 16 - Deployment
Part 5 - The development process
  • Chapter 17 - Development methodologies
  • Chapter 18 - Requirements
  • Chapter 19 - Design
  • Chapter 20 - Testing
Part 6 - Implementation
  • Chapter 21 - Programming fundamentals
  • Chapter 22 - Object-oriented programming
  • Chapter 23 - Functional programming
  • Chapter 24 - Web frameworks
  • Chapter 25 - Writing maintainable code
  • Chapter 26 - Writing reliable code
  • Chapter 27 - Interfacing with other services
  • Chapter 28 - Debugging
Part 7 - Taking web development to the next level
  • Chapter 29 - Becoming a professional web developer
  • Chapter 30 - Web applications as commercial products

Interested?