Just days before last Christmas, I found myself spacing out during a Leetcode interview gone wrong. The two lads on the other side of the screen where running in circles trying to explain a poorly worded yet simple heap problem while I was once again acknowledging the perils of going against my gut feeling. About a month prior, I had reluctantly agreed to this, despite being still on sabbatical and ignoring a few clear red flags.
Up to that point, I had taken the process seriously, but was far from invested in the outcome. No wonder, my first instinct was to cut the interview short, once I realized it was going nowhere. Yet, I was curious enough to continue. As expected, it went downhill fast, for all the wrong reasons, so afterwards I politely asked them not to contact me for future opportunities. After all, finding humor in watching projects fail is not particularly a value I subscribe to. Coincidentally or not, that team went on to bigger and better things like carelessly paralyzing a decent chunk of the world’s transport infrastructure for about a week.
Still, there was a major silver-lining. It helped jump-start an honest introspection process around my goals and priorities. Was I going to continue to invest weeks at a time mindlessly memorizing theory and patterns that proved to be largely pointless for day to day tasks? Were there instead better ways to further my knowledge and career? Plenty of time over the winter break to think this through.
Fast forward to early February, I was finally aching to start building again. An idea had grown organically after months away from coding while engaging in a couple of creative pursuits and closely following several related online spaces.
Piece by piece, the opportunity to build a solution for bridging those gaps started to solidify. It came from watching random users bring up the same problems over and over again, some of which I was facing myself. The following couple of weeks were all about exploring and assessing if the project was both feasible and worth the otherwise large time investment.
It soon became clear that even in the context of a failure to launch, there were still plenty of benefits. You’d get the chance to develop a project in a holistic manner, while being completely self reliant every step of the way. It would force you to step out of your comfort zone and act as a versatile vehicle to tinker with new tech and gain practical insights on AI integration. Worst case scenario, you’d end up with a multi-purpose sandbox for quickly developing new proof of concepts, all wrapped in a tailor-made tool.
Then again, it was a potentially expensive leap of faith. Not only were you forfeiting a steady stream of income, but you could also end up with little to show for in terms of things that translate well during normal tech interviews. The risk was not unexpected, given the sharp market downturn, but it still required careful consideration.
To better understand the context and why it made sense, let’s rewind to last August. Back then, I had made the tough choice of going on sabbatical as a way to pause and rethink how I wanted my next decade to unfold, while also recovering from burnout. I knew I couldn’t stand still for more than a few months, but I had nothing lined up after that.
For several years prior, I went all in on a few intense projects, without paying too much attention to building a longer term career strategy. To the point where a former manager friendly reminded me good work is far from enough to guarantee momentum. If you’re lucky it gets rewarded, if not it only gets you more work for the same price. For example, you can rake in years of shadowing your managers and being fully responsible for the outcome of your projects, yet that only really matters if you’re able to secure a title to back it up. Especially in an industry haunted by the ghosts of ageism and typecasting. Despite all that, I was still fortunate to grow in many ways, yet the lack of intentionality in a shaky, shifting market was shaping up as a liability.
Switching from golden shackles to the great unknown was a leap of faith just as scary and isolating as it was liberating and transformative. Even more so, when bombarded with a daily dose of FOMO that can throw you in a spiral of second guessing every choice. There’s always a larger RSU package, the next, far better title or a project with enough leadership visibility to set you up for life. Yet, if you take on the challenge for the right reasons, it acts as an excellent proving ground for establishing healthy boundaries, character development and recognizing the environments you thrive in best.
Back to the project, I started it with absolutely no expectations. A way to test if I still wanted to stay in tech and going back to the core of why I had chosen this field over two decades prior. Just a mix of pure curiosity about how it could evolve, while refusing to cut corners and make my life harder few months down the road. Before long, I found an almost therapeutic effect in watching a complex piece of software come to life before my eyes.
I had purposely opted to start out with a very naive solution and iterate on that. It echoed similar patterns from my previous big tech roles where understanding the problem and putting the conceptual pieces in place were paramount aspects. Thus, I got better hands-on experience in product development, explored in-depth refactoring techniques, learned to adapt to naturally shifting architectures, and gained more practical insights into how early mistakes impact future development. A very interesting game of trade-offs centered around balancing complexity, velocity, and resisting the urge for premature optimization. A challenge that surely deserves its own separate treatment.
Come early May, I paused for a second to look back on the progress and check the status. As expected, the project had grown and it was in need of its first serious architectural refinement. In short, moving from the initial naive implementation to a more structured and reusable set of building blocks, modeled on recurring usage patterns.
Around the same time, I was also approached for another lead position. The team was well aware I was highly familiar with the questions they planned on asking and they could have also checked a great deal of my past work if they wanted to. That’s why I made a conscious choice not to cram beforehand as a means to double check team culture fit.
The interview went well, but ended up on an unexpected sour note with a request to recite the definition of a hash map, after a dozen other questions straight out of interview prep sites. I knew in that moment I value building things that solve real problems more than I do conforming to artificial expectations. They withdrew the role shortly after.
With this experience fresh in my mind, I decided then and there to commit myself to the project until development reached a more stable, autopilot mode. While I didn’t anticipate some of the more challenging steps that followed, each hurdle was well worth the effort. Gradually, the proof of concept morphed into something much more versatile and allowed me to integrate new use cases with substantially less effort. Sometimes within hours instead of days.
If you’ve never done this kind of sport before, you need to realize there are cases where progress can no longer happen through incremental changes. Which means you’ll have to sit through seeing your project break and just push through with the conviction that you can eventually put the pieces back together. It’s a daunting task but equally rewarding, once you overcome it.
This process also forced me to reason about feature prioritization and preparing an application for production when you lack corporate or venture capital resources. It’s essential knowledge for bootstrapped products like this, as it helps maintain a strong awareness of the impact on future marketing and early monetization.
Come late summer, I was eager to dive back into AI development after laying a solid foundation, so I had to reassess my understanding of the current ML ecosystem. Fortunately, much of early conceptual work transferred easily to this stage too. It ranged from finding ways to seamlessly combine different paradigms to reasoning about AI agent systems, while being mindful of compute limitations. It also helped cut through the noise and approach scientific literature from a more specialized and discerning perspective. In stark contrast with the confusing experience of aimlessly going through all AI/ML Coursera specializations, a year prior.
Back to the present, my focus has shifted to constructing an architecture that offers users a choice between fast inference using off-the-shelf AI API providers and local-first / edge privacy at the expense of slower speeds.
Looking back on this journey, I believe there’s value in documenting certain aspects of how it came to be. Not only because of the learning value and the potential business impact, but also due to its relevance to a couple of social aspects where there’s a lot of well manicured lip service and far less meaningful actions.
As I worked through the recent stages of this project, I realized there are ideas worth sharing which might help others navigate similar challenges. Over the next few months I intend to do just that, going into further detail on a few main topics.
Firstly, capturing the challenges of transforming a working prototype into a commercially viable solution. More precisely, the attention to detail in areas like infrastructure, security, privacy, performance, usability, and accessibility, to name just a few of the things that can make or break a successful landing. It’s an opportunity to document the lessons learned along the way, including examples of things that might not go according to plan and how to avoid that from happening again.
Another crucial aspect I look forward to exploring in depth is AI/ML — a field still sadly shrouded in hype and proselytism. Instead, my goal is to provide a more grounded and practical approach. One focused on solving real problems with minimal impact on development and maintenance, while keeping projects as future-proof as possible.
Additionally, I intend to write about managing burnout and work-life balance while maintaining high throughput and how that’s essential for long-term success. I’d also like to touch on different learning styles and gaining confidence to explore intimidating knowledge areas — ones that might seem daunting but can be conquered with the right tools and mindset.
As a side benefit of this exercise, I hope to hone my professional writing skills by providing earnest content rather than relying on cookie-cutter output generated at a growing number of tokens per second.
I’d love to hear your thoughts — whether it’s about similar challenges, insights on AI and development, or topics you’d like to see me dive into next. Feel free to share your experiences or ask any questions in the comments, or reach out if something resonates with you.
Top comments (0)