This post is part of Series: Being a programmer again
Today was my last day at Zed Industries. I spent 5 months learning Rust and contributing to the Zed Editor.
I am grateful to Nathan, Max, and Antonio for letting me do this experiment. I am also grateful to the rest of the team for bearing with me 😅.
The original contract was for 6 months, but I decided to end it a month earlier to focus on what’s next. It was clear I wouldn’t be able to reach the experience needed to help the company within a 6 month period. We were hoping that wouldn’t be the case, but we all knew that was very likely to happen.
I came a long way since January, though. I have started understanding, writing, and—dare I say—liking Rust 😃.
I have opened 32 pull requests since January. Most were small contributions and bug fixes. Here are a few noteworthy highlights:
- Add a newline above the current line and move cursor there
- Add a terminal button to the status bar with a terminal count
- Improve context menu position consistency when it pops up
- Add a terminal icon to terminal tabs
- Introduce Reveal in Finder
- Remove contact from contract list
- Create files passed as an argument to Zed CLI if they don’t exist
That’s not much, but remember I didn’t know anything about Rust and the codebase. I also had a 12 year gap from being a full time programmer. To make things even more difficult, I left programming at a higher level. Zed needs more low level stuff because of the nature of the product.
Although I would love to continue at Zed, I have to be pragmatic and move on.
Learnings and thoughts
- Rust is difficult.
- Zed has a lot of home built code that may change often and it’s not documented.
- Home built code is Zed’s strength as it needs to be extremely fast.
- Code that changes often and is not documented doesn’t go well with newbies.
- Zed relies on pairing. It’s part of its DNA as a company.
- Knowledge transfer happens during pairing.
- Pairing is very cool for moving quickly.
- Pairing is a great way to review pull requests.
- I am in Europe. Most of the team is in the US.
- Overlapping in order to pair meant I had to wait until later in my afternoons.
- Ending often way into my evenings, with not much energy left during pairing.
- The synchronous nature of pairing is not always compatible with how I work.
- Context may get lost during pairing. Unless people write down summaries.
- Having said that, I should have paired much, much, much more.
- I consumed too many books, tutorials, and bootcamps.
- Instead, I should have written more code as a way to learn.
- Focusing on a small area of the editor might have been a better strategy.
- It might have changed the outcome, although not guaranteed.
- Rust is difficult. (duplicate on purpose)
- Once you understand Rust and its intricacies, you love it.
- Rust made me appreciate Elixir more.
- Zed Industries is the 6th company I’ve worked with in my career.
- All companies have more or less similar challenges and struggles.
- Tooling is overrated. Behavior and teamwork matters more.
- Tooling may only help if everyone is on the same page.
- You always need a simpler tool, trust me.
- You always need fewer tools.
- I don’t regret the time I have spent at Zed Industries.
- The team at Zed is very smart. Zed, the editor, has a bright future.
- The founders at Zed are very cool folks, with a great vision for the editor.
- I am leaving with the best memories, learnings, and impressions.
- I love creating again, and I can’t wait to find my niche and show what I can do.
- I am more excited than ever for the possibilities that lie ahead.
What’s next
I have started thinking about what I should focus on next. I love Elixir and I want to go back to where I left things. I also love the idea of building a game. I have to continue making a living, so, I need to figure out how that will happen. The idea of going solo attracts me, but I need to research things a bit.
Games
I want to build my first game as an indie programmer. I am going to use DragonRuby, and it’s going to be a 2D, possibly having retro influences.
I also want to build a multiplayer game using Elixir, as a proof of concept. I want to witness how it holds up as advertised of being capable of handling numerous concurrent connections without sweating.
I will continue blogging about my journey here, of course. I am also building in public on Twitter if you would like to follow me.
What are you up to Petros?
Staying calm. Indie 2D retro style game dev wannabe. Check what I am doing now.