Infusing Consultancy Insights into Product Development
Hey, my name is Juntao. I am a developer, a YouTuber and an author. I help people write better code. In this SubStack, I share tips and tricks I've learned along the way, including best practices for writing clean code, techniques for effective refactoring, and strategies for implementing TDD in your projects.
I'll also share some of my favourite productivity tips for staying organized and efficient so that you can be your best developer.
Today, I'd like to discuss applying a 'consultant mindset' to a product developer role, a perspective I'm convinced can elevate a developer's career.
Grasping the Core Problem
Having dedicated over a decade to software consultancy, I've consistently emphasized hands-on tasks, striving to limit prolonged discussions or meetings that sidestep direct coding. Nevertheless, the consultancy work style has deeply influenced my professional approach.
The nature of project-based work compels consultants to extract invaluable insights from each assignment. Each undertaking becomes a case study, enriching your experience and preparing you for future endeavours. Consultants are therefore, driven to immerse themselves in the narrative behind every task. Merely resolving an issue only scratches the surface. Truly effective consultancy requires diving deep to comprehend the broader scenario, identifying the root causes, and, subsequently, proposing holistic solutions.
Embracing the Journey
Every product or project we undertake represents a chapter in our ongoing learning journey. It's not just a task to be completed but a unique set of challenges, experiences, and insights that can be carried forward. Drawing from my consultancy background, I've found it invaluable to treat each product implementation as a consulting project. Why? Because this perspective transforms our engagement with the work at hand.
When we see our product or project from this consultant's lens, we begin to ask different questions: "Which patterns have we employed here, and why? What alternative approaches might be viable? What constraints are we operating under, and how can they be navigated or even turned into opportunities?"
This mode of thinking pushes us to dissect the product or project not just for its current requirements but as a rich learning experience. It's about harvesting knowledge—identifying reusable solutions, recognizing recurring challenges, and understanding the deeper rationale behind each decision.
And as with any consulting assignment, the insights gleaned aren't just limited to the current endeavor. They become a reservoir of wisdom to be tapped into for future projects. What we learn in today's product can very well be the solution for tomorrow's project challenge.
By adopting this mindset, our relationship with the product transforms. We aren't just developers or contributors; we become perpetual students and strategists, always seeking to extract, apply, and adapt our learnings across the spectrum of our professional journey.
Objective Perspective: Beyond the Codebase
One of the most enlightening lessons I've gathered from my consultancy days is the value of occasional detachment. As developers, it's easy to become deeply enmeshed in our codebase—to the point where we view ourselves merely as contributors to the lines of code. This narrow viewpoint can, at times, prevent us from seeing broader opportunities, innovations, and potential pitfalls.
Taking a step back allows us to entertain pivotal questions: "What if we approached this feature differently?", "How might we streamline this process?", or "How can I maximize the potential of this codebase or product?" These queries propel us beyond the day-to-day tasks and into the realm of strategic planning, innovative thinking, and proactive problem-solving.
By distancing ourselves just enough, we start to see the codebase not as an assortment of lines and functions, but as a living, evolving entity within the product's ecosystem. This perspective helps in prioritizing impactful changes over trivial ones, foreseeing potential issues, and aligning our coding endeavors with the overarching product vision.
In essence, it's not about being detached or indifferent but about fostering an objective perspective that prompts us to be not just contributors but visionary architects of the product's future.
Effective Showcasing
An essential aspect of consultancy is effective showcasing. A foundational principle here is creating impactful presentations for your audience. This includes outlining the challenge, presenting your solution, and backing your strategies with concrete data, charts, and visuals.
It's vital to sidestep dense technical jargon. If certain terminology is unavoidable, it should align with your audience's understanding. Consistently providing context is crucial. Keep a pulse on your audience's grasp of the topic; many might be reluctant to express their uncertainties.
This art of clear communication is pivotal, whether you're a consultant or a standard developer. Regrettably, many developers lean heavily towards execution, often sidelining clear articulation. This oversight can be detrimental.
Embracing Continuous Learning
In established product teams, foundational choices around tools and technologies are typically set in stone. If you step in mid-way through a product's journey, a sizable portion of your role might center on upkeep, preserving the status quo. Significant overhauls become infrequent.
Yet, this shouldn't hinder your developmental trajectory. Push your boundaries. Delve into a neglected design paradigm or a sidelined feature within the codebase. Enhance your skill repertoire by honing competencies like effective presentations, mentoring, sharing insights, creating detailed documentation, and fostering clear communication.
For instance, if you see potential in integrating react-testing-library
with jest-axe
for accessibility testing, broach it with your team. It might be a revisited topic or a fresh idea. Either way, there's learning in the engagement. If it's uncharted, you're poised to drive a significant shift in the codebase.
Conclusion
Migrating from consultancy to a product-driven role presents a tapestry of challenges and rewards. This transition accentuates the imperative of deep problem comprehension, lucid solution presentation, and an unwavering commitment to learning. By merging the fluidity of consultancy with the rigidity of product teams, we metamorphose into holistic contributors to our field.