loading...

What should I learn next to boost my skills?

forza1896 profile image Pim Willems ・1 min read

I am currently a frontend dev and designer. 50% of my hours are dev work and the other 50% are being used designing websites, mobile apps and web-applications in the infrastructure sector. I got my degree in ICT & Media Design (BSc) in July 2016 so now I have 1 year of full working experience.

Currently I am still working at the same employer which gave me the chance to finish my degree. Since we're a small company I have the time to learn new things and innovate processes at the company. Now here's the thing: We only do corporate projects: custom Wordpress websites. I often get carte blanche designing those, so that's awesome. But I am struggling to find out in what area I should improve for my technical capabilities. HTML, SASS and jQuery aren't challenging anymore and I am currently learning Unyson which is going great - but has not-so-good documentation. I am also already using a package manager: Bower. Which serves me well for frontend use.

I looked at the Developer Roadmap (https://github.com/kamranahmedse/developer-roadmap) and it seems to point me in the direction of Javascript: ES6 and such. I wouldn't know if that is feasible to use in the websites that we build so I am looking for help: What should I learn next?

Note: backend isn't my cup of tea and I find little to no satisfaction in doing that kind of work.

Discussion

pic
Editor guide
Collapse
oxygen0211 profile image
Julian Engelhardt

Backend dev who chose a Full Stack/DevOps path here, so probably I am biased to push into a "jack of all trades" direction, so I'll split this a bit up to tell you what I think are hot and evergreen topics right now.

I think what you should learn next partly depends a bit on how you want to advance your skills. Do you want to be fully specialized in front-end? Or do you want to have a more general skill set? While both seems to be a valid decision, I would recommend at least knowing certain core concepts of the sorrounding dev and ops world since it makes colaboration with the respecting groups easier. When focusing on building static customer websites, many thinks might not be relevant, but when working on mobile apps (especially ones with a cloud backend) and webapps, you might come over one or the other.

Anyways, here's my list:

General

  • Testing, Test driven development, automated test frameworks etc. As many said before, this can help greatly improve your code.

  • basic software architecture principles and design patterns. As your Apps grow and add more features, you can quickly end up with a pile of spaghetti code. This helps you prevent that pile from getting too big and keep it maintainable

  • refactoring techniques. Helps you structure your pile of spaghetti code into something more structured.

front-end

As I said I am not an expert here, so what I mention here might only be a small part:

  • reactive design/React and React-native
  • Redux (does not mean to neccessarily use it, but know what it's about in case you need it)
  • ES6
  • responsive design
  • know that there's other frontend libs apart from React and how they differ. Like vue.js and Angular

Build/Release engineering

  • Semantic versioning helps you piss off way less people when starting to build libraries, APIs etc.

  • Project modularization, although I am missing good resources on this topic for learning on you own (I have best experiences with being mentored on this)

  • Package managers such as npm and yarn

  • Build automation tools such as gulp and grunt

  • Continuous integration, delivery and deployment

Backend

  • Relational Databases and their benefits and tradeoffs

  • Big data stores and their benefits and tradeoffs. Getting to know the types like Key/Value, Wide column, Time series and document store is more important than the implementations, but if you want so, go for Cassandra, Redis, ElasticSearch, CouchDB, MongoDB, InfluxDB.

  • Also going in the direction of datastores but a bit different: Blockchains such as Bitcoin and Ethereum

  • API design, REST principles

  • Queueing, PubSub messaging systems. Again if you want to look for a Framework, go with Redis PubSub or Apache Kafka

  • On the framework side, guessing that you want to stay within the JavaScript space: node.js (also ayo.js depending on how things will evolve in the future), express.js, integration with the data stores mentioned above

  • Service oriented architectures, Microservices

  • Serverless

DevOps

  • Containers (Docker and Rkt)
  • Container orchestration (Kubernetes, Mesos, Docker Swarm)
  • Cloud providers and the possibilities they offer (AWS, Azure, Google cloud)

Security and legal

  • Get a basic understanding for encryption and signature
  • Get a basic understanding for most common attacks and how to prevent them. Have a look at OWASP resources
  • Get to know the most common software licenses and what they do and do not allow.

EDIT: Forgot one section that seems important to you:

Mobile

  • React native for cross-platform (not mentioning React and RN libs explicitly since that should go hand in hand)

  • basics of Android SDK and iOS SDK (permission systems, basics of how stuff is built, APIs they offer, etc.)

  • App/Play store guidelines and review guides.

  • Know mobile centric toolings out there Fastlane that might make your life easier if you can make an educated decision about which to use

I hope there's something helpful for you and everyone else in here and the sheer amount of possible topics doesn't intimidate you.

Happy learning

Collapse
sephcoster profile image
Seph Coster

ES6 / React / Redux are all good directions to go in my opinion from a front-end perspective. They're well documented, there are a number of good tutorials (including our recent AMA person Wes Bos' "ES6 for Everyone" tutorial) and allow you to build modern web apps (and perhaps eventually port to native / mobile as well.

On the tooling side I think Gulp / Webpack are leading the charge with npm / yarn as package management tools.

Another thing that you didn't mention above but I think has to be in any dev's toolbelt: learn to test your code. Make sure you know how to write unit tests and also (ideally) end to end tests. Set up a test suite. Set up code coverage trackers. If you can write tested JavaScript that may be more important than knowing or having worked with the latest frameworkX. Solid engineering practices are always good to have in the toolbelt!

Collapse
forza1896 profile image
Pim Willems Author

Thanks for recommending that tutorial, it really gets good reviews. Will take a look at it for sure.

And you're spot on with the part about testing code; I really should learn that. I think it's gonna be something that sets me apart from similar devs as well. Thanks!

Collapse
connor11528 profile image
Connor Leech

Laravel, AWS, Vue.js and CSS Flexbox

Also Serverless with AWS Lambda, API Gateway and DynamoDB is hot right now.

I wouldn't recommend learning React.js as that is what everyone else is doing. The market is saturated. I find Vue.js to be easier to work with also

Collapse
anthonydelgado profile image
Anthony Delgado

One word. React. It is backed and used by Facebook, Instagram, has been adopted by companies like Walmart and Netflix and is quickly becoming the defacto standard for front end web dev. Plus you can develop native cross platform apps with React Native!

Collapse
forza1896 profile image
Pim Willems Author

Seems like React would be great place to start my next adventure, especially with React Native. Thanks so much!

Collapse
mladenstojanovic profile image
Mladen Stojanovic

Also word from a beginner :)

I am currently learning React and I am loving it, but I would suggest if you decide to take that road, go a little bit deeper into basic JavaScript knowledge first, understanding how 'this' works, scope & closure, how objects really work in JS etc. will help you big time as a lot of courses pass by those things in order to explain better the details regarding React/Redux, and you will find yourself less thinking about stuff like 'Why do we need to put an arrow function there?' or 'Why did we bind(this)?'

From my personal experience, I started learning React with basic JS knowledge and struggled a bit, after I went through an intensive vanilla JS training at my company, I found learning React much, much easier.

My suggestion about learning these things is definitely Kyle Simpson's "You don't know JS" book series. You have them for free at github :)

Collapse
forza1896 profile image
Pim Willems Author

Neat tip about the book series, will definitely check them out.

You're probably right by mastering vanilla JS first before diving into something else that requires it. Thanks!

Collapse
cwchentw profile image
Michael Chen

There are many duplicated works in JavaScript ecosystem; hence, only pick up what you need. TypeScript is a good JavaScript trans-compiler, nicely integrated with state-of-art JavaScript/Node toolchain, if you want to write something from scratch in JavaScript. You may consider Vue.js, simplifying your front end code with components, etc. I did backend programming for the most of time, mostly only use Bootstrap and jQuery for front end, so I cannot give you more advice on front end development.

Collapse
mathiasduc profile image
Mathias Ducancel

I am a begginer, so take my recommendations with a grain of salt.

Since you like front-end, i will recommend only that.

50% of your time is front-end but i'm not sure of what you use. You seems to work with PHP and Wordpress, so i will guess that you build static websites.
Something that that is challenging and could be real-world usefull is to learn some data-visualisation. D3js is a very powerfull and challenging tool. If you do that i would advise you to learn some ES6(or more precisely some fonctional programming using ES6)

You could try to learn a modern UI lib like React or Vue.js, they will probably make you re evaluate the way you see web development.

Relating more with your web-design side, you could learn some animations making using photo shop kind of tool.

Collapse
forza1896 profile image
Pim Willems Author

Thanks for your reply! Maybe replies from beginners are even more useful, since they have less prejudices :)

Yes, I build static websites. I've heard of D3js, would be awesome to add that to my portfolio! But before I start that ES6 should be my first step then? Guess I can buy a course on Udemy for those two. Vue and React seem viable options as well, thanks so much for pointing me into a direction.

Collapse
snazilo profile image
Dadum

This about sums up what you could do frontendmasters.com/books/front-en...