[2023 kcdc] what your product manager actually does & why it matters

Speaker: Annie Cochran

For more, see the table of contents.


Like the speaker, I”m using PM in this post to mean product manager

Overview

  • Amount of power varies amongst PMs
  • Product Manager vs Product Owner vs Project Manager – these are different roles. Some companies use these terms interchangeably or merge the roles
  • PMs role is to protect developer’s time, unblock things, have conversations/meetings, etc

Day in the life

  • Lots of meetings and prep for a lot of meetings.
  • Common to be double/triple booked
  • 10 meetings/day
  • Juggling between meetings/inbox/to do list
  • Review notes/action items/next day’s schedule

Potential opportunity meeting

  • Frst hear about opportunities to strengthen product.
  • Talk to devs only if agree good opportunity.
  • Say no diplomatically if not.
  • Sometimes not bad but not enough time now.
  • “No and…” – need manager to stand by decisions when need reinforcement
  • Represent team/product at meetings
  • Protect goals of product and team

Brag about the team meeting

  • Celebrate publicly to senior leadership and executives what devs did.

Discovery

  • Series of meetings and activities
  • Trying to discover user needs/goals/pain points
  • Tries to choose best method for the problem at hand
  • Vet work and decide if take back to team
  • Another meeting where protect devs time
  • Use Mural

Other types of meetings

  • One on one – ex: engineering manager
  • Surprise meetings
  • PO meeting
  • Team ceremonies – ex: standup refinement/grooming

Refinement

  • PM fills in where can.
  • Then team fills in. Pre-refinement. Does twice a week for a specific set of stories. A developer must be present because talking about technical details. Investment of time.
  • Actual refinement is after tech lead involved

Shouldn’t do

  • Don’t make technical choices
  • Don’t need to know all tech solutions
  • Not CEO of the product. Don’t want to make decisions in a top down way. Make choices with the team vs hierarchically.
  • Don’t need to control every moment of pre-refinement
  • Tech adjacent, but not technical
  • Not a data analyst. Interpreting data, not collecting it.
  • Not a project manager. Project manager focused on timeline/deadlines (when). Product manager focused on whether should do it at all (why)

How can devs help the PM

  • Participate in meetings.
  • Pay full attention in meetings; don’t do side work
  • Listen so know when can contribute.
  • Give input when asked. Gives confidence for others to share.
  • Prepare in advance when asked
  • Communicate problems as soon as blocked. Give info so can deal fight dragons.
  • Constructive criticism when needed

Product Owner and Product Manager

  • Common for it to be the same person
  • Similar role
  • Internet says PM is more strategic and PO is more tactical
  • Someone in audience said PO supposed to have more authority. Others disagree.
  • Another person said transferred PO to PM
  • Another person said PO helps prioritize backlog as exists, clean it out. BAs groom stories. PMs oversee activities but focus on why.
  • Another person said PMs looking at longer term and POs focus on day to day (ex: standups/impediments)
  • There’s a PO Analyst course role between PO and PM
  • Conclusion – varies a lot by organization and even within an organization

Tech debt

  • Annie is a former dev (for 8 months)
  • Explain why important, robustness, maintainable
  • Make it less abstract
  • Technical education from team so can explain to business. ex: can’t deliver X until fix Y.
  • Don’t ask permission to do job right. Just right tests

My take

This was a fun start to the day. It was nice seeing the POV of a product manager. Annie is a former developer who has been in the role for 13 months. This is a good amount of time for the topic. I like that she crafted a message specifically for developers. I enjoyed both the talk part and question/discussion part. There was a lot of activity.

Writing the same regular expression logic in multiple JVM languages

I tried writing three regular expressions in a the most common JVM languages.

  1. Find first match
  2. Find all matches
  3. Replace first match

My experience in these languages range from use it many times a week (Groovy) to this is the first thing I’ve written in it (Clojure).

I’m going to be using these in a presentation. So if you see anything in here that is a bad idiom in the language, do let me know!

Kotlin

The WordPress syntax highlighter doesn’t have Kotlin as a choice

val text = "Mary had a little lamb"
val regex = Regex("\\b\\w{3,4} ")
print(regex.find(text)?.value)
-----------------------------------------
val text = "Mary had a little lamb"
val regex = "\\b\\w{3,4} ".toRegex()
regex.findAll(text)
  .map { it.groupValues[0] }
  .forEach { print(it) }
-----------------------------------------
val text = "Mary had a little lamb."
val wordBoundary = "\\b"
val threeOrFourChars = "\\w{3,4}"
val space = " "
val regex = Regex(wordBoundary +
  threeOrFourChars + space)
     
println(regex.replaceFirst(text, "_"))

Scala

Thanks to dhinojosa for the code review and feedback that smart quotes don’t require backslashes inside!

val text = "Mary had a little lamb"
val regex = """\b\w{3,4} """.r
val optional = regex findFirstIn text
      
println(optional.getOrElse("No Match"))
-----------------------------------------
val text = "Mary had a little lamb."
val regex = """\b\w{3,4} """.r
val it = regex findAllIn text
      
it foreach print
-----------------------------------------
val text = "Mary had a little lamb."
val wordBoundary = """\b"""
val threeOrFourChars = """\w{3,4}"""
val space = " "
val regex = new Regex(wordBoundary + threeOrFourChars + space)
     
println(regex replaceFirstIn(text, "_"))

Closure

(println(
  re-find #”\b\w{3,4} ", 
          "Mary had a little lamb"))
-----------------------------------------
(println(
  re-seq #”\b\w{3,4} ", 
          "Mary had a little lamb"))
-----------------------------------------
(ns clojure.examples.example
   (:gen-class))
(defn Replacer []
   (def text "Mary had a little lamb.")
   (def wordBoundary "\\b")
   (def threeOrFourChars "\\w{3,4}")
   (def space " ")
   (def regex (str wordBoundary 
        threeOrFourChars space))
   (def pat (re-pattern regex))
   (println(clojure.string/replace-first 
       text pat "_")))
(Replacer)

Groovy

def text = 'Mary had a little lamb'
def regex = /\b\w{3,4} /

def matcher = text =~ regex
print matcher[0]
-----------------------------------------
def text = 'Mary had a little lamb'
def regex = /\b\w{3,4} /

def matcher = text =~ regex
print matcher.findAll().join(' ')
-----------------------------------------
def text = 'Mary had a little lamb'
def regex = /\b\w{3,4} /

def matcher = text =~ regex
print matcher.findAll().join(' ')

Using Google Meet to screenshare for seniors not comfortable with technology

I have to describe how to use Google Meet to someone not comfortable with it. Writing it down as a reference here. This is *a* simple way, it’s not the only way. I find that giving too many choices makes it harder to remember a way.

Step 1 – receive a Google Meet link from someone you trust

Yes, one can start a Google Meet on their own (go to https://meet.google.com and click “new meeting”). But the person who starts the meeting, has to add people. And since odds are the other person is more comfortable with this, better to receive.

Important: Make sure the link is from a trusted party. This isn’t the computer repair scam here.

For example, a link might be sent from a trusted relative. If you aren’t sure, check using a way you normally you normally communicate with that person.

Step 2 – click on the link

You will get a screen with a lot of choices. “Click as to join”. The person who started the meeting will get a prompt and let you in.

Step 3 – audio/video

Make sure your speaker/mic is on. This button controls whether you are on video. (For example, maybe you want to show a broken flashlight or something)

Step 4 – screenshare time

Click this picture to “present now”

You will then get asked what you want to share. Choose “entire screen”. (It essentially the same thing as sharing a window if you stay in Chrome. And doesn’t have an extra question!)

Click the picture of a screen and then the blue “share” button”. If the share button is not visible due to screen resolution, you can just press enter for this step.

When you are done, hang up

Take control

Note there is a Chrome Remote Desktop plugin if you need to take control. This is not a feature of Google Meet