New Year, Almost New Me

An example of what we’ll be discussing in this article

alt text

New year’s resolutions and I haven’t always been the best of friends. For a long time, the concept of committing to doing something for a whole year, while being totally clueless about what I’d be doing even 2 months later felt like peak supidity. I mean, the whole thing just seemed absurd, as I perfectly knew that the aspirations and centres of interest of my future self would simply no longer match those that I had at the time of making that decision.

Now the one good thing with growing older, is that you eventually start developing some sense of what works for you and what doesn’t. Personally, I’ve learnt with time that all I need to do is first find some sort of general direction that I want to head towards. I can then start exploring all the possible forks and paths within that field, picking new ideas and concepts here and there along the way. This simple approach eventually leads me to making some discoveries that I wouldn’t necessarily have even thought of making when starting that whole process.

Think of this as breadth-first search, but applied to personal growth.

For instance, my resolutions for last year were pretty simple:

  1. Move away as much as possible from relying on Google products. With this in mind, I stopped utilising Google Colab, moved from Chrome to Brave. Getting rid of Gmail turned out to be the easiest products to drop given that I’ve been a Yahoo! email user since the early 2000s. Interestingly, the only two Google products that I have found difficult to live without are Drive (nothing even remotely matches it) and YouTube (no real alternative).
  2. Learn TypeScript

Now let’s get back to what we were discussing earlier. Ditching Colab forced me to look for alternative platforms and even languages, which in turn made me discover some great notebook environments such as for JavaScript or Livebook for Elixir. Discovering about Elixir then led me to read a lot about Erlang and the BEAM virtual machine, which is in turn got me interested in to functional programming languages and concurrency.

And so on, and so forth.

A bit of reading first

You might be wondering why anybody would want to read my thoughts on goals setting, when there are already tons and tons of online articles and books on that topic. And dear Reader, you’d be absolutely right to think that way.

For online content, I think the best entry point is to check recent New Year’s resolutions posts on Hacker News. They usually contain a lot of interesting ideas from some of the smartest people across the tech industry:

Recommending books is going to be a slightly more complicated task, as I wouldn’t be a big fan of reading anything even loosely related to personal / career development in general. The few books I’ve both read and liked are these two fairly recent ones:

  • Merih Taze’s Engineers Survival Guide is a collection of short and practical pieces of advice that greatly helped me during my days at Google and Meta. Unlike its title suggests, this book isn’t only aimed at engineers, and can be read by anybody working within a tech environment. My favourite chapters include would be: How to disarm assholes", “Visibility is everything”, and “Prototype fast. First working prototype always wins”.

alt text

  • On a more personal side, David Goggins’s Can’t Hurt Me is a book that clearly resonated with me when I read it in the early days of the 2020 pandemic. By personal, I mean that this book is aimed at a somewhat specific audience. Without oversharing, I grew up being told that I was a complete idiot, and unfortunately quickly realised that though I wasn’t as stupid as I had repeatedly been told I was, I for sure wasn’t the brightest kid around. And you know what, being just average at everything is totally fine. What is not though, is that it took me a good while to understand that people who like me aren’t the smartest, can still achieve a lot if they just work their ass off. I now know that I can learn and understand pretty much anything, but also that I’ll probably have to invest a lot more time into that thing I’m trying to become good at than an smart person would. Now that I’m in my early 40s I feel that having this “I’m going to put dozens and dozens of hours into this practicing this thing and I’ll be able to do what those smart guys do” type of mentality when I was a young adult would have saved me a lot of pain back earlier on in my career.

Defining a north star

Now that we’re done with theory, how should we approach setting up some goals then? As briefly mentioned earlier, a good way of getting started is to try and look for high-level themes. We’ll intentionally leave aside personal goals (getting fit, buying a house, etc..), as the aim of this website is to solely focus on tech-related topics.

  • Career: I recently started a new role as a Senior Data Scientist, and this is exactly where I want to be at this point in my career. So, nope
  • Education: I already went back to university 3 years ago and obtained a second Master’s Degree, so I’ll probably pass on this one as well
  • Programming languages: there’s always something new to learn. The issue is, the only way I’ve ever been able to retain new information is through regular practice. As I’m already working hard on trying to maintain the little I know about TypeScript and the few other languages I’m sort of comfortable with, I feel that I would very much struggle if I were to pick up something new again
  • Some sort of fame-related achievement: Like being a speaker at a conference or that sort of stuff. Meh. I’m not really into that type of things. So once again, next
  • Giving back: I wouldn’t be where I am now but for the help of some great workmates and mentors over the years. In both 2022 and 2023, I enrolled into a mentorship program and helped some former colleagues learn Python. I really enjoyed this, and intend to continue doing so. What I might do this time though, is get involved in some volunteer-led community like CoderDojo
  • Some outside of my comfort zone tech knowledge: we’ll get back to this further down this article, but there are tons and tons of fields within IT that I have very limited knowledge of. I’m thinking here of networks, hardware, cloud computing platforms, etc..

Thanks to this little exercise, you might get a clearer idea of what you’ll want to explore over the next few months. But most importantly, you’ll definitely know what you won’t want to be wasting any time on.

We’re going to do what we said we weren’t going to do

For the next phase, let’s pretend that we’ve made up our mind and decided to go for a new programming language. Now as discussed above, I personally don’t feel like following this path in 2024, but I’m also aware that this is a popular resolution within the tech field.

I spent the pandemic trying out lots of different languages and runtimes, exploring frameworks, building small things. And so last year logically felt like the right time to stick with one and finally be able to use it when I needed to for work. What turned out to be slightly more difficult was to pick that one language that would acompany me for the whole year.

Go and Nim first felt like the obvious candidates, as I initially thought it’d be wise to pick a language that’s halfway between Python and system languages such as C++ or Rust. Following on from a job interview last summer, I also contemplated switching to a functional language, and more specifically to Elixir about which I had heard some great feedback from some former workmates.

alt text

But here’s my potentially unpopular take as to why these would have all been bad choices in the end:

Look for a secondary language that you know you will use, not for a language that you think you’ll like.

The main question you should ask yourself isn’t whether you believe that a given language or framework seems interesting or not. Because what you don’t want to happen, is end up investing time into growing some skills for 4 or 5 months, and then never find any concrete use-case to ever work with that language again. You’ll rapidly forget all that you learnt during these weeks of intense studying.

In my case, being relatively comfortable with Python and JavaScript, and more importantly havings tons of opportunities to utilise these languages both at work and outside of work, the choice became obvious. As learning TypeScript then became one of my goals for 2023 here’s how I would approach going through that process again if I had to:

  1. Mix up theory and practice: as in, don’t wait until you feel you’ve read enough studying materials before starting to write some code
  2. During your first weeks, focus on these typical programming challenges that we’ve all been through at some point in our learning journey. Build a temperature converter, a hotel reservation management system, etc.. You know what I’m talking about
  3. Use an online coding playground: Nobody wants to go through the hassle of managing packages or virtual environments, at least not in their first week. Pick a playground where the free tier subscription won’t allow you to save your work. This way, you’ll be forced to code everything from scratch again every time you start a practice session. I personally recommend using CoderPad in an incognito window. Later, feel free to install the language and whatever framework that you intend to use on your local machine
  4. Stay within the field(s) that you’re familiar with, but use this new language instead of the one(s) you’d normally pick: Typing “TypeScript data science” or “TypeScript data analytics” in your favourite search engine won’t return anything useful. And yet, I systematically started any new project that I wanted to work on directly in TypeScript. From visualising data to building statistical models and doing some natural language processing, I made sure I’d always give that new language a shot first. Worse case scenario, that will also force you to work without relying on third-party packages
  5. Look for opportunities to practice your new skills on the workplace: volunteer for anything that can help you practice your new skills, and try and push for any new project to be done in the language that you’re learning. Chances are that you’ll rapidly get stuck, which will take you out of your comfort zone
  6. Don’t allow dickheads to bring your motivation levels down, so avoid Stack Overflow like the plague. Look for help on Reddit instead
  1. Find yourself a podcast to listen to or some websites to learn from
  2. Whenever possible, go for Udemy courses over free ones on YouTube: that feeling of guilt that you’ll quickly develop is your best friend. This is how gym membership works: most people initially hate exercisig and only continue doing so because they’ve paid for some 3 month plan

What’s it going to be then?

Now that we have a methodology that we can stick to, it’s time we laid down our options:

  • Some tools that could benefit my career:

When I was looking for a new job last summer I realised that cloud technologies, and more specifically AWS were a base requirement in almost every single job listing. To be honest this is an area that I wouldn’t consider myself knowledgeable about, and getting a certification like the AWS Certified Machine Learning could fill that gap.

alt text

As I’m getting older, I’m also starting to feel less and less interested in freshly published machine learning papers and fancy concepts. In contrast, I’ve developed over the past few years a liking for the back-end side of things, and I could very well see myself experimenting with some cloud-based data storage service such as Snowflake (which we use where I work).

  • Something entirely new:

What I like about the vast world of IT, is that it contains so many interesting fields to explore that it would take over a lifetime to be competent in all. To tell the truth, I’ve been thinking for a while now about taking a network certifications such as Cisco’s CCNA, or even something more basic like CompTIA’s Network+. Besides, learning something new doesn’t necessarily have to be done with a career related objective in mind. The goal here isn’t to become an expert in a new IT field, but to know enough as to not sound like the person who wrote the following lines of dialogue:

  • A longer term objective:

Despite what its name suggests, a near year resolution can very much span across multiple years. Think of all the people who make the decision to stop smoking. Their plan isn’t to start smoking again on January 1st the following year, but instead to carry their resolution over for as long as they can. I won’t spend too much time om this now, but I’ve been contemplenting writing a technical book for a little while. The topic would be centered around utilising JavaScript as a second language for data science practitioners. I’ve gone as far as coming up with a fairly detailed table of contents but I doubt that I’ll find the motivation to go much further than that this year.

Final thoughts

So yeah, I still have no clue what I should be focusing on this year. But although I don’t want to fall into that “it’s the journey that matters not the destination” type of cliché, I really believe that going through this type of mental exercise at least once a year can be helpful to at least be able to come up with some sort of high-level plan. As briefly mentioned earlier, though most people tend to focus on what they want to do, I find it equally as important to actually know what would be a bad idea for you to invest some time into.