on getting better
a common question i get from friends is how to get better at coding. not to say that im "good" at coding, but i think i have come a long way from where i started. one thing that has helped me improve consistently over time is being aware of not getting comfortable.
the gist is to try to find things to work on that feel like they are severely out of the scope of what you can currently do. the further out, the more beneficial. think far out.
some things ive worked on (or am currently working on) recently as an example:
- implementing uniswap v2/uniswap v3 from scratch
- writing a fast full-text search database engine in rust
- writing an EVM implementation in typescript
- writing a GPU driver
for example, for the rust db:
- i had no idea how i was going to write a database engine and had no idea where to start. up until this point, i hadn't written a large lower-level system like this before and had never written rust. i spent weeks reading up on things i didn’t understand, reading the code of other database engines, and learning rust.
- it was hard, i was confused a lot of the time, and i felt like i had no idea what i was doing. but after a couple of weeks, i got it working and was able to achieve the goal i initially set out with—a goal of < 1s full-text queries from large log files at disk. this isn’t directly related to the work i do every day, but i was able to extract valuable things from this that i could apply to my work at relay.
you don’t just learn new things, you also learn how to learn new things. and every time you pick up a hard project and complete it, you raise the bar on what you are capable of. try to find things that are very hard for you, set an insane goal, and work at it. worst-case scenario, you walk away having learned some new things. best case, you learn a ton.