I’ve spent most of my career as an “Agency” developer. In the agency world, developers tend to be multi client facing positions. These roles require soft skills and context switching into new frameworks and languages. In this article I share how I’ve survived these roles by learning and applying the basics of Software Engineering and roadblocks along the way.
D.R.Y. To the Rescue: From React to Angular
In a agency environment, its not uncommon to be in a Vue codebase one day and switch to React the next. This happened to me with a client who needed help with their Angular application. My expertise was in React, and I knew nothing about Angular. Yet, thanks to the fundamentals I'd learned from senior engineers (and help from chatGPT), I was able to navigate the project with confidence.
The feature I needed to build entailed a new payment processing system. After some discovery and tinkering, I recognized the code I was using would need to be in multiple places across the app. As a junior developer, I probably would had copied and pasted the code making the codebase a nightmare to maintain. But I had learned a key fundamental principle: Don't Repeat Yourself (DRY) from senior engineers. This principle guided me to look for a better solution, even in an unfamiliar framework. After some research, I discovered Angular services, which are perfect for sharing business logic and data across an application. By applying the fundamental principle of DRY, I was able to find the right tool for the job in Angular, creating a more maintainable and efficient codebase.
From Node to Laravel: Navigating the Backend
My client's project wasn't just in Angular; the backend was built with Laravel, a PHP framework. My experience was with Node.js and Express.js. So I was again stepping into unfamiliar territory. However, my understanding of back-end fundamentals helped bridge the gap. For example, I noticed the way Laravel handles routes is similar to how Express.js does it. For example, both frameworks use a similar pattern of mapping HTTP methods (like get, post, etc.) to specific controller functions. I was also able to quickly understand how the codebase was structured, with separations between business logic, validation, and services.
When Lack of Fundamentals hurt: My Angular Roadblocks
While my foundational knowledge of Software principles has helped me with various clients, I’ve learned you still need knowledge specific to a tool. For instance, when I working with the angular client, I was dealing with a skills issue with RxJS operators like switchMap. I was able to work through this by the grace of God and a lot of grit but it was a struggle. If I had known Angular basics like reusable templates and the core concepts of RxJS, I could have solved problems much faster. This experience taught me that while foundational software principles are crucial, a working knowledge of a framework's fundamentals is what really unlocks efficient problem-solving. But no worries, I was able to meet my deadline despite the obstacles with the help of tools like ChatGPT and online resources.