My journey growing as a web developer: 2017 in review

December 22, 2017

I thought I’d share with anyone who is interested, really, how I was growing as a developer, i.e. what I was learning every month, what thoughts and feelings I had, maybe receive some feedback from you, and, if it works, motivate somebody else, who might be in the same situation as me.

I’m going to skip the first year of my learning, because it’s mostly been about basics of HTML, CSS, JavaScript, SASS, and essential knowledge on how the web works. Nothing interesting there: CodeCademy, a bunch of books, Bootstrap sites, SMACSS, and YouTube videos.

After that, as a developer, I was kind of stuck. As a designer, on another hand, I was fine. I could create a page, style it, animate things, but when it came to more complicated things like dynamically read the content from the input, using templating language to modularize pages, receive data from RestAPI, sort, transform and display it, that was tricky and overwhelming. There’re just so many things for you to know and manage. The OCD in me was not happy.

I needed to get rid of that discomfort, so I made a plan.

In 2017 I set myself a goal to learn minimum 1-2 new things a month. That could’ve been a technology, a framework, a language, or any other skill really. But what happened was that after I’ve learnt one thing, lots of questions arose. Trying to answer those, I move to the next thing, and the thing after that, and in the end, I ended up learning up to 7 new skills a month.

Here’s how it went month by month.

Jan: WordPress

This is when I was trying to get a job at a digital marketing company that specialized in WordPress. Apart from experience with our tea WooCommerce e-shop where I was mostly working with CSS and a bit of php changes, I had no tangible WP experience. So in January, I spent a lot of time working with WP themes, different plugins, and settings in functions.php.

Feb: WordPress, Shopify

More of [somewhat advanced] WordPress. Plus I had a couple of Shopify projects. Learnt Shopify themes, Liquid, that always comes with it, and how Shopify apps work.

Mar: Gulp, Bower, Yeoman, JS practice, HubSpot, WooCommerce

In March I was thinking more outside of the code. I started to think more about site speed, SEO, usability, and architecture of the whole digital infrastructure which may have included a digital marketing platform.

I’ve started to work a lot with Gulp to bundle and minify code, I’ve learnt Bower and Yeoman to fasten the dev process because it was taking quite a bit of time to just start the project. The time that I didn’t have. Soon enough, I got myself a starter theme, and scaffolding and task management processes. All of these kind of freed my mind for more important thoughts, things like actual clients’ needs.

Clients didn’t just want a site, they wanted a business asset. And this asset could have been a combination of a site, social media strategy, digital marketing tools, and all of them had to be in sync. That’s partly how I got involved with HubSpot.

Learning HubSpot was VERY painful! All of it: the templating language, the flow, integrations, and what not. But over time I got over it. I’ve learnt where things were, and what caused what bug.

March was also rich in vanilla JavaScript practice. Projects at work required a lot of interactivity on the page, so I managed to do everything without any frameworks, and only occasional use of js libraries, e.g. a gallery slider, lightbox, and etc.

All of this experience I got thanks to the company I was working at at that time. If it wasn’t for the clients’ requirements, time limits, and my managers’ almost instant feedback, I’d say my learning process would be twice as slow.

Apr: JS Physical Computing, Advanced JS, Functional JS, VueJS

April was very active. Few things happened.

Firstly, I attended a physical computing workshop by TangibleJS. We were given Arduinos, sensors, cables and all the fancy wires, and we played around with Johny-Five platform. Controlling hardware with JavaScript. That was pretty awesome.

Secondly, I’ve noticed that I have holes in my JS knowledge. I was confused by this keyword, I didn’t quite understand the code of others, so I did FrontendMasters JS workshops. This certainly clarified a lot of things.

Thirdly, at work, we started to get the site requirements with a lot of interactive, ‘SPA’-like functionality. That was the moment I realised I needed to go further than vanilla JS to keep up with projects’ constraints. And since I didn’t want to learn any rather complicated JS framework like React or Ember just yet, I thought I’d go with Vue. And boy, was that a splendid idea! In short amount of time I was able to do things I couldn’t even imagine, and in a very organized (regarding the code) way. All of that was implemented on top of WordPress and its RestAPI.

Today Vue is still my most favourite js framework of all!

May: VueJS

I couldn’t get enough of Vue! It fit practically all of our projects at that time. So in March, I tried to learn as much of it as I could. I was trying to use every single feature it offered.

Jun: consolidate everything learned so far

So that was the first half of 2017. In June I was working with the tech I’ve learned so far. I needed to take a break, and just let all the knowledge sink in.

Additionally, I was invited/hired to work on a Node + Vue project, that lasted until September, and thanks to which I became more confident with back-end JavaScript (more about this later).

Half year conclusion

Up until this moment, I was only working with front-end JavaScript. The only time I used NodeJS was when installing npm dependencies and running gulp. Since I really wanted to specialize in JavaScript I needed to move further.

Jul: Node, MySQL, MongoDB, Keystone, Cloud Computing

So after I was confident enough with the front-end javascript, I decided to move on to more complicated applications that involved a database connection and a hosting. And considering that I was looking for a JS-based CMS for one of my side projects, I started working with KeystoneJS and MongoDB (it’s a package deal).

I semi-finished that project, got the main idea of how it all works together, and moved on to the next one. But before that, I had to learn more about where and how to host a nodeJS app. Hence, cloud computing. I played around with AWS, Google Cloud Platform, but my favourite of all became Azure. I spent all of my $150 of trial money I was given while exploring its capabilities.

Aug: Express, NodeJS, PouchDB, Yarn, Webpack, BitBucket, Pug, Prismic.io\

After working with “semi-ready” platform like Keystone, I decided to develop everything from scratch with express. Pug was a part of it, kinda package deal as well, so I learnt that too.

I really enjoyed the fact that this time I could implement everything the way I wanted it, without any limitations. However, I still needed some content management platform, because I couldn’t design everything. That’d be really time-consuming. So I shopped around for some headless CMS platforms and discovered Prismic.io. In fact, the concept of headless CMS still really excites me, although they are still far from being useful half of the time (IMHO).

I stored all of that code on BitBucket. Just because.

In addition to that, the Vue project I mentioned earlier involved client-side database, so that’s when I learnt PouchDB, a client-side lightweight CouchDB alternative. This was my second experience with NoSQL after MongoDB.

Also, I completely moved to yarn for no other reason but because it was newer and ‘cooler’, and webpack, for the very same reasons, and because I wanted to have webpack on my resume.

Sep: JS Testing, Web Security, Git, CompSci, Angular, React

After a while, and a few more levels of complexity, in addition to a new job on the horizon, a need for JS testing, or TDD, arose. Thus, in September I was studying TDD, JS testing frameworks like Jest, Mocha, and Jasmine.

This month I’ve also realised that my web apps weren’t protected so I’ve started looking into web security, hacking, and how to safeguard your web apps from all sorts of attacks.

That led to CompSci/full-stack kind of courses from all over the web because I needed to understand more about how the internet works.

At the same time, I started to learn Angular 4 because I wanted to take part in potential Angular projects. So I did Angular courses and goofed around with the framework to get the gist of it. I left it somewhat unfinished because at that point I started a new job where I had to work with a slightly different stack.

Also, with the new job came new responsibilities. I had to learn more of Git than I already knew, i.e. beyond git addgit commit, and git push.

Oct: Git, React + Redux, Unity, Vuforia, Azure, ESLint

With the help of company training, and, most importantly, my workmates and managers, the whole new world of Git opened for me. I discovered git stash, git rebase, git merge, and how to work with Git in a team. The last one was probably the most valuable.

On the job, I was assigned to a React project that’s also used Redux for state management, and ESLint, which I heard about before but never actually bothered to look into.

After work and in-between React+Redux ‘stories’ (agile reference), I was chilling with Azure courses learning how to switch and balance between development and production environments on a cloud platform, deploy an app, revert changes, and similar.

Nov: Scrum, Redux, Flow, Design Patterns

Even tho I started to work in Agile in September, in November is when I learned the theory and essence of Agile, and, in particular, Scrum.

Redux and the whole state management idea was giving me hard times, so I did a course on it and applied all that to the project that I was already working on.

Also, I’ve watched a couple of videos and experimented with Flow, since it’s a part of the whole React ecosystem, but never actually got a chance to work with it.

And I wanted to learn good and bad programming practices, so I studied design patterns, specifically in the context of JavaScript.

Dec: chilling

Now it’s December. Just like in June, I’m not learning anything new this month. I’m working with everything I’ve learned this year, and plus, trying to grasp more of react, incl. state, props, context, and what not.

I have to finish some projects and wrap up the year with a new plan. I think 2018 plan would be more about studying core concepts in detail, e.g. SQL/NoSQL, MVCs, Node, programming in JavaScript, as well as learning server-side languages like Python and C#, together with containers, because when working at a software development company, you have yo know everything. Right now I’m just feeling useless when I can’t even properly understand a python message that Docker window is giving me [while working on the front-end].

I might also want to learn more tech and frameworks, things like React Native, Angular, Firebase, and FaaS.

A Year Conclusion

I created this ‘accelerated’ and ‘intensive’ plan, and kept up with it because I wanted to learn as much as I could in the shortest amount of time possible. I feel like it’s been quite successful. I’m better at coding now than I was before, but still far away from where I want to be.

What I’m going to do is to just keep going at this rate, dedicating all of my available time to learning new things, as well as studying in details the ones I already know, till the moment when I’ll be confident enough to develop, deploy, and manage an app on my own without major fuck ups.

But for now, it’s Christmas time, time to relax, get away from all the computers, and be positive.

Happy Holidays! :)


Telegram
I also blog about my professional life in @british_frontend (на Русском).