Category: Talent Management

  • My Summer Reading List

    As many of us do, I have a much longer “To be Read” list than I have hours in the day to read. That said, I have a set of books I really plan to get through this summer, and I thought I would share (hey, it works for Bill Gates!). People who know me know I read, a lot. However I always fall into the trap of reading nothing but technology and business books. So in this list, I am trying force myself to include some broader material into my summer. The list is in no particular order, though.

    One Drum by Richard Wagamese

    This is one of those “not directly work related” books on my list (and really is first in my queue). Richard Wagamese (1955–2017) was an accomplished Canadian author and journalist of Ojibwe descent. He is best known for his works of fiction, non-fiction, and poetry that explore themes of indigenous identity, trauma, and healing. Wagamese’s writing was deeply influenced by his personal experiences, including his struggles with homelessness and addiction.

    In One Drum, Wagamese delves into a rich tapestry of Ojibway wisdom, known as the Grandfather Teachings. The book guides readers through essential life lessons—humility, respect, and courage. Beyond mere lessons, it also outlines accessible ceremonies, designed for anyone, in any location, solo or in a group setting. These ceremonies serve as practical tools to cultivate unity and interconnectedness.

    Stranger in a Strange Land by Robert Heinlein

    Purely a fun read. I have read Stranger in a Strange Land many times, but it has probably been 20 years. This has always been my favourite Heinlein novel, as it is full of provocative (especially for when it was written) ideas on religion, politics and sexuality.

    I recall the first time I read it, I was in grade 9 and had chosen it for a book report for school. When I showed it to my English teacher, he looked very concerned and asked, “Do you parents know you are readying this?” Of course they did – my mother recommended it!

    The CheckList Manifesto by Atul Gawande

    Ok, back to work! The CheckList Manifesto is an exploration of the role checklists can play in our professional and daily lives. The book asserts that checklists serve as a shield against failures, raising the bar for baseline performance. However, it also emphasizes that checklists are merely aids, and their efficacy is dependent on their utility; if a checklist does not help in accomplishing a task, it’s not fit for purpose​.

    I am looking at it from the perspective of “how can this help me tune processes in development and support?” Never know where you might find useful tools.

    Build by Tony Fadell

    Build by Tony Fadell is essentially about “how to build a transformative product-based business”. Fadell, known for his pivotal role in the creation of the iPhone and the founding of Nest, a smart home device company later sold to Google for billions, shares his unique journey and invaluable insights. The book charts Fadell’s career trajectory, including his early failures in smartphone development before the groundbreaking success of the iPhone, but it also promises advice for success at all career stages and tips for building successful product-based businesses and teams. The book provides a comparative analysis of Fadell’s guidance with the advice of other experts in the field, presenting a comprehensive resource for those aiming to create successful products, businesses, and teams.

    I am of two minds on this one, as I find these books are often way too anecdotal and seem to degenerate into “war stories” and “how cool were we” stories. Trying to keep an open mind though!

    The Language Instinct: How the Mind Creates Language by Steven Pinker

    The Language Instinct: How the Mind Creates Language by renowned Harvard psychologist and linguist Steven Pinker, argues that human beings acquire language primarily through an instinctual process. This instinct, which is guided by human instruction, naturally evolves as infants grow within their communities. Pinker’s work explores the fascinating intersection of linguistics, psychology, and child development, asserting that our capacity for language is not solely a learned skill but a fundamental human instinct​.

    This is another just-for-fun entry in the list. I have always been fascinated by language, how it developed, and specifically how it relates to our thought processes (is language necessary for cognitive thought? did intelligence come before language or did they co-evolve? Does the language we we think in constrain what/how we think?). This book is from 1994 but should still be interesting.

    The Order of Time by Carlo Rovelli

    More just-for-fun reading! The Order of Time by Carlo Rovelli is an exploration into the concept of time. In this work of philosophical science, Rovelli contends that time is not a constant or universally accepted entity as dictated by natural or scientific laws. Instead, he proposes that time is an illusion, sculpted by our individual realities and experiences. This innovative perspective invites readers to reconsider their understanding and perception of time​.

    Just something to keep my brain busy on a Saturday night!

    Clean Architecture: A Craftsman’s Guide to Software Structure and Design by Robert C. Martin

    Ok, pure work book here. I read a lot about “architecture” but tend towards discussions of specific architectures, practical considerations, pros and cons, etc. It has been a while since a I read about architecture in a broader, more general sense. I may actually have read all or part of this before, but anything by Robert C. Martin is typically worth revisiting.

    Clean Architecture: A Craftsman’s Guide to Software Structure and Design by Robert C. Martin, also known as Uncle Bob, presents a set of universal rules of software architecture aimed at improving developer productivity across the lifespan of a software system. The book builds on Martin’s previous works, offering not just options, but crucial choices for software success. It is filled with direct solutions to real challenges that could make or break projects. Readers learn what software architects need to achieve, essential software design principles for addressing function, component separation, and data management, and understand programming paradigms that impose discipline by restricting what developers can do. The book also provides guidance on the implementation of optimal, high-level structures for various applications and outlines how to define appropriate boundaries, layers, organize components and services. It discusses common pitfalls in designs and architectures and provides solutions to prevent or correct these failures. This book is considered a must-read for every current or aspiring software architect, systems analyst, system designer, software manager, and programmer.

    Staff Engineer: Leadership beyond the management track by Will Larson

    I came across this book last winter when I was thinking through a number of work-related challenges (replacing my Director of Development who had just moved on to a new opportunity, hiring/developing more senior resources for the dev team, and better defining what a career path in software/technology looks like especially for those not interested in management). I have read parts of this book already, but really want to read it cover-to-cover.

    Staff Engineer: Leadership beyond the management track by Will Larson is described as a valuable guide that elucidates the role of a Staff Engineer. Compiled from numerous interviews with established Staff+ engineers, the book offers diverse insights into the paths to becoming a Staff engineer and strategies to flourish at this level. Key ideas include self-scaling and growth, influencing others, and problem-solving. The book emphasizes the importance of writing for clarity and scaling oneself, investing time in high-value work, and balancing this with personal growth. It also underscores the necessity of being present in strategic meetings and taking the initiative to tackle and define problems.


    So there is my list for the summer (assuming I do not get distracted by something shiny!). So what’s on your list?

  • Introduction to Technical Debt: A CTO’s Perspective

    Introduction to Technical Debt: A CTO’s Perspective

    One of the most significant challenges faced by software companies (and as Watts S. Humphrey, the father of quality in software and CMMI, said two decades ago “Every business is a software business”) is managing technical debt. Adding to the complexity of the problem is the need to make the rest of the business understand what technical debt is, and how the business itself needs to own a significant role in its management..

    In this blog post, which is the first in a series, we’ll dive into the definition of technical debt, explore its types and sources, and discuss why it’s essential to manage technical debt effectively. 

    The goal here is not to explain Technical Debt to CTOs or other people in the technology group(s). I want to try to give you tools and language to help explain technical debt to the business, including the executive team, product management, etc.

    What is Technical Debt?

    Technical debt, a term first coined by Ward Cunningham in the early 1990s, is a metaphor that represents the additional work and costs incurred by opting for short-term solutions or compromises during software development. These decisions, while perhaps solving an immediate need or meeting a deadline, often lead to long-term inefficiencies and difficulties in maintaining or enhancing the software. Technical debt can be thought of as a metaphor for monetary debt, where borrowing money can help solve immediate financial problems but will incur interest and additional costs in the future

    Martin Fowler also has a great description of Technical Debt, or check out Wikipedia.

    Types of Technical Debt

    1. Code Debt: This type of debt arises from poor coding practices, such as lack of documentation, inconsistent naming conventions, and overly complex or redundant code.

    2. Design Debt: Design debt occurs when the software’s architecture and structure are not well thought out or implemented, leading to an inflexible or inefficient system. Note that Design Debt is not always due to badly executed or poorly selected design – often it can be traced to other problems like poorly defined requirements or time pressure. 

    3. Testing Debt: Insufficient or ineffective testing can result in undetected issues or vulnerabilities, which become more expensive and time-consuming to address as the software evolves.

    4. Documentation Debt: This form of debt is the result of inadequate or outdated documentation, making it difficult for developers to understand, maintain, or expand the system.

    Sources of Technical Debt

    There are several common sources of technical debt, including:

    1. Time Pressure: The need to meet tight deadlines often leads to compromises in code quality and design.

    2. Lack of Experience or Skill: Inexperienced or unskilled developers may introduce technical debt through poor coding practices or suboptimal design choices.

    3. Changing Requirements: As software requirements evolve, previously sound decisions may become outdated or no longer align with the project’s goals, creating technical debt. As well, efforts to make the system fulfill new and changing requirements can lead to Code and/or Design Debt

    4. Legacy Systems: Older systems often accumulate technical debt over time due to outdated technology, deprecated dependencies, or unsupported features. In addition, Legacy Systems can accrue technical debt merely by ignoring ongoing maintenance.  

    Why Technical Debt Needs to Be Managed

    Technical Debt needs to be managed, just as fiscal debt must be. Far too often I see Technical Debt treated as a purely technological problem which it is not. It is a problem which needs to be managed at an organizational level including all departments.

    There are valid reasons for taking on Technical Debt. Time to market is often one. Sometimes you have to “do what is necessary” and an 80% solution now is better than a 99% solution 6 months from now. This should be a conscious decision by the business however, not something that is hidden inside the Technology group and complained about by developers.

    Taking on Technical Debt without thought simply to achieve what are often arbitrarily defined timelines is not a good strategy. Doing so is like living your whole life on Credit Cards with no thought to how you are going to pay that debt off.

    I like to think of any Technical Debt decision in terms of risk and reward:

    • What are the business benefits or business value we are going to see from this choice (and over what timeline)?
    • What are the risks we are accepting by taking on this debt?

    In addition, no Technical Debt should be accepted without a plan for paying it off.

    Unmanaged Technical Debt has a number of impacts (and the longer it is left, the more it compounds, just like your credit cards):

    1. Maintainability: A codebase burdened with technical debt becomes increasingly challenging to maintain, leading to slower development cycles and higher costs.
    2. Scalability: Unmanaged technical debt can limit a software’s ability to scale or adapt to new requirements, stifling growth and innovation.
    3. Quality & Stability: High levels of technical debt increase the risk of defects and vulnerabilities, impacting the software’s overall stability and reliability.
    4. Team Morale: Continually working with a codebase riddled with technical debt can be frustrating and demotivating for developers, leading to reduced productivity and even attrition. Forcing developers to always do sub-par work just to make timelines is a sure way to break their spirits. 

    In the upcoming series of blog posts, we will delve deeper into the world of technical debt, covering how to identify, assess, and quantify it, as well as addressing it through development processes and cultivating a technical debt-aware culture. Additionally, we’ll discuss aligning technical debt management with business strategy and leveraging it for growth.

    Stay tuned for our next post on identifying, assessing, and quantifying technical debt, as we continue to explore this critical aspect of software development.

  • Mastering the CTO Handover: A Guide to Succession Planning in a Small Tech-Driven Company

    We all know the critical role technology leadership plays in driving the success of small, technology-driven companies. In today’s rapidly changing technological landscape, it’s essential for organizations to stay agile and innovative. Having a strong and capable CTO at the helm is vital for navigating these challenges.

    Succession planning is a crucial aspect of maintaining business continuity and ensuring a seamless transition when the time comes for the current CTO to step down or move on to other opportunities. While I plan to live forever, and have no intention of going anywhere, I have always seen it as a part of my role (no matte what my role) to ensure that there is a backup plan. It is a significant challenge for smaller organizations that cannot afford to have redundancy in all roles, especially highly specialized ones. In this blog post, I will share my insights on CTO succession planning in small technology-driven companies, focusing on best practices, strategies, and key considerations. By following these guidelines, your organization can successfully navigate the challenges associated with CTO transitions and foster long-term success and growth.

    The Importance of CTO Succession Planning: Why it Matters

    For small technology-driven companies, the CTO plays a pivotal role in shaping the organization’s technological vision and strategy. As the company grows and evolves, it becomes essential to have a well-structured succession plan in place to ensure a seamless transition when the time comes for the current CTO to step down or move on to other opportunities. Proper succession planning helps maintain business continuity, preserves the organization’s technological edge, and facilitates a smooth transfer of knowledge and leadership.

    In the absence of a well-crafted succession plan, organizations risk losing valuable institutional knowledge, experiencing operational disruptions, and facing challenges in maintaining their competitive advantage. By investing in a comprehensive succession planning process, small technology-driven companies can minimize these risks and ensure the ongoing success of their technology initiatives and overall business objectives.

    Understanding the Role of a CTO in Small Technology-driven Companies: Key Responsibilities and Challenges

    In small companies, the CTO is responsible for overseeing the organization’s technological infrastructure, research and development, product innovation, and overall technology strategy. They collaborate with other executives to align technology initiatives with business goals, manage cross-functional teams, and foster a culture of innovation and continuous improvement.

    The unique challenges and opportunities associated with the CTO role in small organizations require a tailored approach to succession planning. Smaller companies often operate with leaner teams and limited resources, making the CTO’s impact on the organization more significant. The CTO must also be able to adapt quickly to changes in the technology landscape, capitalize on emerging trends and innovations, and navigate the unique challenges faced by smaller companies.

    Key Competencies for an Ideal CTO Candidate: What to Look For

    The ideal CTO candidate for a small company should possess a combination of strong technical expertise, leadership skills, strategic thinking, and an innovative mindset. They should be adept at managing cross-functional teams, fostering a culture of innovation, and aligning technology strategy with the overall business objectives. Key competencies include:

    • Technical proficiency: A deep understanding of the organization’s core technologies, industry trends, and emerging innovations. The CTO candidate should be able to assess the current technology landscape and identify opportunities for improvement and innovation.
    • Leadership and communication: The ability to inspire, guide, and manage teams, as well as effectively communicate complex technical concepts to non-technical stakeholders. The ideal CTO candidate should be able to build and maintain strong relationships with colleagues and team members, driving collaboration and fostering a culture of shared success.
    • Strategic thinking: A forward-looking perspective that enables the CTO to anticipate future challenges and opportunities and develop long-term technology roadmaps. The CTO candidate should be skilled at aligning technology initiatives with the organization’s strategic goals and identifying ways to leverage technology to drive business growth.
    • Innovation and adaptability: A mindset that embraces change and encourages continuous learning, experimentation, and improvement. The ideal CTO candidate should be able to foster an environment that promotes creative problem-solving and encourages teams to explore new ideas and approaches.

    Building and Nurturing a Talent Pipeline

    A robust talent pipeline is crucial for successful CTO succession planning. Companies should invest in identifying and nurturing high-potential employees with leadership potential, technical aptitude, and business acumen. This can be achieved through the following methods:

    Identifying High-potential Employees: Spotting the Rising Stars

    Recognize and track employees who demonstrate exceptional technical skills, leadership qualities, and the ability to think strategically. Keep an eye out for those who are proactive, adaptable, and can excel in various roles within the organization. Develop a system for evaluating and identifying high-potential employees, considering factors such as performance, potential, and alignment with the organization’s values and culture.

    Implementing Mentorship Programs: Cultivating the Next Generation of Leaders

    Pair high-potential employees with experienced leaders, including the current CTO or other senior executives, to provide guidance and support in their professional development. This relationship allows potential successors to gain valuable insights, learn from the experiences of their mentors, and develop essential leadership skills. Encourage mentors to provide regular feedback and guidance, helping mentees build the skills and knowledge necessary for success in the CTO role.

    Offering Training and Development Opportunities: Empowering Employees to Excel

    Provide a variety of learning opportunities, including workshops, seminars, and online courses, to help high-potential employees enhance their technical and leadership skills. Encourage participation in industry conferences and events to keep them abreast of the latest trends and innovations in their field. Additionally, consider offering tailored development programs that address the unique needs and goals of potential CTO successors, equipping them with the tools and resources needed for success in the role.

    Developing Internal Candidates for the CTO Role: The Path to Leadership

    Internal candidate development is a critical aspect of CTO succession planning. Companies should focus on providing potential successors with opportunities to enhance their technical knowledge, leadership capabilities, and strategic thinking through targeted training, mentorship, and challenging assignments. This includes:

    • Providing stretch assignments and special projects that allow potential successors to demonstrate their technical and leadership skills while gaining valuable experience. These opportunities help employees build their capabilities, showcase their potential, and better understand the challenges and responsibilities associated with the CTO role.
    • Encouraging cross-functional exposure by rotating high-potential employees through various roles within the organization, giving them a comprehensive understanding of the company’s operations and technology landscape. This experience helps potential successors develop a holistic perspective of the business, fostering collaboration and strategic thinking.
    • Establishing clear career progression paths and setting performance expectations that align with the requirements of the CTO role. Regularly review employee performance and development plans, providing feedback and guidance to help potential successors reach their career goals.

    Attracting External Candidates: Expanding Your Search Beyond the Organization

    While focusing on internal development is essential, companies should also be open to considering external candidates. This can be achieved through the following strategies:

    Utilizing Executive Search Firms: Finding the Right Fit

    Collaborate with specialized executive search firms that have a track record of identifying and attracting top technology leaders. These firms have extensive networks and expertise in finding candidates who can bring fresh perspectives and experiences to the CTO role. Engage with search firms early in the succession planning process, ensuring they have a thorough understanding of your organization’s needs and expectations.

    Networking and Industry Events: Building Connections for Success

    Leverage industry events, conferences, and professional networks to connect with potential external candidates. Building relationships with technology leaders outside the organization can help identify talented individuals who may be a good fit for the CTO role. Attend industry events and conferences to expand your network, and consider hosting events or participating in panel discussions to showcase your organization’s thought leadership and commitment to innovation.

    Incorporating Diversity and Inclusion in CTO Succession Planning: Unlocking the Power of Diverse Perspectives

    Diversity and inclusion should be central to the CTO succession planning process. Companies should strive to create a diverse pool of potential successors, ensuring that candidates from different backgrounds, experiences, and perspectives are considered. A diverse leadership team can lead to more innovative solutions, improved decision-making, and better overall performance.

    To foster diversity and inclusion in the succession planning process, consider:

    • Establishing diversity and inclusion goals and metrics, tracking progress and adjusting strategies as needed.
    • Encouraging diversity in mentorship programs, pairing potential successors with mentors who bring diverse perspectives and experiences.
    • Offering targeted training and development programs that focus on building inclusive leadership skills, such as unconscious bias training and cultural competency workshops.

    The Onboarding and Transition Process: Ensuring a Smooth Handover

    Once a suitable candidate has been identified, a structured onboarding and transition process should be put in place. This should include the following elements:

    Orientation and Knowledge Transfer: Setting the Stage for Success

    Develop a comprehensive orientation program that provides the incoming CTO with an overview of the company’s technology landscape, business objectives, and organizational culture. Facilitate knowledge transfer by encouraging the outgoing CTO to document processes, share insights, and provide guidance during the onboarding process. Additionally, consider creating a transition team that includes representatives from various departments, ensuring a well-rounded and collaborative approach to the onboarding process.

    Shadowing the Current CTO: Learning the Ropes

    Allow the incoming CTO to shadow the current CTO for a period of time, enabling them to gain first-hand knowledge of the role’s responsibilities, challenges, and opportunities. This experience helps ensure a seamless transition and allows the new CTO to hit the ground running. Establish a clear timeline for the shadowing process, balancing the need for hands-on learning with the outgoing CTO’s eventual departure.

    Ongoing Support and Mentorship: Guiding the New CTO to Thrive

    Establish a support network for the incoming CTO, including ongoing mentorship from the outgoing CTO, if possible, and other senior executives during the transition period. This support network helps the new CTO address challenges, seek advice, and foster strong working relationships within the organization.

    Measuring the Success of CTO Succession Planning: Tracking Progress and Outcomes

    To ensure the effectiveness of the CTO succession planning process, companies should establish key performance indicators (KPIs) and metrics to track progress and outcomes. Regular evaluations can help identify areas of improvement and ensure the process remains aligned with the organization’s strategic goals. Some suggested KPIs include:

    • Time to fill the CTO position: Monitor the duration between the initiation of the search and the appointment of the new CTO.
    • Retention rates: Track the retention rates of potential successors and the new CTO to gauge the success of the succession planning and onboarding processes.
    • Internal vs. external hires: Compare the ratio of internal to external candidates in the succession pipeline to ensure a balanced approach.
    • Diversity metrics: Assess the diversity of the candidate pool, ensuring that it reflects the organization’s commitment to diversity and inclusion.

    Conclusion

    CTO succession planning is a critical aspect of maintaining business continuity and driving success in technology-driven companies. By following best practices and focusing on key elements such as talent pipeline development, internal and external candidate development, diversity and inclusion, and structured onboarding processes, organizations can successfully navigate the challenges associated with CTO transitions. A well-executed succession plan not only ensures a seamless transition for the CTO role but also contributes to the long-term success and growth of the company.