Web engineering

A definition

With the emergence and improvements of Web technologies such as Ajax as well as better support for Web standards, the Web has become the goto place for young software engineers. However, software engineering graduates were not trained to build web applications, most of them lack certain skills required for developing quality web applications. This is were Web engineering fits into. Fortunately, there's a lot of common ground:

Web engineering actively promotes systematic, disciplined and quantifiable approaches towards successful development of high-quality, ubiquitously usable Web-based systems and applications.

Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches [...]

The rest of the Web engineering definition also offers some interesting information:

[...] Web engineering focuses on the methodologies, techniques and tools that are the foundation of Web application development and which support their design, development, evolution, and evaluation. Web application development has certain characteristics that make it different from traditional software, information system, or computer application development.

Web engineering is multidisciplinary and encompasses contributions from diverse areas: systems analysis and design, software engineering, hypermedia/hypertext engineering, requirements engineering, human-computer interaction, user interface, information engineering, information indexing and retrieval, testing, modeling and simulation, project management, and graphic design and presentation.

So Web engineering, while it borrows a lot from software engineering, is still its own discipline (just like software engineering is not computer science).

The case for Web engineering as a discipline

Web engineering is not taught in school. You're lucky if you learned anything Web related beside databases at school. You may have had a Web project or two but chances are you didn't get to learn about security (passwords and how to handle users), Web standards or all the available Web technologies (PHP, ASP.NET, Ruby, Java, etc.).

That makes it extremely difficult to recruit competent graduates since they have no clue of what to do: they don't know HTML, they don't know JavaScript and they certainly don't know CSS. Luckily, that makes screening them very easy, if they know what you're talking about they probably are passionate about it as much as you are because they learned it by themselves for fun (that's why you want self-learners).

Unfortunately, limiting your scope to these people makes the pool of potential hires very small. At the last career fair I went to, over a dozen companies were looking for Web developers, yet only 3 or 4 students were interested. Web development is here and strong, it's time to introduce the future software engineers to the discipline. It's also important to offer a few courses for those that are more interested and want to specialize and work in the domain.

The demand from employers is there, the universities must now adapt and start forming Web engineers.

Curriculum

It's easy asking the universities to train more Web engineering but what does a Web engineer know that a software engineer doesn't? What does someone need to know in order to be a competent Web developer. There are various organizations already at work on building a curriculum to teach Web standards - Opera for example - but what about the rest (security, Web technologies, methodologies, etc.).

This is a subject of very high interest to me so I'll try to explore what should or could be taught at school.

Michel Billard's profile pictureMichel Billard's profile picture

A web developer's musings on software, product management, and other vaguely related topics.