3 min reading time

Scaling with Legacy Code - My Advice for Developers

As LearnUpon CTO and co-founder, programming is my life. For over 16 years, I’ve worked in the eLearning industry, building and implementing learning management systems. And since it launched in 2012, I’ve been scaling LearnUpon’s app to support over 5 million users worldwide. And that user base is going to continue growing.

When ITkonekt Belgrade invited me to share my experience of taking LearnUpon from startup, to 1.0, to 2.0 and beyond I jumped at the chance. My decision may have been slightly swayed when I heard Robert Martin (Uncle Bob) was going to be there. I’m a huge fan of his book, Clean Code, and admire how he communicates complex coding challenges in a simplistic and funny way. 

Honestly, it wasn’t just Uncle Bob. I wanted our Belgrade team to down tools and grasp the opportunity to talk to other developers and companies that are facing exactly the same scaling issues that we are. And we can learn a lot from each others experiences.

Our community is growing rapidly, and the demand for our skills is not going to ebb anytime soon. According to Uncle Bob, the number of new developers doubles every five years. That’s a lot of eager devs, searching for the right start in their career, trying to answer complex questions. What technology should I learn? What language? Should I focus on back-end, or front-end, or both? Can I even do both?!

When I started out, developers were just developers! I coded everything. From large scale database migrations to css/html/javascript using just C++. If you look at that same job today, that coding is now handled by DBAs, DevOps, SRE, UI/front-end devs, back-end framework devs and then throw in some QA automation for good measure.

The way we code will continue to evolve. Scaling is always going to be difficult. We have to be ready to adapt how we code and work together. So here’s my advice for developers:

  1. Learn as much code as you can. Study different programming languages, even if you’re not using them. You’ll be amazed by the learning experiences that will come from that. A pattern that is super in GO may be something you can apply to your Java coding or vice versa. Spread yourself across many forms of coding standards and you’ll see the benefit in your code.
  2. Bend the framework to meet your needs. Great design patterns and methodology, makes for great software. But with a vast array of coding tools, languages, styles and who knows what IDE, we’re overloading ourselves with too many choices. And that’s all before we consider the framework we’re using, which tends to take us away from these basic design patterns.
  3. Go back to basics and pick up a software design book. No matter what happens, automation, machine learning, AI, you won’t be able to scale if you don’t apply best practice principles to your design patterns and architecture.
  4. There’s no such thing as perfect code. Write code with bugs. Break things. The learning experience you’ll get from making mistakes and fixing them will make you a better developer.
  5. We’re human. Not only that, we’re introverted souls. Using Agile and Scrum, processes that need us to be extroverted so we can express our opinions in stand-ups, refinement meetings, retros, doesn’t come naturally. We need to find better ways to communicate, for ourselves and the teams we work within. 

Finally, for CTO’s like me. We also need to embrace this advice. It will help us build great software and great teams. Your legacy code is depending on it.

Download Des’s presentation, Scaling with Legacy Code, here.

 

See Open Positions