Web developer skills, tools, frameworks, do I really need to know all this stuff?

When I first started in web development I started by learning PHP along with HTML, CSS and Javascript to create the UI of web software system I was building.

After a couple of years I decided to start using a web framework to make my development of web based software less time consuming.

It was around this time period that I was of the opinion that I needed to study whatever skills I was learning to point of mastery.

Of course although most skills where learned in depth learning any skill to point of mastery is ongoing.

Below is a diagram showing my opinion on learning new skills …

It is my belief that the bulk of the learning is done at the very beginning with only minor gains being made after that.

The minor gains would be the ins and out of the skill and the areas of the skill that will not be used on a day to day basis.

Some of the minor areas would include areas of the framework that do not work as expected and you have to spend a little time figuring out how to do it using the framework itself.

Most of the areas of the skill that are going to be used daily are within the “front peak” area of the diagram.

The diagram is ongoing and the right area of the chart is always expanding, this represents the ongoing updates to the skills you would need to learn to say you are “up to date” with the skills.

Although this area would most likely not include the “front peak” again it is still ongoing never-the-less.

So going back to what I was saying I use to believe that I had to take my learning all the way to the end of the chart and going further that I had to have some commercial viable projects that I have built using the said skill.

Only after doing the above could I say that I had the “skill”.

Looking on the job boards today I can see that lots of employers are asking for enormous amounts of different skills.

Why would a company need all of the these skills they are listing from both 1 employee and every employee within the company?

I am not going to harken back to the “good old days” but I am reasonably sure that these skills use to be more spreadout over different employees.

The skills being listed are skills needed in multiple roles meaning each and every employee is wearing many hats rather than 1 employee being this and 1 employee being that.

Some of the skills are totally unrelatable such as needing to know 4 programming languages (core skills) and various frameworks and tools related to each of those 4 languages. Or listing graphic design skills along with UI programming skills.

If you go to University you go there to learn “web development” or “graphic design”. So are these companies telling me I need a degree in “web development” and “graphic design”? How long would you need to learn at University to do that? Around 6 years, 3 years for each course and that is the tip of the iceberg.

This gives the impression that these companies cannot possibly be serious but in some cases you actually find that they are serious.

How can anyone learn this number of skills to the point of mastery or even in depth?

Not all of the skills listed on these job descriptions take an equal amount of time to learn. Some of the skills could take as little as a couple of hours whilst some can take as long as year.

To some of the companies there is no differentiation between these, either you have the skill or you have not got the skill.

I have seen job descriptions listing “plugins” as needed or desired skills. Plugins should not even be listed as skills, plugins are just modules that can be used by the core language or framework.

Most programmers do not even look at plugins as requiring any learning they just import the plugin and get stuck in. The degree of learning for a plugin is so minimal that it is hardly worth mentioning let alone listing as a required or desired skill.

Admittedly because some employers are asking for plugins as a skill I have started listing plugins I have used in my skill set. Last year I was not doing this though.

Here is my experience on how long certain skills should take to learn from scratch, when I say “learn” I mean to get over the big spike on the chart above, of course you can continue learning additional parts after the big spike and the learning can be on going but I am just talking about learning something enough to be useful enough to produce something …

Core skills – Java, PHP, C#, Javascript, SQL etc – 6 months
Frameworks – Laravel, Yii / Yii 2, Symphony – 1 month
Mini frameworks – Express, Lumen, NodeJS, React – 2 weeks
Plugins – anywhere from a couple of hours to a couple of days

As you can see it is only the “Core skills” that in my opinion take a long time to learn, after the “Core skills” the time to learn the other areas such as “Frameworks”, “Mini frameworks”, “Plugins” decreases dramatically.

Potential employees are being rejected on the grounds of them not having the certain skills listed above.

The potential said employee is going to be with the company for years and is being rejected on the grounds of not having a skill that would take 2 weeks to 1 month to come up to speed on?

It is not that the employee even has to take 2 weeks to 1 month to learn the skills on company time, the employee can still be productive whilst learning the skills. An employee can start on the company work and learn the skill as he / she goes along.

No big deal in my opinion.

Sometimes a company will claim they rejected you because they did not think you could “hit the ground running”.

If challenged on why the said companies thinks you will not be able to “hit the ground running” you will get a list of supposed “technical incompetencies”.

This list was most likely not produced at the time but the hiring manager went by his or her “gut feel”. Now that you have challenged it the hiring manager will produce a list of your “technical incompetencies”.

This can seem very daunting but what most people do not realise is that coming up with a list of someone elses “technical incompetencies” is the easiest thing in the world to do.

Everyone has some incompetencies that can be focused on, the problem is you do not get to see the hiring managers or any of the other employees incompetencies within the said company, so it gives the impression that only yourself is incompetent.

What you will also find is that the “technical incompetencies” are of a trivial nature or are not really incompetencies at all.

As an unrelated example, hiring manage preferred the red colour over the blue colour but never specified that in the requirements and will now not hire you because you did it in the blue colour.

Hiring preferred “this” way of coding over “that” coding but never specified that and will not hire you for that reason.

An example could be “Type Hinting”, a number of years ago it was not possible to use “Type Hinting” in PHP so in your “technical test” you may write a method as follows …

Rather than using “Type Hinting” like this …

Some of my personal PHP projects I work on do not use “Type Hinting”, a lot of PHP web software projects have no “Type Hinting” in them.

However this is exactly the sort of area the hiring manager would bring up as a “technical incompetence”.

In my projects where I have used “Type Hinting” it was no big deal to start using it. It did not take me any extra time to start using it and it was not difficult to start using it.

It was not a “technical incompetence” it was something I just did not do out of choice and personal preference.

Like I say to start using it was no big deal and certainly not something that warrants rejecting a potential job applicant on.

Job application test …

Coded a small web app without using Type Hinting – “We do not think you can hit the ground running”

Applicant …

Hears the answer and is disappointed he did not get the job. Decides to implement Type Hinting into the small web app he just made for the interview just to see how long it would take, took him 15 minutes to implement.

15 minutes to implement! This could have been done on his morning break, all it would have required is for someone to tell him to start using Type Hinting. Hardly a deal breaker given that the said applicant would have been at the company at number of years.

Next job potential job.

Employer business …

“Yes we need HTML, CSS, PHP, Laravel, NodeJS, Express”

Applicant …

“Fantastic I have all these skills.”

Employer business …

“Ohh actually we also need React” – “We do not think you can hit the ground running”

Applicant …

Decides to learn React on his own time to see how long it would take. Gets over the learning curve in 2 weeks. Again hardly a deal breaker given that the applicant would have been at the company a number of years.

Of course there will be people out there thinking “Well if you are that bothered, why do you not just learn React and then apply for the said jobs”.

This would be OK provided there was not different combinations of skills that need to be learned, one company wants one thing one company wants another thing.

One company wants Symphony one company wants Laravel, one company wants AngularJS one company wants React.

These types of skills are parallel to each other, if you learn one it is not worth learning the other because they are both designed to accomplish the same goal.

This means you basically have to learn parallel skills just to get a job in a specific type of company.

So lets start putting it to the businesses …

I am an applicant and I have the following skills …

HTML, CSS, JQuery, PHP, MySQL, Laravel.

Everything I need to build a perfect fully function web based software system.

Company does not want these skills but they want something similar to this …

HTML, CSS, MongoDB, NodeJS, Express, AngularJS, PHP

Basically this is about the stack of technologies, give or take, the first set of skills is the traditional LAMP stack of skills the latter is the MEAN stack of skills.

Applicant …

“So employer business what made you decide to use the MEAN stack of technologies over the more traditional LAMP stack of technologies?”

Employer business …

“We decided to use the MEAN stack of technologies because with the emergence of NodeJS we can now compile Javascript and this makes the software system more faster and efficient over the traditional LAMP stack of technologies”

The above is a typical text book answer, the above sentence could have been taken straight from the NodeJS website itself. The real reason is because the MEAN stack is the latest web development fad.

Lets carry on …

Applicant …

“So what types of web based software systems do you build?”

Employer business …

“We build a range of web software systems for our clients such as custom CRMs, Online Stores, Project management tools, Workflow tools”

In other words nothing that would be required to be “ultra” fast and efficient. Nothing that is really scientific and cutting edge. Nothing that would require the latest advancements in processing power. Nothing that could not be built using the traditional LAMP stack and be almost as fast and efficient.

When the term fast and efficient is being used remember it has a context, the gain made will most likely be in the form of milli-seconds.

This may be useful in some areas but for your general business tools such as what businesses need and what most web based software system companies are providing the extra 0.001 milli-second gain per page load is generally not going to matter.

But lets say that all these areas matter, the extra 0.001 milli-second gain per page load matter, lets carry on …

Applicant …

“So you mentioned you aim for speed and efficiency in the web based software systems you use. Why then did you not use Java over NodeJS as Java has been around longer, is tried / tested and is more faster and efficient than NodeJS?”

Most likely you will not get a real answer.

The point is there are tools and languages for the scientific world, there are tools and languages for the speed and efficiency world.

These tools and languages have been around for years and are better at their “niches” than NodeJS. So why was NodeJS chosen if “speed and efficiency” was the goal?

The companies that are really scientific and cutting edge do not expect their “scientists” to “hit the ground running”. It is recognised that the said subject will require research and development.

Breaking into something that is truely scientific and cutting edge is not something a “timescale” can be given to. If nobody has done it before how can anyone know the “timescale”?

Having said all of this I have started to learn new skills such as NodeJS and the rest. I am finding it super enjoyable and it is giving me the same feeling of enjoyment I had when I first started programming.

It is just a bit of a bother that employers are not willing to take a chance on a potential employee and train them up as they go along especially when the employee will be with the company for a large period of time.

So to answer the question of this post, yes it is important to learn as many of these skills as you possibly can even if you do not take all of the skills to the level of mastery.

Some companies will let you learn the skills as you go other companies will expect you to “hit the running”.

373 Total Views 12 Views Today

One thought on “Web developer skills, tools, frameworks, do I really need to know all this stuff?”

  1. Great article! I laugh constantly at the endless litteny of skill requirements on some of these jobs. UI developer, DBA, ETL, version control, api, mobile app in xxx industry with 10 years experience in each. Utter nonsense and the bottom line is that if you know 1 or 2 languages, understand frameworks and data modeling and basic business processes you can get up to speed in 90% of situations within 2 months

Leave a Reply

Your email address will not be published. Required fields are marked *