Friday, March 13, 2015

Making web sites is not programming!

I know a lot of people who claim they can make web sites. Not all software is good software. Learn your basics!

ENGINEERING = SIMPLE SOLUTIONS WITH MINIMAL COMPLEXITY

A substantial number of software engineering problems posed in the past 20 years have been optimally solved using the simplest solutions (with minimal complexity). De-allocation of unused pointers in code, for instance, is one of the main issues in code optimization. This procedure has provoked many newer generation programming languages in their attempt to automatize it. All these issues were (and still are) very important factors to consider in most types of software application development. However, there is one branch of software engineering that compromises the principle of simple solutions.

ENTER WEB DEVELOPMENT!

Together with mobile development, web application development is one of the newer branches of informatics. But web application development has gone a long way since those static Internet HTML pages, which used to be the epitomy of a web site. Today, most web applications run faster, more reliably and are more practical to use than their desktop counterparts. Furthermore, a web site (not to be confused with a web application) is advertised as being one of the easiest software to build, thanks to all the fancy new automation out there on the web, which can assist literally anyone, in starting a new Internet presence. This is precisely where all the problems begin!

AUTOMATION IS NOT ALWAYS A BETTER SOLUTION

Namely, anybody with the ability to type www.godaddy.com on their browser for example, is a potential web developer (by using their built in automatic script and page generators). The result of this is a sea of boring, monotonic badly engineered templated web sites popping up on the web.

An even bigger problem is when these sites start offering services that require the user to enter credit card details. These abominations of software coding are deemed development detrimental to the reputation of software engineering in general. First, because of the quality of the “build”, secondly because of the authors (usually without any formal knowledge in it, or software engineering) bragging about how easy it is to create a web application. Hence, anyone can make web sites (sometimes erroneously used interchangeably with web application) !?

CODING IS A PRECISE SCIENCE

You want to write a web application or put up a web site? Cool. Ask a developer to help you write the code and a designer to make it appealing to look at. Or here’s another novel idea: don’t! Nobody needs to see more of whatever temporal hogwash you think qualifies as being a subject of artistic expression. For the love of humanity, it is a precise science, which requires meticulous planning and, in most cases, a team!

HOW TO CREATE A WEBSITE OR WEB APPLICATION

Now for a proposed solution. It is my belief that web applications lack a precise formal definition of three things required to create a website or web application (even the simplest one):


  • Planning and design
  • Coding and
  • Content


Planning and design is the responsibility of the designer. Namely, the person with a keen eye for geometry and color, who should know beforehand what the basic topic and target audience of the website is. The graphic designer comes up with the look and feel of the product and will essentially use tools like Gimp or Photoshop for the graphics, as well as HTML and CSS for the structure, element positioning and cross browser/device compatibility.

Coding falls under the responsibility of the developer. This includes anything where a variable must be declared for instance, backend server side coding, JavaScript, database interoperability and even CSS.

Finally content. That’s all you, the guy or gal wanting to have a web site on the Internet! If you happened to be the same person as the coder or the designer then yes, you can merge into one of the previously mentioned category of responsibilities. Indeed, since you are the person with the idea, you do by all means have a say in how every part of the site looks or feels like, but ultimately when in doubt ask for a new design or a new implementation. If at first, second, or third, this does not work… change your designer or developer!

In any case, just acknowledging distinction above will help in multiple spheres. Firstly, the final product will actually be eye-worthy and internet-worthy (at least in terms on design and implementation). Secondly, web sites and applications like these are much easier to maintain in the long run and can easily be readjusted to comply with new standards in software engineering as needed. Finally, it will bring web application development back to where it belongs in terms of reputation and credibility: web development is engineering, to be more precise software engineering.