Keeping it Lean: Building the Bare Essentials for Project Management

When you’re running a project that needs to stay lean — and I mean lean like taking a cargo bike to grab groceries instead of a 2+ ton automobile that’s slower, more cumbersome, and way overkill for the job — the tools you choose and the processes you define matter as much as the work itself. It’s easy to go overboard, drowning in Gantt charts, sprint boards, and daily standups that spiral into mini-retrospectives. But what if the goal is simplicity, agility, and clarity?

Let’s break it down.

1. Define Your Central Hub

The first thing you need is a single source of truth. This doesn’t mean a bloated Jira instance with workflows for every imaginable scenario. For a lean project, a simple Kanban-style board can do wonders. Tools like Trello or GitHub Projects (especially if you’re already using GitHub for version control) offer clean, intuitive interfaces that keep everything in one place.

Continue reading “Keeping it Lean: Building the Bare Essentials for Project Management”

The Role of a Principal Engineer: Strategic Vision and Tactical Execution

I just wrote a post about principal engineers and the purpose of the role. I wanted to elaborate a bit more about strategic influence and tactical implementation, thus I present this post. Cheers!

In any high-performing engineering team, the Principal Engineer role is uniquely positioned to influence both the day-to-day and the bigger picture. They wear the hats of both mentor and visionary, technical architect and pragmatist. This post is a deep dive into the core tenants I outlined before—because bringing each of these to life is where the real magic happens.

Technical Vision and Strategy That Scales

Strategic Influence: A Principal Engineer’s vision isn’t just about the project’s success—it’s about aligning technical goals with business outcomes, anticipating future needs, and charting a course for scalable growth. They take the long view, ensuring that each architectural decision today supports the needs of tomorrow. This means understanding where the company aims to be in five or ten years and building systems that can grow without creating excessive technical debt.

Tactical Implementation: To implement this vision tactically, a Principal Engineer uses an iterative approach. They document the architecture, outline performance benchmarks, and integrate architectural reviews into sprints. Tactical steps might include establishing microservices where modularity is beneficial, employing a well-planned API strategy, or implementing event-driven architectures that allow scalability. They routinely assess the current state, asking questions like, “If we double our users tomorrow, will the system keep up?” Each change made is documented to create a record for future engineers and ensure continuity.

Continue reading “The Role of a Principal Engineer: Strategic Vision and Tactical Execution”

A few words on getting into Computer Science in 2024 and on?

The journey into advanced software development can feel like plunging into a tumultuous ocean. At first, there’s the excitement of learning—those ‘aha’ moments when distributed systems suddenly make sense, or when the intricacies of concurrency click into place. But once you pass that initial rush, the reality sets in. It becomes clear that mastering these topics isn’t just about understanding technical nuances; it’s also about navigating a web of complexities that intertwine across systems, tools, and people.

This journey brings its fair share of frustration and existential concern. As you go deeper, you start grappling with problems that feel abstract and distant, yet profoundly impactful: distributed state consistency, data synchronization, avoiding deadlocks. You realize that these issues aren’t just technical puzzles; they represent the invisible backbone of everything you’re building. And it’s overwhelming to think how fragile these systems are, how they’re held together by code you and your team write, and how any tiny oversight can cause cascading failures.

Yet, perhaps the most exhausting part isn’t just the code; it’s the human element. Once you develop the social skills to communicate these technical complexities to people at different levels, you realize the challenge isn’t just the knowledge—it’s helping others grasp it without drowning them in details. It’s like being fluent in a language others only have a basic vocabulary for. You spend time rephrasing, simplifying, and drawing analogies, only to have people nod, agree, and repeat the same mistakes next week. They’re not at fault; these are tough concepts. But it can be isolating, being the one person who sees the problem three steps ahead while everyone else is still figuring out step one.

Continue reading “A few words on getting into Computer Science in 2024 and on?”

Building a High-Performing Engineering Team: Strategies for Recruiting, Retaining, and Growing Talent Across Junior, Mid-Level, Senior, and Principal Roles

Building a diverse and inclusive engineering team at multiple levels—junior, mid-level, senior, and principal—requires thoughtful leadership, precise recruiting, and a clear vision for growth and success. As demonstrated through my extensive experience in recruiting, making hiring decisions, and fostering an environment that retains talent, the importance of addressing the needs of engineers at all levels becomes paramount.

The Core Needs for Building a Multilevel Engineering Team

  1. Junior Engineers

Junior engineers are often eager to learn, adapt quickly, and bring fresh perspectives to the team. When hiring junior engineers, it is crucial to focus on their potential and learning acumen. Junior engineers benefit from structured mentorship programs, frequent feedback, and opportunities to work alongside mid-level and senior engineers on real-world projects. Their presence adds energy and creativity to the team, while providing senior team members a chance to mentor and teach, enhancing their leadership abilities.

Example:

I’ve often structured onboarding processes to include hands-on mentorship, assigning junior engineers to shadow senior engineers in early sprints. This approach not only accelerates their learning curve but also allows the senior team members to refine their teaching and leadership skills, ensuring a seamless transfer of knowledge.

  1. Mid-Level Engineers

Mid-level engineers form the backbone of the team, possessing enough experience to handle core tasks independently while also being able to guide junior developers. They often play a critical role in driving features from conception to delivery, balancing technical execution with business needs. In hiring mid-level engineers, the focus should be on their adaptability, ability to take ownership of projects, and technical versatility.

Example:

In several of my roles, I’ve emphasized the importance of giving mid-level engineers the autonomy to lead small projects. This has empowered them to make decisions, troubleshoot issues, and see how their contributions directly affect the success of the team and product delivery.

  1. Senior Engineers

Senior engineers bring deep technical expertise and are key to setting the technical direction of the team. They are often tasked with solving complex problems, making architectural decisions, and mentoring both mid-level and junior engineers. Senior engineers also play a role in recruitment, helping to attract and assess potential candidates for both technical and cultural fit.

Example:

In one of my previous roles, I created a mentorship loop where senior engineers were responsible for running technical interviews and mentoring junior and mid-level developers through code reviews and collaborative pair programming. This not only fostered a culture of growth but also helped build a stronger connection between different levels of the team.

  1. Principal Engineers

Principal engineers lead by example, focusing on long-term technical strategy and influencing the engineering culture at an organizational level. They often bridge the gap between leadership and the technical team, providing mentorship to senior engineers while aligning the technical vision with business goals. Principal engineers are vital to creating a sustainable development ecosystem, ensuring that the team grows while maintaining high standards of quality.

Example:

One key aspect of principal engineers’ growth is their ability to learn from other levels, especially junior and mid-level engineers. In my experience, I have encouraged principal engineers to spend time in code reviews with junior developers, which often leads to new insights about simplifying architectures or improving communication. This symbiotic relationship benefits both the junior developers, who get to learn from experienced engineers, and the principal engineers, who stay grounded in the day-to-day technical challenges.

The Synergy Between Levels and Why It Matters

A truly successful engineering team thrives when engineers across all levels contribute to each other’s growth. Junior engineers push more experienced team members to stay adaptable and up-to-date with emerging technologies. Mid-level engineers build strong ownership and leadership qualities through their guidance of juniors, while also learning from the technical depth and decision-making frameworks of senior and principal engineers. Senior and principal engineers, meanwhile, grow as leaders by mentoring and learning from the fresh perspectives of those earlier in their careers.

Leadership plays a critical role in maintaining this ecosystem, ensuring there are platforms for collaboration and knowledge sharing. A culture of mentorship and continuous improvement not only helps with the retention of talent but also ensures that the team remains innovative and adaptable.

Why Recruiting and Retaining Across Levels is Crucial

A well-rounded team with a balanced distribution of junior, mid-level, senior, and principal engineers is not only essential for delivering quality software but also for the overall success and sustainability of an organization. Engineering managers and leadership must be able to demonstrate their ability to attract, hire, and retain talent at every level. This involves creating an environment where engineers feel challenged, supported, and valued.

When each level is respected and invested in, retention rates improve, the onboarding process becomes smoother, and the team can scale more effectively. Additionally, diversity across experience levels allows for a more holistic approach to problem-solving, where insights from all stages of a career path are valued and contribute to innovative solutions.

My history has taught me time and again that building teams with a wide range of experience and skill level is the best way to go. Ensuring a culture of continuous learning and collaboration each level of an engineering team has unique contributions to make, and by fostering these relationships, the team as a whole becomes stronger, more innovative, and more successful in delivering top-notch software and services. The end product is a team, that is retained well past the average tenure, that can build, maintain, innovate around, and keep a product and service going for years and years.

Transform Your 1:1 Meetings: From Status Reports to Meaningful Conversations

Let’s face it—1:1s often feel like a chore. They can seem awkward, unnecessary, or even stressful, especially if they devolve into nothing more than a glorified status report. These meetings are supposed to be about meaningful dialogue, yet too often, they become just another checkbox on the to-do list. If you’ve ever found yourself reciting project updates that could’ve been sent in an email, you’re not alone.

But here’s the thing—when 1:1s turn into status reports, they lose their value. And that’s a big problem for several reasons:

  1. Missed Opportunities
    Turning 1:1s into routine updates means missing out on the chance to discuss your personal growth, career aspirations, or challenges that need attention. This time is carved out for your development and support. If you’re not using it wisely, you’re letting potential progress slip through your fingers.
  2. Lack of Connection
    When your 1:1s are all about status updates, you miss the opportunity to build a deeper connection with your manager. Understanding your manager’s goals and challenges is key to aligning your work with the broader mission of the team and company. Without this connection, you risk becoming isolated, working on tasks that don’t fully align with the bigger picture.
  3. Increased Frustration
    If 1:1s feel like just another meeting to get through, they become something you dread rather than look forward to. When these meetings lack substance, they turn into a time-waster, leading to frustration and disengagement.

So, how do you change the dynamic? How do you make 1:1s less cumbersome and more valuable for both you and your manager? Here’s how to flip the script:

Make Your 1:1s Count:

  1. Ask for What You Need
    Use your 1:1s to ask for the resources or support that will help you grow. Need career advice? Ask for it. Facing a roadblock? Seek help to get unblocked. Want to meet someone influential in your field? Request an introduction. This is your time—make sure you’re using it to your advantage.
  2. Understand Your Manager’s World
    Instead of just sharing your progress, take the time to ask your manager about their challenges and goals. What’s their biggest concern right now? What are they focusing on? Understanding what’s on your manager’s mind can help you better align your efforts with the team’s priorities, making you a more effective and valuable team member.
  3. Learn About the Business
    1:1s are an excellent opportunity to get a deeper understanding of the business. Ask about the company’s growth areas, the challenges it’s facing, and where your work fits into the bigger picture. Having this insight not only makes you more informed but also more strategic in your contributions.
  4. Seek Feedback Regularly
    Don’t wait for annual reviews to get feedback on your performance. Use your 1:1s to ask for continuous feedback. What are you doing well? Where can you improve? Regular feedback helps you course-correct quickly and ensures you’re always moving in the right direction.
  5. Discuss Long-Term Goals
    Use your 1:1s to discuss your long-term career goals. Where do you see yourself in a year or five years? What steps can you take now to get there? This helps ensure your day-to-day work aligns with your broader career aspirations and keeps you motivated.

For Managers:

As a manager, your role in 1:1s is crucial. If you’re not careful, these meetings can easily become stale and unproductive. Here’s how to ensure they stay valuable:

  1. Foster Openness
    Create an environment where your team feels comfortable discussing more than just their work progress. Encourage them to bring up their challenges, ask questions, and share their career aspirations. This openness builds trust and helps you better support your team.
  2. Share Your Perspective
    Be transparent with your team about your own challenges and objectives. This helps your team understand the context behind decisions and aligns their efforts with the company’s goals. Transparency also makes these meetings more engaging and less about checking boxes.
  3. Focus on Growth
    Your 1:1s are an opportunity to mentor and guide your team. Use this time to help your team members grow, providing the resources and support they need to advance in their careers. When your team thrives, so do you.
  4. Set Actionable Goals
    Work with your team members to set clear, actionable goals during your 1:1s. These goals should be specific, measurable, and aligned with both their personal development and the team’s objectives. Setting and tracking progress on these goals gives your 1:1s direction and ensures they’re driving real impact.
  5. Provide Regular Feedback
    Make feedback a regular part of your 1:1s. Don’t wait for formal reviews to give your team members insights into their performance. Regular, constructive feedback helps them improve and stay aligned with the team’s goals. It also shows that you’re invested in their development.
  6. Create a Safe Space for Honest Dialogue
    Encourage your team to speak openly and honestly in 1:1s. Let them know that this is their time to share what’s on their mind without fear of judgment. Creating a safe space for dialogue ensures that issues are addressed early and that your team feels heard and supported.

Conclusion:

1:1s don’t have to be a burden—they can be one of the most powerful tools for growth and connection in your work life. By shifting the focus from status reports to meaningful conversation, you’ll find these meetings become not only more productive but also more engaging and rewarding.

What strategies have worked for you in making the most out of 1:1s? Let’s share and learn from each other—drop your thoughts below! 👇