1.5 Working in Web Development

At the beginning of the chapter, Figure 1.1 illustrated the complex ecosystem that is contemporary web development. Seeing that diagram, you should not be surprised to learn that there are many different jobs that one can do within the web development world. This final section of the chapter will try to clarify some of these employment possibilities available with web development.

Fifteen years ago, this would have been a much simpler section. Back then, there were web developers, web designers, and webmasters. However, as the web has evolved and expanded in complexity, the range of roles (and the names used to describe them) has also expanded. Furthermore, the terminology to describe web development activities keeps changing. Ten years ago, a web programmer was someone who did server-side development, perhaps in PHP or ASP.NET. As JavaScript became more important to web development, a distinction between front-end development (JavaScript) and back-end development (PHP/ASP.NET/ Node/ etc.) made its way into high-tech job ads. As you can see in the following list, today there are even more distinctions in the web development job world.6

With so many distinct areas that one can become an expert in, it’s comforting to realize that web development is a team effort. Building and maintaining a web presence requires more than technical ability, and many brilliant developers are not also brilliant artists, designers, managers, and marketing experts. Working in the world of web development therefore usually requires a team of people with various complementary skill sets as well as some areas of overlap and cooperation.

1.5.1 Roles and Skills

As a student of web development, you might be interested in knowing which jobs are out there and which skills are required for them. This list of job titles (illustrated a little cheekily in Figure 1.25) provides an overview of the roles typically available in a web development company as part of a team. A crucial factor beyond the job description is the type and culture of the company, summarized in the next section.

Figure 1.25 Web development roles and skills

The figure shows 7 blocks that illustrate the various roles and responsibilities available in a typical Web Development company.

Hardware Architect/Network Architect/Systems Engineer

The people who design the specifications for the servers in a data center, and design and manage the layout of the physical and logical network are essential somewhere along the way, whether at your company or your host’s. Typically, these roles require networking and operating systems knowledge that is usually covered in other computing courses outside of web development.

System Administrator

Once the system is built and wired to the network, system administrators are the next people required to get things up and running. Often they choose and install the network operating system, then manage the shared operating system environments for other users. This position is often combined with the hardware architect in smaller firms, and is on call, since a broken hard drive on Saturday morning cannot wait two days to be fixed.

Database Administrator/Data Architect

The database administrator (sometimes abbreviated as DBA) is a role found in larger companies. In these companies, there are many databases, often from many divisions, all of which need to be managed, secured, and backed up. Database administrators will perform maintenance on the databases as well as manage access for user and software accounts. They sometimes write triggers and advanced queries for users upon request as well as manage database indexes.

A data architect has some overlap with database administrator, but the role is more focused on the design and integration of data. In recent years, managing and making use of large sets of often unrelated data has become increasingly important for web companies. In smaller companies, these different data roles are often combined with the system administrator and/or developer ones.

Security Specialist/Consultant/Expert

A good system administrator and network architect will certainly have insights into security as they perform their duties. However, because security is so vital to web development in general, and because the knowledge necessary to do security work is complicated and ever changing, it is not uncommon for companies to outsource their security needs to security specialists. These specialists will test for vulnerabilities, implement security best practices, and make updates and changes to programming code or hardware infrastructure to protect a site against well-known or newly emerging (called zero-hour) threats.

Developer/Programmer

Programmers can be assigned a wide range of tasks aside from simple coding. Writing good documentation, using version control software, engaging in code reviews, running test cases, and more might be typical tasks, depending on company practices. Programmer positions often begin at the entry level, with higher-level design decisions left to software engineers and senior developers. In terms of the web development world, the terms programmer and developer are quite broad; typically, however, this term is used to indicate a job focused more on server-side development using languages like PHP.

Front-End Developer/UX Developer

Increasingly complex front-end development requires software developers with an aptitude for graphical user interface design (nowadays more typically referred to as user-experience or UX design) and an understanding of human–computer interaction (HCI) principals. This typically requires in-depth JavaScript expertise along with good CSS skills. Another increasingly commonly used synonym for front-end developer is UX developer. The main difference between a UX developer and a UX/UI designer (described below), is that the UX developer is involved mainly in the implementation of the user experience and less in the actual design of it.

Software Engineer

A software engineer is a programmer who is adept at the language of analysis and design, and uses established best practices in the development of software. Sometimes the role of a programmer and software engineer are used interchangeably, but a software engineer has more knowledge of the software development life cycle and can effectively gather requirements and speak with clients about technical and business matters.

UX Designer/UI Designer/Information Architect

These are names used somewhat interchangeably for jobs that focus on the structure, design, and usability of a website. Once referred to as the user interface, the term UX has become the preferred term because improving how a website is used is just as important (or even more important) nowadays as improving how a website appears. While coding skills can be helpful, this type of work more often involves the development of prototypes, making mockup designs, and analyzing user experience data. In larger web development firms, this type of work also commonly involves working in conjunction with creatives in the art department.

Tester/Quality Assurance

Testers are the people who try to identify flaws in software before it gets released. This type of work is often called quality assurance (QA). Although some test roles are for nonexperts, many testers know how to program and might write automated tests as well as develop testing plans from requirements. Although these duties are often integrated with developers, they can form a job all their own.

SEO Specialist

Search engine optimization (SEO) refers to the process of improving the discoverability of web content by search engines. Chapter 23 covers both the above board (as well as the under-handed) techniques used to improve SEO results. An SEO specialist needs to be familiar with these techniques as well as analytics, testing approaches, social networking APIs, and even content creation strategies.

Content Strategists/Marketing Technologist

Regardless of technological features, websites ultimately succeed due to the quality of their content. A content strategist (sometimes also called a marketing technologist) is someone who uses his or her experience with existing and emerging web technologies in conjunction with knowledge about the audience to craft engaging web content. This type of work might also be done by an SEO specialist or an information architect. Writing and marketing skills as well as knowledge of content management systems, email services, and social networking interfaces are important for this job.

Project Manager/Product Manager

Websites are complicated projects often involving the work of many different people with different skill sets and personalities. Getting all these people to work together in a timely and effective manner typically requires the committed effort and knowledge of project managers (also called product managers). Knowledge of planning and estimation methodologies is helpful, as are more general people management skills.

Business Analyst

Although a software engineer in an analysis role might speak to clients and get requirements, that role is often given a different name and assigned to someone with especially good communication skills. A business analyst is the interface between the various divisions of the company and the website (and IT in general). These people can easily speak to the HR, marketing, and legal divisions, and then translate those requirements into tasks that software engineers can take on.

Nontechnical Roles

Aside from all the technical roles above, there are additional important roles that require expertise outside of technology. These roles include traditional ones found in almost every company: accountants, writers, designers, editors, lawyers, salespeople, and managers. There are also a wide variety of new roles that are unique to the web space,7 such as analytics manager, motion designer, social media analyst, cloud architect, and the intriguingly named growth hacker. Getting people from different backgrounds with different expertise to work together is how companies balance the business, technology, and art of website development.

Pro Tip

Two other terms are also common in regards to web development employment. One of these is full-stack developer. In the list of web roles, you will see that specialization of skills is the main focus. A full-stack developer is the opposite. In Figure 1.25, you can see the full-stack developer appears multiple times, roaming up and down the stairs between different job roles. This was our way of visualizing the unique (some say impossible) nature of the full-stack developer.

Rather than specializing in server-side development, or client-side user experience construction, or database administration, a full-stack developer ideally has competency and experience in all of these domains. Indeed, many companies even expect full-stack developers to be knowledgeable about various system administration tasks, such as setting up a web server and handling security issues. Looking at the list of chapters in this book, you will see that this is in fact the goal of the book: to turn the reader into a full-stack developer!

Another term that is used in conjunction with web development employment is DevOps (Development and Operations). Like the above full-stack developer, DevOps refers to integration rather than specialization. For most people who use the term, DevOps refers to a development methodology in which developers, testers, and others on the operations or hardware side work together right from the beginning of the development process.8 We have tried to integrate a little bit of the DevOps ideals into the design of our textbook by discussing in this chapter some of the typical deployment infrastructures of real-world websites. Chapter 17 on server administration and virtualization focuses on the operations side of web development. That chapter appears late in the book, but that does not mean its contents are not important. From a DevOps perspective, it contains vital information for web developers, and we encourage the reader to be willing to explore DevOps in more detail.

1.5.2 Types of Web Development Companies

A major factor to consider when thinking about a career in web development is what kind of company you want to work for. Sure, everyone needs a website, but there are multiple kinds of companies that work together to make that a possibility (illustrated in Figure 1.26).

Figure 1.26 Web development companies

The figure shows various blocks indicating different types of Web Development companies.

Hosting Companies

Back in section 1.3.4, we learned that there are companies that will manage servers on your behalf. These hosting companies or data centers offer many employment opportunities, especially related to hardware, networking, and system administration roles.

Design Companies

Design companies are at the opposite end of the spectrum, with few technical positions available. These firms will provide professional artistic and design services that might go beyond the web and include logos and branding in general. Some companies produce mockups in Photoshop, for example, which a web developer (at another company) can then turn into a website.

Website Solution Companies

Website solution companies focus on the programming and deployment of websites for their clients. There are technical positions to help manage the existing sites (working in conjunction with hosting companies) as well as development jobs to build the latest custom site.

Vertically Integrated Companies

Vertically integrated companies are increasingly becoming the one-stop shop for web development. They are called vertically integrated because these companies combine hosting, design, and application solutions into one company. This allows these companies to achieve economies of scale and appeal to nontechnical clients who can go there for all their web-related needs, large or small.

Start-Up Companies

Start-up ventures in web development have been some of the biggest success stories in the business world. Start-ups are often attractive places for new graduates to work, with less competition from experienced candidates and potentially lots of jobs available from developers to designers and system administrators. The smaller start-ups companies often require full-stack developers, who can take on any role from system administrator through to lead developer.

Internal Web Development

Although many companies outsource their web presence, others assign the work to an internal division, normally under the umbrella of IT or marketing. Although many of these roles are simple caretaker positions, others can be quite engaging, requiring real programming expertise. Many companies have lots of internal data they would not share with outsiders and thus prefer in-house expertise for the development of web interfaces and systems to manage and display that confidential data. Often these websites exist only with an organization’s Intranet rather than as public websites on the Internet.