I'm currently employed as a software developer with a year of experience in a large company that isn't well-known for software development. I mostly create internal tools and apps for my department and non-technical employees. As I'm the only developer in my team, I have full control over the projects, but I feel like I'm missing some fundamental knowledge since I didn't start as a junior developer.
I'm looking for advice on how to better structure my projects, develop Minimum Viable Products, and create class diagrams. I want to improve my understanding of software engineering principles, particularly as project scopes expand and I realize the gaps in my skills. Currently, I'm reading "Software Engineering 9th Ed" by Ian Sommerville, but I'd love to know about other resources or strategies that could help me fill these gaps and grow as a developer.
6 Answers
This is a common experience for solo developers! While books like Sommerville provide solid theory, practical insights from real projects can be more beneficial. Check out some open source repositories related to your stack and study how they structure their code, handle services, and organize tests. Familiarizing yourself with basic design patterns like layered architecture and clean architecture will make it easier to manage larger projects. And don't forget to sketch out basic designs before coding; even simple diagrams can help clarify your vision.
Being a solo developer early in your career is challenging but also a great learning opportunity! Since you're the only one doing this, try conducting small "design reviews" with yourself. This means thinking critically about the decisions you're making and how they affect the project. It’ll help you spot areas for improvement and solidify your understanding as you go along.
Being a solo dev with just a year of experience is actually a great opportunity — you're making architectural decisions that many don’t touch until their third or fourth year! Instead of focusing heavily on theory, take a project you've done and try to refactor it. Also, explore real codebases on GitHub that use your stack. Observing how they organize their projects will teach you a lot more than textbooks will. For project structure, consider reading "A Philosophy of Software Design" by John Ousterhout; it’s practical and avoids unnecessary theoretical fluff. Finally, don't get too caught up in UML diagrams; focus more on understanding when to split modules and how to manage dependencies between components.
That book is a classic! To start off, think about what's required for your Minimum Viable Product (MVP) and break down your design into manageable layers. You don't need to document every detail right away; just start coding and refine as you go. Remember, if something doesn't work, it's fine to backtrack or even discard earlier code — it’s all part of the learning process. Also, since you're the only dev, exploring Stack Overflow or AI tools can be a good way to get different perspectives and solutions.
Pick something you’re passionate about! Whether it’s sports, nature, or genealogy, find a way to create a project around it. For example, you could catalog bird calls or build a web scraper for family histories. This kind of personal project will help you apply what you've learned, refine your skills, and make the learning process much more enjoyable.
Think about how you get your projects done now. The main difference in working for others versus yourself is essentially the pay structure. You’re already solving real problems — just write down your workflow as a "Generic" process. Analyze what issues your software is addressing and how you can replicate that approach for your own projects. Find a personal interest that you can turn into a project, like cataloging bird calls or something similarly engaging. It’ll keep you motivated as you learn!

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically