Hello, and welcome to stories and strategies from converting to TypeScript with me, Josh Goldberg. To start off, hi, I'm from upstate New York. I'm a front end developer on the web platform team at code academy, previously Microsoft, and I'm a cat dad.
My wife and I have a few cats. They're very cute. All the stuff in this presentation is available on my website under the slides link under this talk at joshuakgoldberg.com. This presentation does include several looped animated images. If those are distracting for you, I would recommend viewing them in PowerPoint, which allows you to pause them.
As for an agenda, first, we are going to talk about code academy in 2019 before we made the jump to TypeScript, how we made that decision to jump to TypeScript, some of the techniques we used for knowledge sharing on the team, technical details of what we did in order to make that jump, and then some of the learnings we got at the end throughout the process, things that you might be able to use in your conversions, I hope. Good stuff.
Starting off, where was CodeCademy before TypeScript? Let's take a step back all the way to early 2019, a simpler time. We had a main front-end app, which at the time consisted of about 2,000 files of react and Redux, a few more files in a separate design system, which itself was converted to TypeScript as a proof of concept, and most team members had really only vaguely heard of TypeScript. There wasn't a big topic or knowledge point on the team. The team itself was pretty small. It was only around 20, maybe 30 engineers at tops. Most of the people didn't really have TypeScript experience and there was, as with any engineering team, ongoing work around features and bug fixes.
So how did we do it? How did we make that switch to TypeScript? First, we made the decision that we wanted to do it in the first place, and when there's a will, there's a way, but there has to be a will. Any architectural shift should have the informed support of its constituents. I think a lot of people, especially those who are new to a team, make the mistake of immediately trying to jump to conclusions and push an agenda, send out proposals, which a lot of the time is a mistake just to do that immediately. It's a good idea to soak in the experiences of being a developer on the team, talk to people, get a feel for what the real issues are, and then use that to inform your decision making around what to push and how. Don't get me wrong. I'm not trying to devalue coming into a team with a fresh perspective and trying to get people to understand and listen to that perspective. That's great. That's commendable. Teams should absolutely be open to you coming in with fresh ideas, but those fresh ideas and perspectives are much more likely to succeed if you validate them with those around you, if you can convince people of their validity. So don't be a brat. Definitely talk to people before trying to push them to do things. If you do want to push people to do things, I highly recommend make some kind of hype train for it. If there is some switch you want to make, say a TypeScript, you want people to feel it. They should be excited in their bones.
Comments