Learning in public

Apr 21 2020

/ 5 min read /

0 Likes β€’

0 Replies β€’

0 Reposts

Introduction

As software engineers, we're in a constant state of learning and actualizing our knowledge and skillsets. This is part of the job, and it's a vital one as it helps to keep ourselves relevant in an ever-changing industry. The amount of knowledge I've accumulated over the years gives me sometimes little vertigo, but that's nothing compared to what lies ahead of me and what remains to be learned.

I've felt very inspired by @swyx's concept of learning in public. His blog post "Learn In Public: The fastest way to learn" deep dives into the idea of sharing as much as possible what we're working on, what we learn, to become more than just lurker or content consumer and "to have a habit of creating learning exhaust".

I've been producing content for the past 2 years now on this blog, sharing some bits of knowledge here and there, but I want to scale that a bit more.

"open-source knowledge can scale just like open-source code" β€” @swyx

This blog post aims to be an updated list of what I've learned, what I'm currently learning, my sources and perhaps even some personal blog posts. I'll divide it into multiple categories, with a checklist and I'll tackle these items at my own pace. Maybe some of these items will pique my interest for just a few days and then give up on them because my priorities have changed or because something more interesting came along the way. But rest assured that I'll do my best to keep this as up to date and focused as possible.

How I plan to share what I learn

I identified three different ways to share what I learn. I called them relaying content, mix and match content, new content. This is how I would define them:

  • relaying content: I read about something and write about this same subject with my own words. I'm not talking about copy-pasting here but rather about adding your touch to that subject. Otherwise I'll simply share my sources for a given subject.
  • mix and match content: when learning about a concept, I might get inspired to try to write my take on this concept in a different context or using a different programming language or paradigm. An example of mixing and matching content I found was all these reimplementations of existing React patterns with the new React hooks back in 2019.
  • new content: I built something new and want to share it, I found a solution to a problem only I had or I'm sharing my own experience on some very specific subject.

My list

Here's the list of what I'm currently focused on learning including what I've already learned in the last few months:

Note:

Some items are still in progress, I'll make sure to add the resources I've used in the meantime until I decide whether a subject is worth writing or not.

Serverless

  • Basic serverless concepts Done
  • Deploy cloud functions on AWS Lambda Done
  • Use the serverless framework Done
  • Deploy some cloud functions with an API gateway Done

For these so far I've maily focused on the Serverless Framework's Serverless for frontend developer's class as well as The Serverless Handbook from @Swizec. I only used the Serverless framework when learning, I prefered using Vercel which was, in my opinion, the easiest to use (I still have to checkout how to host serverless functions in Netlify, I'm pretty convinced the UX/DX is similar than on Vercel).

It took me a while to find a use case for a serverless function, but I ended up finding one: Generating screenshot from code snippets. I wrote about it here in this post.

  • Deploy a server-side rendered React site with the serverless framework
  • Serverless GraphQL

NextJs

I'm late to the party on this one πŸ˜…

  • Basic concepts: Introduction to Next.js 9 Done
  • Build a sample app that leverages server-side rendering
  • Dissect and try to understand all the concepts and mechanisms that SWR provides.
  • Server-side rendering vs static site generation vs client-side rendering Done

Automate all the things

I've been focusing on this one since beginning of February 2020:

  • Writing my own Github action Done
  • Automating releases Done
  • Automated CI/CD Done
  • Get started with Semantic Release Done
  • Writing my own Semantic Release plugin Done
  • Setting up a High-Velocity Development environment for my team Done
  • Building my own preview deployment service Done

I wrote The little guide to CI/CD for frontend developers that contains everything I've learned when it comes to testing, automation, better release processes, deployments and overall anything that makes a team work faster!


Authentication

  • Learn more about JWT Tokens
  • Implement my own authentication service and deploy it

Typescript

  • Extend the Typescript compiler (docs)

JAMStack

  • Gatsby Theme authoring Done

I've been maintaining my own Gatsby theme for several months now and I'll probably write about it at some point. In the meantime if you're curious you can take a look at my theme's Github repository.

  • Everything I've learned (the hard way) when dealing with SEO and Gatsby Done

I wrote SEO mistakes I've made and how I fixed them that highlights the biggest mistakes I've made with my blog when it comes to SEO and the solution I brought to this problem. This post got a lot of feedback and somehow got ranked number 1 on Hacker News (see related Twitter thread).


Framer

I've always loved beautiful transitions/animations and wanted to get into using the tool that Framer built for a while

  • Do more reading about how to build meaningful transition and animation
  • Convert some components from css transitions/animations to Framer Motion Done
  • Demistify spring animations Done

I dedicated an entire blog post for this one: The physics behind spring animations.

  • Use Framer Web and try to build something cool with it 🀘

Design System

  • What are the good practices to build a scalable and user friendly Design System, and Design System Component

For this item I also want to write about what I learned and the mistakes I've made putting together a Design System, and Design System Component Library at Docker.


SwiftUI

  • Getting started with SwiftUI development Done

  • Learn how to build beautiful apps (animation, custom SwiftUI views and components) In Progress I've never done native mobile development before but I've always been attracted to it. With the release of SwiftUI, I believe the timing is perfect to finally dive into iOS development again. My main two resources I'd recommend for anyone willing to learn are: designcode.io and Hacking With Swift. Both these courses are extremely helpful and teach you everything you know to build iOS and macOS app.

  • Comparing SwitftUI to React development Done

I wrote Going native: SwiftUI from the perspective of a React developer to analyze some of the common design patterns between SwiftUI and React. I also plan to write another article that will focus exclusively on state management patterns which also share quite a few things in common with React. I hope these post will help some React developers to feel more comfortable with SwiftUI.

  • Rebuilding an existing application

I think this will be the best way for me to cement all the knowledge acquired regarding SwiftUI development. I think I'll start with rebuilding the app Calmaria which I like a lot! It's simple and elegant and I believe that after a few SwiftUI classes I should be able to rebuild a very similar app.

  • Building my own iOS app from scratch In Progress

If you follow me on Twitter you'll be able to find some screen recordings a couple of times a week of my progress building my first app 🀘.

  • Building a cross platform iOS/iPadOS/macOS app

Other learning in public inspirations:

Fetching Replies...

Do you have any questions, comments or simply wish to contact me privately? Don’t hesitate to shoot me a DM on Twitter.


Have a wonderful day.
Maxime


Β© 2020 Maxime Heckel β€”β€” Made in SF. Polished in NY.