To grow faster, read more
As developers, we often find ourselves wondering how we can progress to the next level. This desire is often accompanied by us attempting to learn new technologies, languages, and design patterns.
To learn these things we typically seek out tutorials, books, and guides. While this approach can be useful for understanding the basics, it rarely exposes us to real-world scenarios, architectural decisions, and trade-offs that are crucial for our growth.
This is largely because we often have a narrow understanding of what we don't know and what we need to learn. We may know that we need to learn GraphQL and so we seek out tutorials that expose us to Apollo and Prisma but then we lack the understanding of how we might use things like field resolvers, or how to structure our schema in a way that's maintainable and scalable.
Instead, we typically make our largest progressions in terms of growth as we transition through our careers; changing roles, projects, and teams. These transitions expose us to new codebases, architectures, and ways of approaching problems, which in turn help us grow and become better developers. This also is because we're forced to train our comprehension skills to understand the new environment we're in.
So, how can we replicate this growth without changing jobs or projects? The answer is simple, you need to read more. Not just tutorials, but real-world codebases.
The Importance of Reading Code
Reading code is a crucial skill that's often overlooked particularly when you're less further along in your journey as a developer. When you're starting out, you'll typically only work on your own code, and while you may use packages, you rarely have to understand how those packages work under the hood.
As a result of this, you may find yourself developing a knee-jerk reaction to code you don't understand. This is a natural response, typically fueled by a slight hint of imposter syndrome. While it's natural to feel this way, it's also important to overcome it and learn to read and understand other people's code.
By building the habit of reading and comprehending other people's code early on, you'll start to develop a better understanding of different coding styles, architectures, and problem-solving approaches. This will not only accelerate your growth but also make you a better developer overall.
While it's easy to say "read more code", it's not always clear where to start. Tutorial codebases are often too simple and don't expose you to the real-world scenarios and trade-offs that you'll encounter in production code. Books and guides can be helpful but typically also have the same problem.
So, where can you find real-world codebases to read and learn from?
Leveraging Open Source for Growth
One of the best ways to learn is to find open-source projects that use the technologies, libraries, or infrastructure you're interested in. Don't just rely on a single project, though. Look at several projects to get a well-rounded understanding of the different approaches and trade-offs.
Tools and services like GitHub, Grep.app, and SourceGraph make it easier than ever to search for and explore open-source codebases. You can search for the usage of specific libraries, trending repositories by language, and more.
By reading and understanding how others are solving problems and the trade-offs that they're making, you'll gain valuable insights and be better equipped to tackle similar challenges in your own projects. As you become more experienced you may also find yourself contributing to these projects, which is a great way to give back to the community and grow your skills even further.
This approach will help you transition from "I don't understand how to do this" to "I've seen this or something similar before, and I know how to approach it". This is a powerful shift that will help you grow and become a better developer by helping you become more confident and autonomous.
The Meteoric Rise of Open-Source Startups
In recent years, we've witnessed a surge of startups embracing open-source as a way to build trust, foster community, and give back to the developer ecosystem. This includes both traditional commercial open-source startups like Documenso, as well as more proprietary-oriented projects coming out of accelerators like YCombinator.
This trend has created a wealth of open-source codebases that you can learn from, covering everything from developer tools and SaaS applications to infrastructure and beyond.
Keep It Simple
Learning is a continuous process, and it's essential to find effective ways to grow and stay up-to-date with the latest technologies and best practices. While reading tutorials and blogs can be helpful for base-level knowledge. Diving into open-source codebases will expose you to real-world scenarios and help you develop a deeper understanding of coding principles, architectures, and trade-offs.
So, if you're looking to level up your skills, don't just read narrow tutorials – read code. Explore open-source projects, understand their approaches, and learn from the decisions and trade-offs made by developers of all skill levels.
It's a simple, yet powerful way to accelerate your growth and become a better developer faster.
Bonus - Repositories Worth Learning From
These are some of my personal favourite places to read through and learn new things, I make a habit of opening them on github.dev so I can quickly and easily browse the code as if I were using my local editor.
Name | Description | Languages & Technologies |
---|---|---|
Documenso | An open-source signing platform like DocuSign. Soon to become the open-source signing infrastructure solution. | TypeScript, Next.js (App Router), tRPC, PKI, Prisma, Turborepo, TailwindCSS |
Unkey | Open-source API management for developers to build and scale their APIs. | Typescript, Next.js (App Router), tRPC, Drizzle, Turobrepo, TailwindCSS, CloudFlare Workers, CloudFlare Queues, Tinybird, Axiom, Trigger.dev |
Hanko | An open-source authentication and user management solution with a focus on moving the login beyond passwords while being 100% deployable today. | Golang, OAuth, Passkeys, WebAuthn, Preact, Web Components, JWT’s, SQLx, GoBuffalo, Echo |
Meilisearch | An open-source search API capable of serving your documents lightning fast. | Rust, Tokio, Actix Web, Serde, Stemming, Indexing, Faceting, |
OpenBB | An open-source financial terminal helping analysts perform investment research. | Python, AsyncIO, Beatuiful Soup, Plotly, Numpy, Pandas, FastAPI |