From back-end developer to full-stack: the journey begins...

Introduction

Look at him: a hopeful middle-age back-end developer who thinks that to learn front-end technologies is a good idea nowadays. After some years working in back-end tasks on portals like OpenCms, Vignette or Liferay, he is going to go into the light, coming out of the dungeons....

...Now, he is going to do cool stuff: things moving around the screen, putting colors here and there and things that can be easily shown to his mother, for example.

Look at, mom! Do you want I change that color? Do you want I move that image?

It is far better than to tell her:

Look at, mom! Do you want I integrate that portal with that web service?

...

Never mind...

Poor guy. He does not know where he is going into...

The journey begins

Anyway, he is really determined to do it, so he suggests to the company he is working for to orientate his career to turn him a full-stack developer learning the required front-end technologies. And the company (mimacom Ibérica, actually) does not warn him about that crazy idea and accepts it. It takes advantage of a new project that will be developed with Angular 2 to enroll him as a junior front-end developer. And even more, it provides him with almost 2 entire weeks to train himself in the corresponding technologies. "Wow! A lot of time!", he thinks. (We have said he is a poor guy. He will soon realize that to learn Angular 2 he will need to learn TypeScript before, for instance, which is based upon ECMAScript, using Observables and the JavaScript ecosystem: Node.js and npm with all its myriad of modules, webpack, Jasmine, Protractor, ...).

So he starts to take an Angular 2 course advised by an experienced colleague, but he soon begins to realize that to learn Angular 2 he needs to learn TypeScript before, for instance, and Observables and the JavaScript ecosystem. (We told you!) That could even drive to new development paradigms like functional programming and reactive programming. And we could talk about CSS3 (with Sass) and HTML5, too... A quite big number of technologies to learn. Suddenly, he remembers a scene he watched on one of his favorite TV series.

He swallowed saliva and began: there is a lot of documentation to read, a lot of tutorials to follow, a lot of test to do... Let's go!

Self-training path

The aforementioned recommended course about Angular 2 was too though to take, considering his background, so he first started learning the modern ECMAScript (ECMAScript 5 & 2015 with all those new features it brings: modules, classes, arrow and spread operators ...; Typescript, Node.js, npm, Promises, Observables and webpack), then he continued learning what is Typescript and the next thing he did was to take a look to the official Angular 2 documentation. His experience tells him that usually is very good to use the official documentation about a technology to properly learn how to use it to grasp the concepts under it, the purpose.

Project time

Eventually, the self-training period ended and the project started. Fortunately, there was an experienced full-stack developer in the team who took the responsibility of developing the architecture of the project. And that was very helpful because that gave him a kind of templates where to start from. As you can guess, the level of the project was higher that the tutorials'. With real projects, real problems emerge. And those are not pet-size like in the trainings, but monster-size. Nevertheless, the team was finding ways to defeat them day by day. And, along the way, he was learning how to do it in this new field. (The next course he is going to consider to take is the CSS introduction given by the W3C.)

A kind of retrospective

Good things:

Very understandable documentation was found. The links have been shared along the post.

Supportive team: to face such a big amount of new technologies with no experience at all in the team would have been a nightmare. Having someone that brings light to the dark points reduces the stress.

Things that can be improved:

Initial evaluation: perhaps it would have been helpful to tailor a training plan in the proper order to make an efficient use of time.

A mentor: 10 minutes of expert advice can worth more than 2 hours of self-training. When you are approaching a problem from the wrong side because you lack some essential concepts, you might spend quite time figuring out what is wrong. An expert eye can spot the mistake promptly (typically they are the usual problems novice developers face when they are learning a new technology) and make possible to invest that time efficiently.

Does it worth?

It is early to be really confident about the question but the feelings are good enough to go on learning it and is easy to understand why Angular is the popular framework it is.

Once the skeleton of the application is done is quite easy to add a new component to it. Angular 2 seems to be an improvement over 1.x version with simpler stuff. And you can take advantage of some available starter packs to save the firsts steps setting up a new project that is going to use Angular 2 as a front-end framework and webpack as the module bundler, for example:

Improvements not only come from Angular but from the ecosystem of tools that surrounds it. They make possible to fulfill develop-test cycles in a few seconds. And that makes the life of a developer really better, helping to have shorter delivery times for a feature.