I'm leaving Cybersoft next year after almost six years. I counted the other day — I've shipped over 20 applications. HR systems, finance modules, fixed asset trackers, construction management tools, various MIS platforms. All for government agencies in and around Addis.
Most of them are still running. Some of them I'm proud of. A few of them I'd rewrite from scratch if I could.
What I got wrong
Copy-paste architecture. When you're shipping a new app every few months, you start copying patterns from the last one. Same data layer, same form layout, same stored procedure structure. It works until it doesn't. I built too many things that were structurally identical but conceptually different, and when one needed to evolve, the copy-paste foundation made it painful.
Not enough abstraction, then too much. Early on, I wrote everything inline. No separation, no reusable components. Then I overcorrected and started building "frameworks" that nobody else on the team could understand. The sweet spot — clean, simple, reusable where it matters — took years to find.
Documentation I wrote for myself. I documented things in a way that made sense to me in that moment. Six months later, it made sense to nobody, including me. I've since learned that documentation is for the person who comes after you, not for you right now.
What I got right
Finishing. Every single one shipped. Not all of them were pretty, but they all went live and real people used them to do real work. In an environment where half of government IT projects get abandoned, shipping was the most important skill I developed.
Learning SQL properly. Years of writing T-SQL for complex business logic gave me a deep understanding of databases that still pays off. When everyone around me was excited about ORMs, I was the person who could look at the generated SQL and explain why the query was slow.
Staying close to users. I spent time in government offices watching people use my software. Uncomfortable sometimes — nobody likes seeing someone struggle with something you built. But it made every subsequent version better.
I'm moving on to Necom next. New team, new problems. But the instincts I built here — ship it, watch it, fix it — those are coming with me.