After years of leading the technology in a startup and due to a messy spin-off i ended up back in the original company without a technical team with me. And thanks to covid that situation has prolonged through the year.
Where I used to work with a team of 5 very talented engineers I was left alone with the responsibilities of all of them:
- Maintaining one android application written in Kotlin. With zero experience in the technology and in mobile development at all.
- Two react applications, one user-facing, and other inside team facing. I had 'some' experience with react but very little.
- One bidirectional integration with the spin-off application that slowly verged to other markets.
- One integration with a big customer ERP mainly on the 'other' app. Sort of proxy maintenance through the team in the spin off company. I even have access to their repo.
- One 6 year old Ruby On Rails project that has survived two business pivots and that binds everything together.
And on top of that a new project to integrate with an ERP (Odoo) to replace our invoicing, warehouse, and accounting software solutions. A least Odoo is written in Python and thankfully I had worked with Python a few years ago. But we chose a terrible vendor that kept letting us down in their deliveries and knowledge of Odoo.
When I realized all that, about 9 months ago I decided that like all troubles this was temporary.
I had to keep working as if I was about to hire a team again at some point and not give in to the recklessness that sometimes comes when we know we are not being watched.
I decided to keep the best coding practices and improve them whenever possible. Since then I've:
- Kept writing detailed pull requests and then moved on to trunk-based development moving the 'whys' and 'hows' of my code to commit messages.
- Balanced my tasks to reduce the time to fix whenever an exception popped up on the exception tracker.
- Reduce the time to release by automating the release drafts, keeping the CI working, and the various test suites green at all times.
- Taking every opportunity to update our project dependencies.
- Carefully monitoring the releases through the exception handling service(raygun) and automated log analysis(Corelogix)
- Investing in deeply learning Odoo. Hacking through the Python code whenever something did not work. Getting a virtual machine to run a development environment closely matching production. The VM snapshots have been a time saver for trying out new risky things. I know docker would work as well, but how easy would it be to add a full python IDE(Wing IDE) to docker to closely debug the app? in a virtual ubuntu was a piece of cake. I created a staging environment for the team to play on. Also a few scripts to reset the DB and finally I documented the process to recreate the VM.
- The spin-off company started with a fork of our Ruby on Rails app that was left with a ton of transition code that I've been almost completely cleaned off by now.
- I've kept myself reading every article I get my hands on about engineering management, hiring, leadership, and even about writing well. It is kind of sad that I can't immediately apply many of those things but I feel that when the time comes I will have a throve of strategies in my head to handle any situation that may arise and also it has allowed me to reflect on my mistakes with my previous team.
- I've started and got a hold of the habit of meditation. It has kept me sane through these difficult times.
- There were no other programmers in the company but there was a brilliant financial guy that I took under my wing to teach him some programming skills. He was already proficient in Excel but with my guidance, he built a crawler to automate his responsibility to compare our prices with the competition. He learned the structure of our database and I gave him read-only access to the DB to automate his work. He built a lot of tools and maintained them through my refactors even helping me push through some initiatives to plug holes in our data. He was a life saver, unfortunately, a huge (S&P 500 company) snatched him.
Recently I was tasked by our CEO to defined the tech strategy for 2021 and I'm excited because she's expecting me to propose a path to rebuild the tech team. The company will continue investing in tech so Tandem remains the best option for Multi-location companies with cleaning and supplies needs in México and Perú.
This has been a very tough year mentally, emotionally, and financially for me and the rest of the company. We've seen some of our best people leave for greener pastures but we've kept our heads up betting on a better and brighter future for the company.
I'm not going to lie and say I've not considered throwing the towel and head for the exit but I'm glad I have not because things seem like they are getting better for us next year. I haven't picked up any bad habits and I'm so ready to hire a few junior engineers and grow an awesome team together.