Every Monday I think and envision what I'll be doing in 5 years, and yes I plan to be great today, but the plan should also involve tomorrow.
I tell this to all my engineers at five2one.com.au, we need to do this today so both our customers as well as us can benefit from the adaptation of tools that enable us to build better code and solve bigger problems.
Here's my take on 5 extremely important skills to future proof yourself as an engineer:
1.Learn to work with remote team members and hold malleable opinions
Thats right, like it or not remote work is here to stay and grow. Everyone wants to have the flexibility of wanting to travel and move and even if you're not that kind of person (I'm one of those) get ready to improve your communication skills to accommodate for this trend. Why ? the people love it and companies do too, lower costs and if its a global company, engineers are awake all the time. Check out gitlab as well as zapier (AMAZING firms, remote).
The second part to this is to hold malleable opinions, be firm in your opinion until proven wrong, ego's get you nowhere, learn from other people, I've learnt a lot most from an ex-musician boot camp grad who was 4 years younger to me, so hold your opinions loosely, aim for efficiency - not wanting to be right always (you'll learn a lot more - for free)
2.Practice learning cloud architecture/microservices/serverless builds when creating side projects
Yep, servers and isolated box time is getting expensive for start ups and larger firms. Start learning how you can use things like docker and ECS to create code-deploy patterns. Understand how lambda/serverless infrastructure works - because the patterns you use to develop in those environments are relatively different. And from what I can see from job posts, everyone wants those types of engineers and this will only grow - so get yourself a head start!
3. Unionise ML/AI with development, we’re at a forefront of the word “full stack” changing from frontend / backend to web dev + ML
ML/AI is a buzzword, sure, but don't you understand that many MANY people get ahead in life by riding waves ? Be ahead of the curve, learn how ML/AI works, its a lot more maths than programming, but honestly it's not that hard once you start - Mark Frign Cuban is learning how to do ML algos - you need to also. The term full start will soon move from FE/BE to Fullstack/ML or even ML/Devops
4. Learn product, you’ll learn stake ownership and accountability on building products
I can not stress on this point enough, as engineers our goal is to make visions come true, i.e make shit for the customer / for people who'll love and rave about our product. Learn how customers think, learn how to make the business money and empower the business with your execution skills, if you're a technical PM, you're practically untouchable in today's landscape
5. Never block yourself to one language, learn a few languages, keep one main one but learn to cross-collaborate amongst many languages
This is my biggest mistake when I started, I only focused on Python and JS. There's so many incredible languages out there - and sure they're all one and the same, no denying that - however, new languages are often built to solve the barriers old ones created or didn't solve. Which means you'll be exposed to intelligent patterns that will make your current programming expertise expand rapidly. I mean it's famously told, Dan Abromov's redux methodology came purely inspired from Elm. Node's Async Await existed long before in C# land.
You put yourself on a rocketship when you expand your brain to new languages and patterns.
If you liked this, definitely follow me on for the similar stuff:
Also, I apologise, no technical blogs - next one will be on my bulletproof VueJS code structure 😀 & much like point 1, all these "opinions" are very malleable, if you've got better ways please share them in the comments, I'd love to learn myself :)