Skip to content
View pdrivom's full-sized avatar

Block or report pdrivom

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don't include any personal information such as legal names or email addresses. Markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
pdrivom/README.md

📫 How to reach me at www.linkedin.com/in/pedroivomarques

Opinionated Manifesto

One of the most effective ways for individuals and teams to align their actions and values is by crafting a manifesto —> a set of guiding principles that encapsulate what has driven their success or what they believe will lead them there.

Here is the manifesto for the role I most valued while working on software development teams: the Tech Lead. These principles were compiled during a decade of my experience as a Software Engineer (leading and being led), capturing what I believe makes this role impactful and effective.

Tech Lead Manifesto: People First, Code Second

Core Principle: A Tech Lead is a Leader of People, Not Code

While technical expertise is crucial, the essence of a great tech lead lies in leading people, fostering a collaborative environment, and ensuring the team's growth and well-being. The best tech leads recognize that their primary role is to empower people to do their best work and build great software together.

Principles to not suck as a Tech Lead

  1. Advocate for Clear Communication

Do: Foster open, honest, and frequent communication. Encourage questions, feedback, and knowledge sharing among team members.

Practice: Hold regular team meetings (beyond daily stand-ups) with space for everyone to share updates and concerns. Conduct one-on-ones that focus on personal and professional development, not just status updates. Use collaborative tools (like Slack, Teams, etc.) for transparent communication.

  1. Lead by Example

Do: Set the standard for work ethic, code quality, and collaboration. Show respect, integrity, and accountability in all interactions.

Practice: Participate in code reviews constructively (set a standard with the team and remind them to follow it), ensuring feedback is kind and actionable. Exhibit punctuality and preparedness for meetings. Reflect on your actions regularly and seek feedback on your leadership.

  1. Prioritize the Team Over Individual Goals

Do: Focus on the team's overall success and well-being. Celebrate team wins, help team members grow, and remove roadblocks to their progress.

Practice: Create a "Team Success Wall" where achievements, big and small, are publicly acknowledged. Set aside time to help unblock team members facing challenges. Regularly ask, "What can I do to help?"

  1. Foster a Culture of Continuous Learning

Do: Encourage experimentation, learning, and innovation. Provide opportunities for training, mentorship, and personal growth.

Practice: Allocate "Learning Time" each week when team members can explore new technologies or ideas. Organize monthly knowledge-sharing sessions where team members present something they've learned recently. Pair junior and senior engineers for mentorship.

  1. Make Decisions with Empathy and Data

Do: Balance empathy with logic in decision-making. Consider the impact of technical decisions on people and the organization, using data to guide choices.

Practice: Conduct regular retrospectives to gather data and feedback on what’s working and what’s not.

  1. Be a Thoughtful Listener

Do: Listen actively and openly to team members' ideas, concerns, and feedback. Value diverse perspectives and cultivate an inclusive environment.

Practice: Practice "Active Listening" exercises where you summarize back what someone said before responding. Use tools like anonymous feedback surveys to ensure all voices are heard.

  1. Facilitate Collaboration and Alignment

Do: Ensure alignment between stakeholders, product vision, and technical execution. Build bridges (not walls) between different teams and functions.

Practice: Host cross-functional workshops to clarify objectives and dependencies. Create visual roadmaps that outline key milestones and align the team on the shared vision.

  1. Focus on Sustainable Practices

Do: Promote sustainable coding practices, such as writing clean, maintainable code and designing scalable systems. Never forget, work-life balance.

Practice: Implement "Tech Debt Days" where the team focuses on refactoring and improving existing code and if tasks, can be automated, f*** automate!. Introduce "No-Meeting Fridays" to allow deep work and rest.

  1. Champion Quality and Innovation

Do: Strive for technical excellence and innovation, and inspire others to do the same. Encourage a balance of stability and forward-thinking.

Practice: Create a "Tech Radar" where new technologies and practices are evaluated for potential adoption. Recognize and reward innovative solutions and ideas.

  1. Communicate Vision and Purpose (SUPER IMPORTANT!!)

Do: Articulate a clear vision for the team's technical direction, linking it to the broader organizational goals. Ensure everyone understands the "why" behind their work.

Practice: Develop a “Team Manifesto” that outlines the team's mission, values, standards, and goals. Regularly revisit and update this document to keep it aligned with the team and organization.

As a Tech Lead

Be humble, curious, and always open to learning (even with other team members).

  • Keep a learning journal. Write down what you learn from successes and mistakes. Share key insights with the team to model continuous improvement. Prioritize psychological safety within the team.

  • Regularly check in with the team’s emotional health by using tools like mood meters or simple pulse surveys. Create a "blameless post-mortem" culture for project retrospectives. Approach challenges with resilience and a growth mindset.

  • Practice “What-If” scenarios with the team to prepare for challenges and foster resilience. Encourage a mindset of "failing forward" by celebrating learning from mistakes. Be adaptable and willing to change course based on new information or feedback.

  • Host quarterly strategy reviews where the team can challenge assumptions and adapt plans based on recent data and feedback. Recognize that leadership is a service, not a position of authority.

  • Practice leadership by actively asking, "How can I do to make my team better?"

Final Thought: Lead with Purpose and Heart

Being a good tech lead is about nurturing people and relationships more than writing code. It is about inspiring trust, empowering your team, and creating an environment where everyone thrives. When you put people first, the code will follow, and great things will happen. Lead with empathy, clarity, and a genuine passion for your team’s success.

Pinned Loading

  1. IoT-Data-Generator IoT-Data-Generator Public

    Forked from gtavasoli/JSON-Generator

    IoT data JSON Generator allowing users to simulate a IoT device fake data based on a template.

    Python

  2. CodingChallenge CodingChallenge Public

    Python

  3. ISEP-LEI-2022/Warehouse-Manager ISEP-LEI-2022/Warehouse-Manager Public

    CSS 1