Scaling Software Development: Teams & Codebase
This was a talk I gave in a few conferences in 2019. For now, I’m gonna share the slides and the video, but at some point I might turn it into a written article if I think it’s worth it (let me know if that’s something you’d be interested in reading).
Talk Description
If you are an engineer or someone who recently learned to code, you’re familiar with the process to work on a software project: setup your development environment, write some code, commit and push changes to your repo (hopefully), and deploy your application, simple like that. I mean, simple if you are working alone, on a small personal project. When the development team and the system start to grow, things need to change to be able to scale efficiently.
This talk is about the challenges of scaling software development, multiplying team size and system complexity, and some strategies to deal with them. Including but not limited to: team sizes, system design & code organization, quality assurance and automation/DevOps.
Disclaimer: The use of the word “scaling” is usually associated with improving system performance and availability for a greater capacity of users/requests/etc. This is not what this talk is about. Like the name says, this talk is about scaling the development process, mostly focused on codebase and teams, but also touching on quality assurance and delivery.
Why this talk?
The internet is full of resources on how to learn how to code or build your first web page or mobile app. There’s also a lot of content for more advanced applications, how to scale certain technologies or use new frameworks. But the transition right between a small personal app to a real life software product, with practices that modern tech companies are using is something not a lot of people talk about. Yet, this is a very important topic that everyone involved in a product development life cycle (engineers, PMs, QA, etc) should understand in order to take their product, organization and careers to the next level.
This talk intends to clarify this transition and expose some of the common problems organizations go through when scaling their software development process and how modern tech companies are solving them.
Disclaimer 2: This talk is not intended to cover product management strategies or advanced software development workflows that are technology specific. It is more like a collection of general practices and tools to transition small projects into larger projects and enable people to collaborate on software development efficiently. Early stage startups and software engineers without much experience working in larger products and teams would be the ones to benefit the most from this talk’s content.
Video
I presented this talk in a few different conferences, the video below is from Women Who Code CONNECT Asia, that happened in Singapore on August 31st, 2019.