What Is A Web Developer?
Before moving into the theory, it is interesting to address what exactly a web developer is, what problems he/she will be dealing with on a daily basis and why this matters.
The history of the web
In 1989, Tim Berners-Lee invented the beginning of the Web as we know it: the Hypertext Markup Language, a.k.a. HTML. It came from the necessity of encapsulating data and defining the structure of a page, independently of the interpreter - in this case, the browser. It was a way of telling the browser the format of data, so it could be displayed as intended by the author of the page. It just felt more appropriate to use a mark-up language to do so.
As the web became popular during the 90s, it also became necessary to start building non-static, or dynamic, web pages. This means that at some point in the history of the world wide web, developers started applying persistence methods (through databases) to deliver different content to different visitors of a website. At this point, the necessity of having an intermediate medium to fetch the data and build the dynamic web pages became necessary. In 1995 PHP was born: a scripting and interpreted programming language. Its flexibility was attractive and it became the most popular programming language for web development.
In the same year, there was another boundary to be beaten: the synchronous and static character of the web page rendering. Why does every web page has to be fully built by the server? What about making it possible to mutate the web page in the browser? The answer to these questions is JavaScript, another flexible and interpreted language. It reads the web page as a tree, manipulating it at the developer's will.
One year later, in 1996, the Cascading Style Sheet was created, aiming to simplify the means of styling HTML.
At this point, the foundation of web development was built: the front and back-end: the distinction, or separation of concerns, between the presentation layer (interface, front), and the business logic and data access layer (back) of web applications.
Front or back-end developer?
This book is focused on back-end development, although the examples also present basic front-end development. A great explanation about what a front-end developer is can be found here.
A back-end developer takes care of the logic and core behind the scenes in a web application. This programmer creates components and features that implements the business logic of the application. Is a person who designs, develops, maintains, tests and evaluates the software.
A person capable of doing both is called a full-stack developer.
The good developer vs. the great developer
Knowing the difference between a good and a great developer is a key aspect to understand this book. In a very straightforward perspective, a good developer gets the job done. A great one, instead, gets the job done in a professional way.
A nice comparison can be found here. 7 qualities of a great developer can be identified as:
- Positive attitude
- Great communication skills
- Great at time, task and risk management
- Quick learning ability and desire for knowledge
- Deep and broad technical experience
- A good team player
- High end user focus
It is important to notice that all the aspects above can be acquired with time, specially evaluating the 5th one. It doesn't matter not having experience. What matters is that the capability and willingness to acquire it, backing it up with a never-ending knowledge acquisition.
This book is made for great or soon-to-be great developers.
The daily life of a web developer
A web developer, as any other developer, has its daily activities divided in two parts: theory and practice. A developer constantly switches between studying the theory behind the features it is willing to implement and actually implementing it. Knowing how to do the research is a key feature to become a great professional.
A developer is constantly dealing with:
- Mutable code. Write code to change instead of writing to last.
- Risk management. Working to reduce risks.
- Communication. Working in a team.
- Identifying great engineering decisions. Identifying and avoiding common mistakes.
- Recursive and incremental approach. Constant cycle between implementing new features and changing or refactoring existing ones.
Educational requirements
Having a diploma is not necessary, although these may help:
- Computer Science Bachelor Degree
- Computer Engineering Bachelor Degree
- System Analysis Bachelor Degree
- Courses or previous knowledge: Software Engineering, Software Architecture, Design Patterns, Robust Programming, Web Development, C#, ASP.NET MVC Framework, and many others
This book aims to bring the required knowledge in a simple way. Extra research may be required and strongly advised.