3 tips for when providing and receiving feedback

Photo by Jeremy Bishop on Unsplash

Feedback is a critical tool for people’s development and growth. It allows people to understand their shortfalls, see how their behaviors are perceived, and confirm if actions are producing the expected results. It is also a slippery slope where emotions can range from extreme excitement to desolation depending on how it is delivered and what its content includes.

In this article, I share a few tips from each perspective: giving and receiving feedback. In general, I like to follow the approach presented in the book No Rules Rules: Netflix and the Culture of Reinvention but here I incorporate a few personal touches after reflecting on the best and worst feedback interactions over 15+ years.

Providing feedback

#1: Do not expect anything back

Provide feedback for the sake of helping someone else. If you give feedback to promote yourself or expect to receive something in return, you should just stop it. That may backfire and damage your reputation when people realize that your intentions are not genuine, or frustrate you if you do not get anything back. You should think of feedback as a gift.

#2: Accept that your feedback is disposable

Understand that whoever receives your feedback has no obligation to respond, react, or implement it. That person can listen to it and politely decide not to take action. And guess what? That is totally acceptable. If you love your feedback so much that you would be disappointed if that is not adopted, refrain from giving it to start with.

#3: Stop it if it is not well-received

People react differently to feedback. Some people may get defensive and push back. If that happens, firstly check if you can improve how you provide the feedback. How you deliver a message is as important as its content. If the delivery seems appropriate, I recommend stop providing solicited or unsolicited feedback to those people. If they happen to ask for feedback again, clarify in advance what your expectations are and are not. For instance, make it clear that you are not attached to your feedback and that you do not expect anything back. Additionally, share which kind of reaction (like trying to justify themselves even before you finish your comments) does not encourage you to provide further feedback.

Receiving feedback

#1: Do not create a Frankenstein

Requesting feedback from multiple people can be a priceless way to approach things from different perspectives. Having said that, be cautious with which suggestions you will adopt. Whether you are asking for peers to review a doc or for insights into your long-term career plan, you are the one who best understands the whole picture of what you created or want to create. While pieces of feedback may be valuable in isolation, adopting all of them may lead to a Frankenstein artifact that loses its original goals or becomes hard to parse with a compromised flow. Politely declining a suggestion and sharing your rationale for that can lead to a better overall outcome while nurturing the relationship with those who invested their time to help you.

#2: Listen and hold the urge to react

Feedback can be hard to hear sometimes. It may sound unfair, it may feel wrong, it may seem misinterpreted, and it may also be true but just hard to swallow. Whatever it is, listen to it and let it soak in at least for a few seconds. If you feel the urge to respond, ask for a clarifying question or just repeat what you understood to buy you some time to process it, understand where that person is coming from, and respond to it in a more deliberate, less emotional way. Assume best intention until proven otherwise and try to see that as a learning opportunity.

#3: Recognize when you get valuable, actionable feedback

Useless, shallow feedback is straightforward and quick. Thoughtful, well-constructed feedback takes time. You should let people know when someone provides you with helpful insights. Recognize that on one-on-ones but also on broader forums. A public “Thank You” will reward it in a way that will reinforce that type of behavior. If you want people to provide valuable feedback, you should consider giving them a broad shoutout when that happens.

Program Management Tools

5 ways to leverage Bard or ChatGPT as a TPM

Photo by Caleb Jones on Unsplash

Large Language Models (LLMs) took the internet by storm and could support the day-to-day activities of technical program managers (TPMs). Since ChatGPT’s release in Nov 2022, that’s all you hear about across different fields (technology, medicine, legal, and others). In March 2023, Google released an initial version of Bard to intensify this competition in an addressable market of up to $1 trillion. Updates for both tools are happening quite frequently, and the competition is just starting. Other players are joining that wagon, but regardless of your preference, see below how you could leverage them to optimize your work as a TPM. Items in italics represent example prompts.

Prepare presentations

Effective communication is critical for TPMs, and these chatbots can be handy when creating slides from scratch or tweaking existing content for a new target audience. See below a few examples:

  • Find relevant quotes to introduce a concept and make presentations more engaging
    • Give me a quote to highlight the importance of active listening
  • Summarize content for an executive summary slide
    • Summarize the following pilot results in 3 bullets for a presentation to VPs
  • Do some market research to present external data to back up your claims
    • What’s the addressable market for sovereignty cloud solutions in the US?

While Bard or ChatGPT provide text outputs for you to create your slides, you could also go beyond and use tools like Tome and to have those slides created for you. Besides, Google announced in May 2023 that Google Workspace is integrating Generative AI capabilities into Slides to generate images.

Create code to automate recurring tasks

As a TPM, you probably want and enjoy automating away those boring tasks that you and your team repeatedly do to free up time for more exciting work. While you could automate them without chatbots, they can bootstrap the initial code and save you quite some time. The generated code may not exactly do what you want, but it will be a starting point. See a couple of ideas below:

  • Aggregate and summarize statuses from many tasks
    • Create a Python script using the JIRA module from that iterates through a list of tasks in a JIRA saver filter and, based on those tasks’ statuses and their last comments, provides a summarized status (up to 100 words) of the overall status
  • Pull content from several data sources to generate charts
    • Create some AppScripts code that retrieves data from 3 different spreadsheets and summarizes them in a pie chart of the number of production incidents vs. severity in a given quarter

Create content for design and plan documents

While creating intro, background, or conclusion sections for design or plan docs, chatbots can take an initial crack at it so that you do not have to start them from scratch. That could save you time to invest in what is unique in your proposal. See a few examples below:

  • Intro based on other previous, related docs
    • Create an introduction (up to 150 words) that includes the motivations and current state of the XYZ program based on these two docs: [doc #1 content] and [doc #2 content]
  • Create a summary
    • Create a TL;DR (up to 250 characters) of the following document: [doc content]
  • Include external data points with no manual work to curate them
    • List the last ten minor releases of the Linux kernel with their specific release dates and number of commits

Note: For the first two examples, ideally, providing a link to the docs should work, but that functionality was unavailable in either tool (Bard and ChatGPT) when this article was written.

Learn new technical topics

TPMs are regularly challenged to learn new technologies to keep up and contribute to their programs. Chatbots can provide short summaries to get you familiar with unknown concepts during meetings, discussions, or events. They can also be used for deep dives into topics while providing additional references like books or articles. Here you can find a few examples:

  • Knowing new acronyms or terms
    • What’s PSP in the context of network security?
  • Conversational learning in multiple steps
    • What are approximation functions used for in the context of large language models?
    • Can you give a few examples of approximation functions?
    • Can you give a Python code that implements a Softmax Function?
    • Could you modify it to receive an incomplete sentence and try to approximate the most likely next word in that sentence?

Design with Bard / ChatGPT in mind

When designing solutions with your team, check if these chatbots (or other available AI tools for what matters) could help automate or improve some of your products’ features. For instance, your design could include an API call to Bard or ChatGPT to provide a more human-like message given certain parameters (a more personalized email based on a user’s profile, a curated comparison between two products that a user may be searching for, …). ChatGPT plugins, for instance, could augment the capabilities of your solutions.

Note: Since these tools are either experimental stage or the enterprise solutions are still in the early versions, before jumping in and integrating them, you should thoroughly assess the security and privacy policies, and the associated costs first.

Wrapping up

Like it or not, LLMs are here to stay, and it is a matter of finding the best way to leverage them. While some professions may be highly affected or even go away with these tools, the contributions that TPMs can bring to programs are not jeopardized (yet maybe) by what these tools can provide. Find your way to incorporate them into your daily work and be more efficient. Please share any ideas in the comments.

Article’s summary by Bard (no modifications):

  • LLMs can be used to automate tasks, provide insights, and generate creative content.
  • LLMs can help TPMs to be more efficient, effective, and creative.
  • LLMs are still in their early stages of development, so it is important to assess their security and privacy policies and associated costs before using them.
  • LLMs have the potential to revolutionize the way TPMs work.

Article’s summary by ChatGPT (no modifications):

  • Large Language Models (LLMs) like Bard and ChatGPT are being used by technical program managers (TPMs) to optimize their work.
  • LLMs can assist in preparing presentations, automating recurring tasks, creating content for design and plan documents, and learning new technical topics.
  • TPMs can leverage LLMs to improve communication, save time on repetitive tasks, generate code and summaries, and enhance their knowledge base.
  • Integrating LLMs into TPM workflows can lead to increased efficiency and effectiveness, but careful consideration of security, privacy, and costs is important.

Disclaimer: The opinions expressed in this article are solely those of the author and do not represent the views of the current or previous author’s employers.


What to expect of your goals after 2 months in

A new year can bring excitement and hope for improvements. It’s easy to set ambitious resolutions, but we all know that success depends much more on how well you execute your ideas. How many of your goals have you completed after a couple of months? If you haven’t achieved what you had hoped at this point, you’re not alone. In this article, I share my own experience with tracking goals to help ease some of your anxiety and keep you away from giving up.

Completion is non-linear

I’ve been setting resolutions and tracking their completion for over ten years. The chart below shows my completion % for each month in the last five years. For readability reasons, I preferred not to include in this chart the data from 2012 to 2016, but I considered them for my analysis. The dotted line shows what the completion % would be if it were a linear function with 100% by Dec.

Goal completion rate per month from 2017 to 2022

The results over these years ranged from 46.74% (2012) to 67.56% (2017). After analyzing the data, I could identify a few interesting patterns:

  1. The completion rate was never linear and never evenly distributed: 2021 was the closest year to being linear. 2019 followed an S-shape. The median month-to-month variance was 5.13% (min = 0% and max = 15.88%) while an even distribution would expect 8.33%.
  2. High completion by January was not a good indicator of high annual completion: The year (2019) with the highest completion in Jan was only the fourth one with the highest annual rate (64.49%). The second-highest Jan completion (in 2018) turned out to be the second-worst year completion (53.51%). Similarly, low completion in January was not a good indicator of a low annual rate.
  3. Low completion by February was a better indicator for low annual completion: 2020 had the lowest completion rate in Feb and finished with the lowest year rate. The same happened for the second-lowest – 2018 – when it closed in Feb with 6.93% and in Dec with 53.51%. So far, my 2022 rate is only at 4.27%. It’ll be interesting to check in Dec this year if the Feb rate is a valid indicator.

100% is not realistic

By design, I’m not trying to reach 100%. I group my goals into personal and professional ones. On average, I set 25 goals per year.

Number of goals set per year by type

Within a group, I also identify if goals are 1) high-priority (land major benefits to me or my family and should be fully completed) or 2) stretch (still important, but I’m not going to dread if their completion rate is lower). This strategy challenges me while keeping the anxiety and stress at low levels. I could be aggressive, shoot for 100%, and put in the work to get them done. However, that’s not the point. I set goals to improve my life instead of hitting a number.

How you write your goals matters

Which one would be your pick?

  1. Read 24 books per year;
  2. Read two books per month.

And what about this?

  1. Work out three times a week;
  2. Work out 12 times a month.

If you’re tracking your goals monthly, you should write them in a way that leads to success. While reaching numbers is not the point, they can boost or deplete your motivation to keep going. It should also be clear what the benefit is of completing a goal.

In the first example, reading 24 books per year is better than reading two books per month. Lengthy books can take longer than a month to read. The benefits of reading (have fun, learn, or whatever you’re looking for) aren’t time-sensitive. You should claim that you accomplished 1/12 of your goal when you finish a book instead of thinking you failed to complete 1/12 of it for not reading a book in a given month.

In the second example, you’re more likely to achieve the benefits of working out (being healthier, feeling replenished, and so on) by spreading the exercises throughout the month. Even though it’s harder to have the discipline to work out three times a week, it would be a more appropriate goal than working out 12 times a month. You could hit the target, for instance, by frontloading the workouts at the beginning of the month, but that would defeat the actual purpose of it.


  • Goal achievement is not linear over the year, we will have bad months, but that shouldn’t be a reason to give up.
  • Set challenging goals but don’t expect to meet all of them. Set stretch goals knowing that you most likely won’t fully achieve them.
  • Break down your goals in meaningful chunks that could be accomplished over the year. Review how you wrote them and keep in mind the reason behind pursuing them.
  • Be honest with yourself but don’t be harsh.

From a book per year to 20+

Reading was (very) boring when I was a teenager. I could never read more than a few pages without falling asleep. Literature exams were stressful since I used to either skim through the books or ask people around what the ‘story’ was about. It was just not my thing. Fast forward many years, and somehow I started enjoying reading. But what has changed? Maybe I just got old(er). Maybe not. Let me take you through what I believe drove change.

Understand why I disliked reading

When I was a kid, I used to read entertaining books at school. Then when I was 12 or so, I had to start reading classical ones. Written ages ago, those books were just not compelling to me. The language was archaic, and the stories were too introspective and sometimes cryptic. After years and years of having to deal with them, I couldn’t bear reading.

At that time, I didn’t realize that my problem wasn’t about reading. It was about the type of books that I was required to read. Once I understood what was deterring me from books, I allowed myself to try new topics such as business development and psychology.

Set goals

Trying new topics was not enough though. I needed more activation energy to get me out of that get-this-book-out-here state. In my case, setting goals and challenging myself kicked off that change.

I’d been setting new year resolutions for several years, and it was time to set a goal for the number of books to read. The first year I set a goal of 12 books and read an impressive total of one. Not quite a success. I was being a bit unrealistic. The following year I set the goal to six and made it public using Then it’s was not hidden in a private spreadsheet anymore. People could see it. I don’t think anybody looked at my challenge, but that pushed me anyway, and it made the difference.

Set a realistic goal, make it public, and find buddies or join reading clubs to make yourself accountable.

Read multiple books at the same time

Once I could read at least a few books per year, I had to be more efficient to double that quantity. I found that keeping multiple books in progress worked out great.

During the morning, I usually read a technical or development book. It can go from organizational culture to software architecture, but it’s about something that I want to retain to apply to my day-to-day job. At night, I prefer reading novels or something very light and entertaining. Those are books to have fun instead of accumulating knowledge.

I do recommend reading Why We Sleep by Matthew Walker to understand the reasoning behind this strategy.

Dedicate time to it

Unless you’re willing to dedicate time to reading, the previous tips won’t make a dent. I’m still looking for a book that makes my day longer than 24 hours. Since that didn’t happen yet, I had to choose what I was willing to give to allow for reading time.

Replacing screen time with reading time was the easy-to-pick-but-hard-to-implement choice. No phone after 9:30 PM and setting a resolution to do that at least five days a week was the way to go. That improved my sleep quality and freed up 5+ hours a week.

That helped with my novels, but what about the time to read those technical books during the day? Reserving 20 minutes/day before starting working addressed that issue. That’s almost 2 hours during weekdays.

By making these changes and adding the weekends to the equation, I could find around 10hs per week for reading. That was a game-changer.

Write about what you read

Writing about what I read happened to motivate me to read more. I was writing articles here and there on LinkedIn or on my blog to improve my communications skills. It turned out it had the pleasant side-effect of pushing me to finish books faster because I was excited to write about them. It doesn’t necessarily have to be an article. It could be a more involved review on GoodReads or Amazon.


  • Think about your past, bad experiences when reading and try to root-cause it;
  • Set goals and find ways to make you accountable;
  • Optimize your reading rate by keeping a couple of books in progress;
  • Eliminate wasted time to allow for reading;
  • Write about the books you’ve read;
  • and have fun!

Curious about what I’ve read in 2021? Check it out!

Program Management

What I’ve learned from changing jobs

Early November 2021, I started a new job. That moment was bursting with excitement, with people wishing me the best, and with memories of fun times with my colleagues but only I knew the rollercoaster of emotions in the months that preceded the transition. In this article, I share what I learned from it.

Be mentally and physically prepared

The decision to pursue a new endeavor usually happens months before the actual move. My case was not different, and add to it a couple of months for immigration processes. Even though I expected it to be a stressful time, I underestimated it. For instance, I drastically reduced my workout frequency with the excuse that I needed more time to prep for the interviews. Big mistake! I lost several pounds, I was stressed out, and my sleep hours were impacted. In general, my quality of life suffered a hit.

Lesson #1: do not change your habits, prioritize your health, and keep doing whatever you do to relieve your stress. Set the environment around you to go through that period while finishing it mentally and physically undamaged.

Be selective

It may be flattering to be reached out by recruiters from large companies. However, they should not decide for you if it’s time to pursue a new position. If you didn’t think or dream of yourself working for company X before a recruiter pinged you on LinkedIn, you should think twice before jumping into a selection process. It will demand you a lot of time and energy. In addition to the company, you also need to be as selective for the position. Working for a company that looks fancy on your LinkedIn profile but doing something that you don’t like will make you feel miserable.

Lesson #2: The position AND company need to get you excited from the get-go. If only one of them hits the bar, don’t waste your energy. Select the top 2-3 options and discard the other ones.

Get ready and line up your options

Preparation is crucial for any position level. Dedicating time to learn about the company, get familiar with the selection process, and brush up on some skills will pay off in the end. In the worst-case scenario, you’ll learn something useful.

If you’re considering multiple companies (and you should have a few), the order that you interview with them matters. Your top choice should not be the first one. You’ll inevitably make some mistakes or learn something new that could make the difference later between landing a job or not.

Lesson #3: Invest the time to prepare. That boosts your confidence, and interviewers notice when someone has done their due diligence. You’ll get better as you interview. So, avoid interviewing firstly with your top choice.

Limit your criteria

Congratulations! You passed the interviews leading to having a few offers on the table. You only need to pick one. Easy, right? Maybe.

If you have an offer that stands out in many aspects, that’s a no-brainer. If there isn’t a clear winner, you have to evaluate all the pros and cons before making a call. Location, company, position, growth potential, base salary, performance bonus, sign-on bonus, stocks, 401k matching, vacations, health benefits, perks, and many others. This list can go on and on, and you may get into a situation where too much info leads you to paralysis. Only a handful number of criteria should matter to you and your family, and identifying them is critical. I realized that when debating with myself if I should consider X since Y was offering a better 401k matching policy. 401k matching would not even make up my top 5 criteria to choose an offer.

Lesson #4: Pick no more than three criteria to support your decision. Do not look back once you have decided.

Be responsible

One’s reputation is built over several years, but it only takes one wrong move to ruin it. The fact that you are interviewing with other companies or that you have given your 2-week notice does not free you up from your responsibilities. Regardless of your reason to leave, you should continue performing consistently until your last day. That not only leaves a good impression, but in my case, it is in alignment with my core values, and it was the ethical thing to do.

Lesson #5: People will remember you for what you’ve done, but your last actions are more likely to stick to their minds. Maintain your job performance until you are officially out.

Be patient, humble

Here you are on the first day new at your new job! Excitement is through the roof, and you survived the selection and transition process. You were used to an environment where everybody knew you and where you had a solid reputation, but assuming that you’re not a superstar widely known in the community, you’ll have to build your reputation from scratch. Maybe only the hiring manager knows a tiny bit about you. The rest of your colleagues know nothing.

In the beginning, navigating that anxiety of causing a great initial impression and hitting the ground running can be tricky. Humbleness and patience are essential qualities during those times.

Lesson #6: What brought you here may not take you there. Be humble to understand the context and practice active listening when meeting with people. That should set the environment for a durable, successful new journey in the long run.


  1. During the hiring process, do not change your habits and prioritize your mental and physical health;
  2. Both the position and company need to be a good fit for you. Consider no more than three options;
  3. Preparation is key. Optimize the interview sequence to get better for your top choice;
  4. Pick no more than three criteria to choose the offer to accept and don’t look back once you’ve decided;
  5. Don’t burn bridges and be responsible until your last day of work;
  6. What brought you here may not take you there. Be humble and patient in your new job.

Disclaimer: The opinions stated here are my own, not those of my current or former employers.

Program Management

5 signs that processes should be revised

Photo by Dina Lydia on Unsplash

Your organization keeps things simple and runs with a minimal amount of operational processes. Then a problem happens, your team does some sort of lessons learned and, as part of the action plan, your team decides that some processes need to be created or improved to avoid that from happening again. Nothing wrong there since that’s part of a continuous improvement mindset.

After several months or years, that cycle of learning and improvement may lead to an unintentional, overwhelming amount of processes that cross the tipping point where they cause more damage than help. I present in this article a few signs of what you should watch out for to know if your organization should revisit its processes.

1) Unclear understanding of the reason behind it

As mentioned, processes usually come as responses to problems. Even though the same issues may happen again in the future, it’s unlikely that the environment and the context will be the same or even similar in a second occurrence. Processes can be very well defined and documented but still miss the motivation, the environment, and the context that led to that change. Without these critical pieces of information, one could not understand if applying a process would make sense in a given scenario. That could lead to unexpected results and additional process tweaks that would dilute even more the original reason for the initial design. 

For instance, assume that an organization had a data breach problem for the first time. It then decided to implement manual security code reviews to avoid data exposure issues in the future. The company improves its modus operandi, and after a few years, nobody can clearly articulate why they still do that. It was a process targeted to stop the bleeding in a specific situation but turned out to be the long-term solution. Changes can bring discomfort. So, it’s much easier to keep just doing it. If people are executing something without knowing the motivation behind it, you should re-assess it.

2) That’s how things are done here

How your organization responds to processes can also indicate how effective or efficient they are. While frustration can come from many different sources [1][2], process inefficiency and team frustration are correlated. As a matter of fact, in a recent study, 31% of the participants pointed inefficient processes as one of the main reasons for burnout. When people say that they follow a process because “that’s how it’s done here”, keep an eye on that. One may be saying that for lack of clarity (back to the first sign) but often, the frustration of having to execute it (lack of value, overhead, sense of waste, …) takes priority.

3) Sub-organizations have different incentives when defining processes

As a company grows, its subdivisions grow too. What started as a start-up with 10 people can become a complex matrix organization with several specialized teams like Security, QA, Engineering, PMO, Marketing, and so on. In general, process complexity is directly proportional to organizational complexity. As people are grouped in functional areas, communication channels increase, teams get more specialized, and their goals, incentives, KPIs get more and more specific to what they do. To achieve area-specific targets, teams set more rules around them to control their outcomes, but often those extra rules come at the price of impacting other organizations. For instance, if a QA org sets internal targets to report fewer false-positive bugs due to requirement misunderstandings, the Product Management and Engineering teams may be affected by the new process of having multiple rounds of reviews for the test cases. Those two teams have other internal goals that may not align with QA org’s goals leading to the perception of waste of time or lack of understanding. If your company doesn’t define processes based on strategic, company-wide goals, you may end up in a situation of multiple disjoint, niche-specific processes that would be highly ineffective and demotivational.

4) Creating processes is cheap

“What’s the cost of introducing this new process?” If that’s not a question that pops up when changes are being proposed, it may be a fairly decent indication that the direct and indirect costs are not being considered before implementing them. 

Adding a new field in an issue tracking system may seem like a harmless tweak for a small organization. Now assume that 1) it takes additional 30s to fill that field for each new issue, 2) on average 500 issues are created per day across all projects, and 3) an employee costs on average $100/hour considering all the benefits. In this scenario, that single change would cost almost $10k per month.

Unless your organization considers the overall cost of implementing, training, enforcing, and maintaining new processes and validates if the benefits will outpace the costs, adding new processes will eventually impact the effectiveness of your company.

5) Perceived slowness over time

Finally, if you plot the time to execute an activity over the years and you notice an increasing trend, take a careful look at that. Slowness doesn’t always mean ineffective processes. Moving too fast sometimes brings quality issues that can impact the reputation of your products in an unreversible way. However, for instance, if the lead time between a feature request and its production release has doubled in the last 2 years, your group may have added so much complexity on engineering or peripheral processes (quality, security, privacy, …) that it’s now jeopardizing your company’s ability to compete. Watch out for any feedback from the team about slowness, and make sure that data is collected over time to evaluate your processes.


I presented five signs that can help identify if you have a problem or not in hand. They are indicators, and as any indicator, they do not drive conclusions. They can only support them. You may identify a single sign and have a process problem, but you can also have all five and still have the root cause(s) outside of your processes. In summary, pay attention to the quantitative and qualitative aspects of your organization, validate process changes with multiple stakeholders, and schedule regular (semi-annual or annual) checkpoints to see if you’ve crossed that tipping point.

Program Management

Make it harder to make it better

Monday 8 AM. You grab your mug, take a sip, open your calendar, and notice that a call has been scheduled for 8:30 AM. You don’t recall it to be there on Friday afternoon but your coffee didn’t kick in yet so you’re not sure. The subject is quite generic. Double-click on the invitation to see what that’s about. Nothing more than a Teams or Zoom link in the body. If you’re like me, my initial reaction is to decline it. If you’re not, I hope you join my team after reading this article.

Short of time? Jump straight to the summary at the end.

Meetings are just too easy to be scheduled and most people don’t do the due diligence before sending an invitation. If you want to have more effective meetings, you should first make them harder to schedule. In his “Indistractable” book, Nir Eyal presents a few suggestions to help improve your meetings. I’ll wrap up the article with a couple more.

No Agenda, No Meeting

A few years ago, even before reading Nir’s book, I politely declined a call saying that I didn’t understand its purpose and there was no agenda. The organizer provided an agenda and re-sent the invitation. I accepted it and from that moment on, most invitations from him included an agenda. While that could have been a one-off case, imagine the ripple effect if multiple people in your organization start doing the same. What if a VP does that? That is the kind of change that can exponentially spread if you convince a few influential people to give it a try.

A few benefits from it:

  • Confirmation if you or other people are actually needed
  • Understand if other people should be invited
  • Prepare for the discussion
  • Ask questions even before the call

No Prep Work, No Meeting

Nir mentions that “the primary objective of most meetings should be to gain consensus around a decision” and that the organizer should put in the work to elaborate on the problem description, their reasoning, and their recommendations. The time invested in that prep work translates to time (and money, as we’ll see soon) saved for multiple participants.

It doesn’t need to be a 10-page long document covering all the details that you want to discuss in the call. A single-page one would do the job and it should be a must for most meetings.

Multiple Laptops, No Meeting

Depending on the company culture, it’s widely acceptable to have all participants using their laptops during a meeting. One may argue that it may be needed to look at something relevant or to respond to urgent requests. Let’s be honest and agree that most of the time, we are just distracted checking e-mails and chats, or (the fallacy that I love the most) multi-tasking. IMHO, that’s just disrespectful. If you can’t pay attention to the meeting, then decline it and say that you have other high-priority items to work on.

Establish a one-laptop-per-meeting rule. Include in the invitation that you expect the participants to be fully engaged and that they should not bring their laptops to the conference room. Only the presenter and maybe a notetaker will have their laptops on. You should remind them about the rule before the meeting starts and politely ask for people’s attention if someone breaks the rule.

Are you curious about how to make it happen for remote teams? I am too. If you have an idea, please share it in the comments. I’d love to give it a try.

Estimate your meetings’ costs

Most people don’t realize how much meetings can cost. Let’s do some back-of-the-envelope calculations. You scheduled a meeting with 8 people including you. Let’s assume that the average cost per employee including all benefits is around $200k/year, i.e., the cost per hour per person = 200,000 / (12 * 22 * 8) = $95. Total cost for a 1-hour call = 8 * 95 = $760. Make it a weekly series for 3 months and that will cost your company 12 * 760 = $9,120! That by itself would make me reconsider those calls, but that’s not all.

Besides the direct cost, there is also the indirect cost for distracting people from their other tasks. According to a study from the University of California Irvine, it takes 23 minutes and 15 seconds for people to get back to their task after being distracted. That’s about 40% extra for that 1-hour series. Would you pay around $13k for that? Considering it may change your mind about scheduling it or, at least, make you better prepare for it.

Ask for meeting notes

The organizer should take notes or assign somebody to do so. Unfortunately, that’s not always the case and I recognize that I’ve done (and still do) that several times. As a participant, you can help to replace that bad habit.

If you don’t get the notes within 24 hours after the meeting, just shoot an email to the organizer asking for them. The longer it takes for the organizer to write them down, the harder it gets and the more likely to miss important decisions or action items. That can be a bit embarrassing for the host if he/she keeps doing that over and over. By doing that you can help build a culture of more effective meetings in your company.


  • Decline to meetings if they don’t have an agenda
  • Decline to meetings if you noticed that there was not enough prep work put in them
  • Limit to one laptop in the call to drive focus on the topics been discussed
  • Estimate the cost of your meetings and don’t schedule them if you wouldn’t be willing to pay for them
  • Ask for the meeting notes if you don’t get them within 24hs

What lack of diversity has to say about estimates

What would be your guess for the weight of the following ox? Likely you’re not a livestock specialist, your guess may be way off, and you think that relying on a specialist would be the most accurate way to estimate its weight. I’d go a bit further and say that averaging out the specialists’ guesses with regular people’s ones would result in an estimate worse than the one from a specialist, right?!? Well, that may not be the case.

Photo by Macau Photo Agency on Unsplash

In his book “The Wisdom of Crowds”, James Surowiecki describes an experiment done in 1906 when averaging out all the 787 guesses resulted in a better weight estimate than the guesses of so-called specialists. The crowd average was only 1 pound off! Surowiecki states that “under the right circumstances, groups are remarkably intelligent, and are often smarter than the smartest people in them.”

The average of a large number of forecasts reliably outperforms the average individual forecast. However, that depends on how independent the participant’s opinions are, a statistics concept known as “signal independence”. Independence in this context means uncorrelated.

The more correlated people are, the less independent they are and then their opinion will be biased towards a specific value that may be different from the actual result. Diversity can play an important role to drive that independence.

Correlation can be originated from different sources. If people discuss a subject in advance, their opinions may not be independent during a meeting with other team members. If they always talk to the same people, even about different topics, their opinions may be correlated. If team members have the same background, that’s another source of correlation.

Diversity in a team brings a variety of ways to think, multiple cultural experiences, conflicting ideas to stimulate discussions, and a learning environment that is not possible if people are all alike. That reduces correlation. Diversity is also a key factor when running surveys that can support strategic business decisions. Including people from different races, gender, experience level, religion, sexual orientation, nationalities, and many other dimensions, when combined with a proper selection of a large sample, reduces biases and improves accuracy.

While diversity by itself does not guarantee independent opinions, neglecting it will most likely affect your organization’s capacity to come up with estimates that are closer to reality.


  • The Wisdom of Crowds, James Surowiecki, 2005
  • People Analytics, Coursera, Wharton University of Pennsylvania

You can also find other articles in my Medium or LinkedIn.


2 must-haves to build a culture of learning

Success can come in many different forms, but if your organization wants to have a chance to continue succeeding, learning must be part of its DNA. Similarly, learning can be achieved by taking different paths (training, coaching, sharing, teaching, …), but most of the opportunities come from day-to-day work since that’s where people spend most of their time. However, practice by itself doesn’t guarantee learning.

Allowing team members to voice their thoughts and building an environment that stimulates taking risks are required to convert experience and practice into learning. However, these can only be achieved if psychological safety and blamelessness are present.

Psychological Safety

Can you think of an occasion at work when you held your thoughts? If so, why did you do that? Didn’t you feel comfortable sharing them? Were you afraid of saying anything ‘wrong’, of any sort of retaliation, or of sounding incompetent? While several factors (introversion, people in the room, …) can contribute to people not to voice their opinions, lack of psychological safety is definitely a common one.

Psychological safety is defined as a shared belief held by members of a team that the team is safe for interpersonal risk-taking. That means that people should feel comfortable to share their ideas/suggestions/mistakes/concerns with their teams with no fear of being punished. Sometimes reactions apparently as harmless as a giggle or cutting someone off can erode the psychological safety of a team.

Workplaces with low psychological safety can jeopardize the ability of teams to innovate and to learn from each other. New ideas usually come from tiny increments of work through a sequence of several, maybe unintentional events. A comment may trigger a discussion, that raises a problem, that drives ideas, that may lead to a brand-new product. However, that flow will not happen unless people feel safe to speak up and that may lead to missing many learning opportunities. The way an organization handles incidents tells a lot about how much psychological safe is valued in its culture.


All the services are down and you start receiving tons of notifications. A war room is created and then the ‘fun’ starts. If that gives you goosebumps, you may have had a traumatic experience. If that brings you some memories of collaboration, teamwork, and synergy, you may have experienced an incident where the focus was solely on addressing the problem and on avoiding it to happen again.

Blamelessness is the notion of switching responsibility from people to systems and processes and it fosters psychological safety. That means switches from ‘who’ to ‘what’. Teams should assume that people have done their best with the knowledge and tools that they had at hand. That’s similar to the Prime Directive for Retrospectives and bringing that up in the first incidents and post-mortems can set the scene for a learning instead of a blaming experience.

The Bad Apple Theory (or Old View) maintains that:

  • A complex system would be fine assuming you don’t have unreliable people (Bad Apples)
  • Humans are the dominant contributor to accidents
  • Failures come as unpleasant surprises and are introduced by unreliable people

Instead of thinking that we have bad people in safe systems, we should think that we have well-intentioned people in imperfect systems. That mindset will drive your team to learn from failures and build the foundation for them to focus on problem-solving instead of covering their tracks not to be blamed later.

Another aspect to watch out for to ensure blameless incidents is hindsight bias. If somebody says “I knew that was happening. It was so obvious!”, that should ring a bell. Hindsight bias is the common tendency for people to perceive past events as having been more predictable than they actually were. For example, if a friend says after a game that he knew since the beginning that his team would win it. There was no way to know that for sure, but he/she actually believed that he/she knew. This sort of attitude needs to be purged from any team. A way to handle that without calling out someone in front of many people is to have a 1:1 session and describe why those comments would damage the team’s capacity to handle and learn from an incident.

Fundamental attribution error can also be another call for action if noticed. That’s the tendency to assume that somebody’s action depends more on the type of person he/she is than the environment that influenced that action. For instance, somebody pushes an update that breaks a system and a colleague concludes that that person is not reliable since he didn’t graduate from a renowned university. Again, that represents a type of behavior that deviates from the main focus: understanding the problem, fixing it, and learning from it.

Being able to identify and fix these common counterproductive behaviors is required to build an environment where people know they will not be blamed and that they will be safe to thrive, take some risks, and learn.

Program Management

Transforming data outside of JIRA

JIRA is largely used (Atlassian suite is adopted by 170k+ customers over 190 countries) and one of the reasons for that is that its platform allows for deploying new add-ons to expand its capabilities. You can find a plethora of plugins in Atlassian Marketplace, but purchasing all plugins you need can quickly add up if you have a large user base. Sometimes all you need is to transform data for reports or metrics, even if that’s done outside of JIRA in an Excel spreadsheet or command-line console. In this article, I cover two ways to extract data from JIRA and transform it while minimizing manual work: Excel Datasources and Python API calls.

Excel Datasources

JIRA allows you to export filter results in CSV. One could generate a CSV from JIRA, copy its data, and then transform the data in Excel to create custom charts or consolidated reports. While that works, if you need to do that multiple times, you’ll be wasting a lot of time with manual work. We can leverage the same CSV feature in combination with Excel import data feature to get the work done faster. The steps are pretty straightforward:

  1. Create and save a filter in JIRA
  2. In the filter result page, go to Export >> CSV (Current fields), right-click on it and copy link address
    1. It should be something like https://yourjira/sr/jira.issueviews:searchrequest-csv-current-fields/19974/SearchRequest-19974.csv where 19974 is the JIRA filter ID
  3. Open Excel and go to Data >> From Text/CSV
  1. Paste the JIRA deep-link to export the filter as CSV
  2. Excel will connect to JIRA and you’ll be asked to select the authentication method if that’s the first time you’re doing it
  3. Select Basic and type your JIRA credentials. Important: Authentication methods may vary depending on how your JIRA instance is set up and your credentials will not be shared if you send that spreadsheet to other people
  4. Excel will show you a preview of the retrieved data. You can click on 1) Load to create a new worksheet and load the data, 2) Load To… and customize where to load the data to, or 3) Transform Data to adjust which columns you want to import
  5. Once the data is loaded, you can go to Data >> Queries & Connections and click on the refresh icon to reload the query
  1. Now you can create a separate worksheet and create your custom reports or aggregations based on the raw data imported from JIRA. That’s it. Quick and dirty, right?

Python API calls

If you need to apply more complex logic to your data, an alternative way is to call JIRA APIs utilizing a programming language to parse and transform it. I’m showing a very basic Python example of how to calculate the % of closed Story Points in a filter, but you could apply a similar process using whichever language you prefer for more complex calculations.

Firstly, you need to understand how to authenticate to be able to call JIRA APIs. You can use either OAuth, Basic, or Cookie-based methods. I’m only covering the Basic one in this article, which should be used only for personal scripts. OAuth is the most secure and recommended method but it will require additional configuration in JIRA server to authorize your script to call the APIs. You can read more about the other methods here.

Prep work

  1. Make sure you have Python 3.5+ installed in your system
  2. Install jira module with pip install jira

Python Code

See below the Python code. You can also access it from github.

from jira import JIRA
import getpass

# add your JIRA instance URL here
jiraURL = ''

# update with JIRA username or replace it with
# username = input('Type your JIRA username')
# to ask for the username in the command line
username = 'myusername'

    password = getpass.getpass(prompt='Type your JIRA password: ')
except Exception as error:
    print('Error when getting password', error)
    jira = JIRA(jiraURL, basic_auth=(username, password))
        filterId = '27629'
        filterJQL = jira.filter(filterId).jql
    except Exception as error:
        print('JIRA filter ' + filterId + 'is not available or does not exist')
        issues = jira.search_issues(filterJQL)        
        totalPoints = closedPoints = 0
        for i in range(len(issues)):
            fields = issues[i].fields
            points = 0 if fields.customfield_10002 == None else fields.customfield_10002
            totalPoints += points
            closedPoints += 0 if != 'Closed' else points
        percentage = 0 if (totalPoints == 0) else (closedPoints / totalPoints) * 100
        print('Total points: ', totalPoints)
        print('Closed points: ', closedPoints)
        print('Closed %: ', round(percentage, 2))

This code connects to the JIRA instance (line 5) using the username (line 10) and the password read via command line (line 13). It retrieves the JQL string (line 20) for the filter which id is 27629 (line 19). Then it retrieves the list of issues for that filter (line 24), iterates through it (line 27), and calculates the total story points (line 31) and closed story points (line 32) assuming that the Story Points value is saved in the customfield_10002 property (line 29). The custom field for Story Points in your JIRA server may differ but you can easily get its ID doing a JIRA query and looking at the autocomplete results. It will show something like the following:

Finally, you just need to run the python script in a command line (like py.exe .\ and type your password when asked. Handy, right?