Web Development Jumpstart

Author: Isagani Mendoza (ITJumpStart.NET)

Preface

Web application development is a broad subject. As such, this book makes a few assumptions and only covers core technologies that are fundamental to everyday usage by solo developers and small/medium-sized businesses. My perspectives about Web application development are laid out in my free pdf guidebook "Web Development Fundamentals" at ITJUMPSTART.NET. I require that you read that guidebook so that we are on the same page. I do not expect you to agree with all my viewpoints but then, it is up to you if you want to learn those lessons the hard way.

The rules distilled in that guidebook are not my sole observations but hard-earned experience from authors, bloggers and practitioners in the software industry. However, I do not speak for themselves so if I quote them, it must be taken in its proper context. I am certain to ruffle some feathers but that is normal in an industry rife with dogmas and subjectivity. Haters gonna hate.

Instead, I want you to get the basics right. I want you to free your mind from marketing hype. I want you to challenge the prevailing pop culture and see for yourself where it will stand years from now. Technologies come and go not because they go out of fashion but because they crumble out of complexity.

The same goes with Web development. The Web is a platform and always will be. Alan Kay said that the Web was done by amateurs. But I bet you are not one of those.

Acknowledgment

Thanks to all developers of open source projects without whom this book would have been non-existent

Copyright

All rights reserved. No part of this book may be reproduced without written consent from me. Portions taken from the documentation of open source software used in this book are covered by its respective license.

Intended Audience

You are a small-scale developer Your target deployment is a couple of servers or even VPS You need to build Web apps, not media sites or mobile apps You just need plain old relational database, not NoSQL You want a turnkey Web app example, not piecemeal solution You are one or more of the above

Part I. Overview

Code first, refactor later

My approach to programming is to start small. You need to code the functionality aspect first. Once your code gets big and messy, that's the time you need to refactor your code. As the saying goes, premature optimization is the root of all evil.

Code first, automate later

Once you get the hang of programming, you may automate those tedious testing processes. However, testing automation is beyond the scope of this book. I want you to concentrate on the basics first. Those automation techniques can be learned later. The first order of the day is to get past the functionality stage. In common language, get your house in order first.

To paraphrase Matt Jaynes of DevOps University:

"You should get your house in order before aspiring to do automation or CD (continuous deployment)."

What is FUSS Programming?

F - Functionality (Is the program working?) U - Usability (Is the program easy to use?) S - Speed (Is the program fast?) S - Security (Is the program secure?)

The first three criteria are enshrined in the famous saying:

Make it work, make it right, make it fast

The same is true for programming Web applications. Other considerations like program modularity and extensibility are left to the developer as you gain experience.

Of course, those three criteria are nothing if your application is not secure. So to round out the saying:

Make it work, make it right, make it fast, make it secure 1. Functionality is about coding now, refactor later. You want your program to be working first. In other words, your concern is to get the job done.

2. Usability is about the user experience otherwise known as "Don't make me think" principle. If functionality is about getting the job done, usability is about getting it done right.

3. S