Front-end vs back-end development

Is there such a thing as front-end vs back-end development in today’s web development world? How much do these cross over and even into other roles entirely? What is front-end developer or a back-end developer expected to know or do?

Well there is no easy answer to all of these questions, with today’s expectations both front-end and back-end developers have a lot expected of them. In very basic terms we could say the roles are briefly defined as follows …

Front-end developer

Expected to know HTML, CSS and be good at graphic design.

Back-end developer

Expected to know how to create databases and PHP.

Ok so that is defined very basically, now I will take into consideration all of the criteria not mentioned for each of these roles below …

Front-end developer

Based on the above we could also add the following as potential criteria to the Front-end developer role …

  1. Expected to know CMS systems such as WordPress.
  2. Expected to know front-end frameworks such as Twitter Bootstrap for example.
  3. Expected to know Javascript.
  4. Expected to know any number of Javscript frameworks such as JQuery, KnockoutJS etc.
  5. Expected to know any number of CSS frameworks that are available such as Less, SASS etc.
  6. As mentioned earlier, expected to know graphic design even though graphic design is a completely different discipline altogether.
  7. Expected to know server side templating languages, for example Smarty.
  8. May be expected to know a bit about server side languages so they can incorporate the HTML templates into the web app.
  9. Expected to know about SEO so the website can be coded to accommodate the SEO.

Back-end developer

Based on the above we could also add the following as potential criteria to the Back-end developer role, the first 6 bullet points are the same as the front-end developer role but are still valid, this is the cross over between roles I was talking about and how it blurs the lines between front-end and back-end development …

  1. Expected to know CMS systems such as WordPress.
  2. Expected to know front-end frameworks such as Twitter Bootstrap for example.
  3. Expected to know Javascript.
  4. Expected to know any number of Javscript frameworks such as JQuery, KnockoutJS etc.
  5. Expected to know any number of CSS frameworks that are available such as Less, SASS etc.
  6. Expected to know server side templating languages, for example Smarty.
  7. Expected to know HTML and CSS.
  8. Expected to know any number of backend frameworks, for PHP this would be frameworks like Laravel, Yii etc.
  9. Expected to know any number of database environments and their associated query languages for example MySQL / SQL, MongoDB / BSON etc.
  10. Expected to know any number of code libraries.
  11. Expected to know how to use version control systems such as Git, BitBucket etc.
  12. Expected to know any number of backend languages including all their frameworks and libraries. For example back-end developer could know C# but also PHP.
  13. Expected to know how to create and manage web servers.

So there is probably a lot more that I have not thought about or mentioned but that just about sums it up for now. You can see there is a big cross over between the skills especially in the area of Javascript. Javascript as a language is nothing like coding HTML but Front-end developers can still be expected to know Javascript.

Back-end developers can still be expected to use HTML even though they are Back-end developers. You also have to appreciate that most of these skills are multi-disciplinary and each skill in its own right could take a vast amount of hours to learn and maintain properly.

For example Javascript developer should be a role in its own right. Graphic designer should be a role in its own right. Web server administrator should be a role in its own right. Learning a single web framework like Laravel should be a role in its own right. Not one developer learning multiple frameworks.

The way the skills are listed above in the bullet points make them sound easy and degrades the time and effort it takes to learn the skills properly. However employers list the skills in the same manner as above in job descriptions they send out to potential candidates.

No one could learn all of those skills and be proficient in all of them. The time it takes to maintain such skills would be too much for one person to accomplish if taken to the degree of mastery.

Maybe some employers know this and do not expect the developer to be a master at all of them. Maybe some employers just copy other employers job descriptions without knowing that the other employer did not expect the developer to be a master at all of them.

Any employers listing too many skills that a developer should be a master at should be looked upon as not being very grounded in reality and taken with a pinch of salt. It is not just the time to learn the skill but to maintain them as well.

These technologies are constantly evolving and there is a lot of maintenance time involved as well. To be a master the skill has to be maintained and as mentioned earlier there is no way in reality that one person could be a master at all of them.

Will HTML be the new assembler?

So I was thinking a while back about skill sets and pay rates for specific skill sets. For example if you can program in Assembler today and a company has a need for a Assembler programmer you can charge big money because there are few Assembler programmers compared to other programmers today.

HTML, CSS, PHP programming languages pay less or rather sometimes pay less because there are a lot of programmers in today’s world concentrating on those languages.

This got me thinking, in the early days of computing there would have been less languages to choose from so there would have been a larger percentage of Assembler programmers around years ago compared to other languages.

However due to the early years of computing being a specific niche anyway there might have been less programmers overall therefore the Assembler programmers got paid big money anyway.

But lets look at it like this, below is diagram of computer languages and the hierarchy of languages which those languages are built on top of …

mockup1

As more programmers start using the languages that are built on top of existing languages less programmers will be an expert in the bottom tier languages.

In today’s world now that we have languages such as PHP, programmers do not need to learn Assembler, programmers do not need to learn C or Java etc. Now that we have frameworks such as JQuery programmers do not even need to learn Javascript.

Now let us pretend we are in the future, 20 years from now. New frameworks have been built on top of HTML. Modern programmers are geared towards learning those new frameworks and they do not need to learn HTML.

HTML programmers have become a rarity and companies needing to fix problems at a lower level such as HTML will need to seek out the specialist HTML programmers.

So basically HTML has now become the new Assembler. With the following aspects …

  1. HTML has become a low tier level language.
  2. HTML has become a rare specialist language, not many programmers will know how to program HTML.
  3. Companies will pay big money for people with skills in HTML.

So that is my view of what might happen in future with the languages we have today like HTML. If you remember how to program in those languages long enough one day they could become a highly paid programmer for those rare specialist languages.

Who would think that in 20 years from now, you could be getting paid £1000 per day for programming HTML?