What Next

What next?

In my Pragmatic Programmer the authors talk about your 'learning portfolio'. The assumption being that you should treat your learning like an investment portfolio and invest your time in topics depending on risk.

2021 is my 4th year as a developer and I've been processing my learning portfolio a lot lately.

Summary

My current learning portfolio is made up from high risk areas (embedded, machine learning, robotics), medium risk (web security), and low risk (web frameworks, web native, AWS cloud).

What is my risk?

Risk tolerance is unique to everyone. For me I'm in a high risk stage at the minute.

This means that I can afford to explore a lot and not really care about consequences to my career.

I actually don't see programming as a career, it more of a profession - it something I myself doing for the rest of my life. The fact that I get paid for it is a really nice bonus.

const risk = timeInvestment * ultimateReward;

Risk has nothing to do with fun and it's mainly related to return - can I make a living or make money from it.

Choosing a high risk learning area is unlikely to payoff now, but it might return a bigger reward in the future as technology progresses.

High risk areas are more likely to be harder topics or use knowledge that you don't necessarily have right now.

My Portfolio

Modern JS frameworks (low risk)

React is a preference for me and I've made a salary from React since the beginning.

I know enough of React now that it doesn't take a lot of time for me to keep up with releases, new patterns, and features.

The time I've spent in the ecosystem has allowed to encounter problems with React performance, and tooling.

Right now my favourite way to write React is within NextJS, library that still uses React for the design whilst adding some nice features for Server-Side Rendered apps and static file generation. NextJS is flexible enough to allow a lot of config, but they provide conventions around common sticking points with React.

Following that pattern I'm also really excited by NestJS, which looks to do the same for Node / Express apis.

Notable mentions

I care about the JAMstack because I like the performance benefits. I keep an eye on new releases and I read tutorials for Eleventy and RedwoodJS. Same goes for JAM platforms: Zeit, Netlify.

I also like VueJS as a framework and I admire their performance focus and the fact that it's a community-driven project. I'm not interested in moving to VueJS just yet, so my interest is shallow - reading and tutorials.

I found React to be 'good enough' from a performance perspective (only relative to European customer bases), but as I'm looking into embedded websites I'm starting to research lighter weight options. Preact is a clear option here since there's little rework required. Also considering and testing Svelte, but it comes with a bit of a refactor from React.

Web Native and DIY (low risk)

This is a preference and an area of learning.

My preference is to DIY something over using a module - when I use a module it really has to be a flywheel.

When it comes to frontends, I tend to lean towards building everything from scratch. My experience with accessibility has force me down this path and I find it more flexible than reusing components from a library and trying to edit them.

This also means that I need to keep tabs on browser API releases, Javascript language releases, CSS releases and so on.

AWS Cloud (low risk)

Fullstack development requires knowledge on how to build architectures. My preference here is AWS and I'm currently working through certifications on AWS.

This actually covers a lot of other topics: databases, AI services, hosting services, server management security and so much more. I categorise all of that together because it's easier to track.

Embedded Development (high risk)

Learning more about FPGA and micro-controller development. Currently learning about building drivers for sensors, algorithms for measuring uncertainty, and building multi sensor systems.

Machine Learning (high risk)

Having already spent a few years working with machine learning algorithms, it's still something I'm fascinated about.

It took a while to realise what I enjoy within the machines learning area and right now I'm excited about planetary observation using AI.

A recent example of this was using satellite imagery to detect economic well-being in rural India.

Object detection is my main passion here, but also interested in autonomous vehicles.

Robotics (high risk)

Embedded development and machine learning folds into robotics.

The main reason why I'm interested in robotics is to do with robotics aids or using robots to speed up a traditionally human based workflow.

One of the earliest robotics projects I planned was a farming drone that can detect plant growth issues.

Web Security (medium risk)

During the pandemic I start getting interested in cyber-security.

For my learning I'm currently learning everything about web security vulnerabilities, exploits, and tooling.

The main reason for this learning areas is to apply it to bug bounties and vulnerability disclosures.