Tag Archives: productivity

Agile Should Not Make You Feel Bad

Agility can be great (even though for many neurodivergent people, it’s the opposite of great). But when teams go through the motions to be “Agile” they often end up overcomplicating the work, adding stress to interactions, and achieving less agility.

If your agile processes are “working”, then over the next iteration (typically 1-4 weeks):

⬜ You have a clear understanding, as a team, of the value you’re working to demonstrate. (Note that this is not a promise or a commitment, but a shared purpose, direction and intention.)

⬜ You have a clear understanding, as individuals, of the actions that will generate that value. You know what to work on (and think about) when you’re not in meetings or with clients.

⬜ You don’t feel alone – you have teammates to communicate with and collaborate with, and resources you can use, as you move forward to advance project objectives.

⬜ You are working at a comfortable, sustainable pace.

⬜ Your team is improving every week – you continually do things a little differently to help improve quality, productivity, collaboration, or other outcomes.

None of these things require meetings (or “ceremonies”) – just communication and inclusion. We should always be asking ourselves and our team members: what’s the easiest, smoothest, least intrusive way of building this shared understanding and maintaining it every day?

When teams work with agility:

⬜ Everyone understands the overall goal and the next increment of value to demonstrate.

⬜ Everyone has clear things to do to contribute to that value.

⬜ Each person (and the team as a whole) works at a sustainable pace.

⬜ Nobody feels alone. There’s a group of collaborators to share the work with.

⬜ The client or project champion has visibility into the work and is happy with progress.

⬜ There’s an opportunity to rest, reflect, and adjust every week or two.

It’s not ridiculously hard to adjust to changes in scope, tools, or personnel. 

But I regularly see “agile” teams flailing… unhappy… in constant panic mode, with stress that just won’t end. They are very busy and always seem to be scrambling to show their client or project champion some kind of value… with the feeling that they have to defend their existence. They have a nagging sense of confusion and impostor syndrome may be creeping in. They can tell you exactly what tasks are on their JIRA boards, but they can’t tell you why those tickets exist or how their task is contributing to overall project value. They have lost sight of the forest (value) because they have planted so many trees (tickets).

For these teams, the Scrum process and Agile ceremonies may be adding layers of stress and bureaucracy rather than helping the team work sustainably to consistently drive value. They are “doing Agile ” but have actually made themselves less agile… less able to flow and adapt and respond to changes in scope, tools, or participants.

Agile methods first emerged in response to the slow, painful, unsatisfying, unhappy practice of software development. It was really depressing to spend months building software, only to have customers and users complain how bad it was when they got it (especially when you developed exactly what they specified). It felt isolating to have to figure out how to deliver a piece of the software without any input from other engineers, and it was distressing when others were blocking your work and you had to convince them to listen to you. The whole endeavor was inefficient, and people were often tense and stressed. 

The realizations in red (in the 90s) led to the Agile Manifesto items (2001) in blue

We’re applying processes and tools without really examining why we need them

So let’s prioritize…

Individuals and interactions over processes and tools

  • Why this is part of the Agile Manifesto: Since the beginning of time, development teams tend to get hung up on the details of using tools (e.g. MS Project, JIRA, kanban boards) rather than why the tools are there in the first place: to make sure people are getting the information and context they need – on a regular, routine basis – to make continuous progress on the team’s overall deliverables.
  • What we should do in 2022: Focus on information sharing, context building, and working arrangements that help people get work done. This applies to interactions within the team as well as interactions with the client.

We’re doing a lot of work that doesn’t actually contribute to our goal

So let’s prioritize…

Working software [ie. tangible stuff that’s valuable] over comprehensive documentation

  • Why this is part of the Agile Manifesto: Software development in the 1990s was documentation-heavy. I even remember, in 2018, throwing away a few hundred pounds of paper (in about 20 4” binders) containing requirements and design documents for a really big software project that we did between 2002 and 2004. Often, development teams wouldn’t even produce software that matched the documentation because we’d learn about what was feasible and what was not as we were doing it. Everyone tended to deliver software that the business needed a year or two ago. We didn’t learn together and co-create the software. 
  • What we should do in 2022: We provide value in the form of information, shared understanding, and working software (which may be in the form of quality controls) – that’s it. Anything we produce that doesn’t directly contribute to making these things happen shouldn’t be done. 

We’re unable to deliver something we don’t know how to define or describe yet

So let’s prioritize…

Customer collaboration over contract negotiation

  • Why this is part of the Agile Manifesto: Because deciding what you’re on the hook to deliver at the beginning of a project – and exactly what the deliverables are going to look like – is dangerous. You and the customer rarely have enough understanding of the problem (or of each other) to get it right. 
  • What we should do in 2022: Establish shared accountability. (Note: this is rare. How many times has a customer been on your team and just as accountable to the project champion for the end result as you are?) A workaround is to set expectations with the client that we are discovering the shared understanding together, and we will get as close to the desired deliverables as we can, given the fact that we are embarking on a process of learning together.

We’re unable to commit to a plan when we might learn that our plan isn’t feasible

So let’s prioritize…

Responding to change over following a plan

  • Why this is part of the Agile Manifesto: As you learn about what’s possible, what’s not possible, and what the client actually values… plans will change. Instead of establishing a timeline that won’t end up working out (and that will cause you a lot of stress when you start deviating from), just start with the understanding that your Gantt Chart and your intermediary milestones will probably not be achieved when you think they will – or maybe even at all.
  • What we should do in 2022: Always keep the final goal in mind, but revisit and adjust the plan as you learn more every week. Iterate! 

Cogramming (Or: Pair Programming for People Who “Don’t Like It”)

Picture Unrelated. Image Source: Doug Buckley @ Hyperactive (Braintree, MA)

I saw a bunch of threads this morning on Twitter about pair programming, one of the core practices of XP and agile cornerstone. The arguments were diametrically opposed, either: it’s great, and the overhead is necessary and leads to long-term value; versus it’s terrible, because I need to get in the zone and that requires alone time.

(I don’t really like pair programming either… to be honest, I don’t have the attention span for it. I can get into my own groove, but it’s painful to follow along with someone else for more than a few minutes.)

Let me offer up an alternative: cogramming.

Cogramming is like pair programming, but you’re just programming next to someone on a module or a task that’s related to what they’re doing. (In today’s WFH climate, that might mean opening up a Zoom or a Google Meet, turning your cameras off, muting, and working independently until you encounter an issue that you’d ordinarily deal with inside your own head.) When you reach a checkpoint, or when it’s time to sign off, you can do “mini code reviews” to make sure someone else’s eyeballs have been on your work… and caught any big things that you might not have been able to see.

Does it work? From experience, yes. And there’s a basis for it in the research too, through the literature on collaborative play and group dynamics in kids. (Here’s an article that describes some of that.)

Cogramming can help you realize the benefits of pair programming without the pain of actually pair programming. Plus, managers will love hearing that they’re not losing any apparent productivity by two people working on the same code at the same time. If you’re anti-pair, try this approach before you give up entirely.

“Documentation” is a Dirty Word

I just skimmed through another 20 page planning document, written in old-school “requirements specification”-ese with a hefty dose of ambiguity. You know, things like “the Project Manager shall…” and “the technical team will respond to bugs.”

There’s a lot of good content in there. It’s not easy to get at, though… for each page I want to understand, I can expect to spend between ten minutes and an hour deciphering what’s going on. (That’s half a week of work, and I have a lot of other work to do this week. Is it even worth it?)

Also, this document is boring… and there’s a lot of filler (like “package X is useful, flexible, and open source” – OK, that’s great, and factually correct, but not very informative).

The whole document could have been condensed into 4 or 5 slides of diagrams plus annotations. If that had happened, I’d be looking at a 10 to 30 minute commitment overall to get my brain into this particular company’s context… and then I’d be able to make some useful contributions. (As it stands, I’m weighing whether it’s worth my time to go spelunking in that 20-pager at all. Probably not.)

Unfortunately:

  • The bulk of technical documentation that I read is unintelligible or lacks sufficient meaning. I have three decades of exposure to this stuff, so if I can’t understand it, I feel super sorry for the early career people (who might think they can’t understand it because they don’t know enough).
  • Nearly all of the technical documents I see are uninteresting. And tech is interesting.

99 times out of 100, technical documentation is dull and dysfunctional. While it’s supposed to help people and teams establish a shared understanding of a system or a process or a concept, it just ends up looking really impressive and convincing you that the authors know a lot more about this than you do. It doesn’t help you much, if at all.

And as a CTO, CIO, or VP of Engineering, I don’t want to pay for crappy documentation. This particular document probably cost me between $32K-50K, and that’s just the tip of the iceberg… because it doesn’t account for the incremental costs of the people who will attempt to decipher it – which could be 10-100x more over the lifetime of that document. Although the person or team that wrote the 20-pager probably knows what’s going on (at least a little bit), the artifact itself is going to cost other people time and take them away from more value-adding tasks.

The sheer volume of information we’re required to wade through to gain understanding – without the assurance that it will lead us in the right direction, or even in any direction at all – is probably what’s led to the disease of devaluing documentation

A lot of managers think documentation isn’t value-adding, and shouldn’t be done, because… in most cases, people do it so badly that it wasn’t worth the investment in the first place.

Dear tech workers: can we fix this, please? I know it will take a whole generation to effect meaningful change, but… I’m ready to roll up my sleeves.

Productivity Hack: Thinking in layers

I just finished reviewing a colleague’s latest project. It is absolutely beautiful. It’s a collection of very pretty looking documents and forms that you can use to keep track of your professional accomplishments and portfolio. The idea is that each person can use it to cultivate more agency in the professional development process — and it will definitely help people as individuals achieve that goal.

So why would it make my heart sink? Because it’s perfect for one person (or a handful of people) to more easily manage an individual (and isolated) process, but will make it difficult for us to gain visibility into the collection as a whole. It’s a personal management tool, not an organizational management tool. What it won’t help us do is:

  • Search across 10s or 100s of portfolios
  • Scale to 100s or 1000s of employees
  • Keep the content relevant and up to date

So when I see this gorgeous looking thing, I feel sad: so much work went into this, and although it’s going to help solve one problem, it is going to create a maintenance nightmare. In addition, now we’re locked into a single UI and any change will require a ton of effort (and manual changes in each employee’s worksheet). How could we have avoiding painting ourselves into this box?

Thinking in layers is a habit I’ve developed from decades of working in software. By thinking in layers, you can create more maintainable, systematic, and repeatable solutions for solving operations problems. If we had solved this problem in layers, here’s what the solution components would have looked like:

  • Data layer – store all the data in CSVs, with one observation per row and one variable per column
  • Processing layer – a way to create, read, update, and delete documents, records or fields & perform calculations
  • Presentation layer – a way to display the data and make what the user sees pretty

(One of the reasons I love R Markdown is that it gives you a way to easily combine the processing and the presentation in a way that still doesn’t break the layers. If you want to change what people see, you change that in one spot in your Rmd, then re-knit.)

The moral of the story is: you can’t build a scalable system without layers. Think in layers.

Selecting Pages from a PDF to Make a New (Smaller) PDF

Sometimes small, simple tasks perplex me. Today’s challenge: I’m on Windows 10, and have a 53 page PDF of a journal. I need to make a NEW PDF that only contains pages 26 to 43 (my article) so I can send my article to a researcher who is requesting it. I know you can do this with Acrobat, but I don’t have Acrobat, and still would like to figure out how to make the smaller PDF. Here’s what I learned how to do today:

The Easy Way

  1. Go to https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
  2. Find the GREEN button that says “Download PDFtk FREE” and click it
  3. After the download finishes, right click on the .exe file and Run it
  4. When the installer starts, click on all the default options all the way through “Finish”
  5. When installation is finished, go to the search box in the bottom left of your screen
  6. Type “cmd” and hit Enter to open the terminal window
  7. Navigate to the directory that contains your original PDF. I first typed D: to get to my auxiliary hard drive, and then cd Scratch to get to D:\Scratch where my full journal PDF was stored.
  8. Use this code:
    pdftk yourlargefilename.pdf cat 26-43 output youroutputfilename.pdf

    (replacing YOUR filenames and YOUR starting and ending page numbers instead of 26 and 43)

  9. Launch a File Explorer window and navigate to the directory you used in Step 7 above. Open the PDF file and check to make sure it contains only the pages you expect.
  10. There are LOTS more things you can do with PDFtk from the Windows command line, like you did in Step 8. Lots of other options are described at https://www.pdflabs.com/docs/pdftk-cli-examples/

After I finished, I stumbled upon another way that didn’t require downloading a free program, and only uses Google Chrome. (Sometimes those free programs bother me. What a great way to infiltrate computers… offer a totally useful utility completely for free. Consequently, my advice to you is to download it at your own risk. Including these instructions is in no way a guarantee from me that PDFtk is safe.)

 

The Even Easier Way

  1. Open Google Chrome
  2. Type Ctrl-O (that’s the letter O, not the number zero)
  3. Select the large PDF file that you want to snip
  4. Your PDF will open in the browser… click on the beginning and ending pages, and capture the page numbers
  5. Click the print icon in the far upper right corner of your browser
  6. Click the “Change” button to change destination to “Microsoft Print to PDF”
  7. Click the second radio button under Pages, and specify the start and end pages separated by a dash (for me, 26-43)
  8. Click Print, and select a filename for your new, snipped file
  9. After the PDF is generated, navigate to the directory you saved it in during Step 8. Open the file and check it to make sure the pages are as you expect.

 

The Sad News

I tried to use the staplr package in R to snip my PDFs, but I couldn’t get it to work. Will try again some other time 😦

Improve Writing Quality with Speaking & Storyboarding

For a decade, I supervised undergrads and grad students as they were completing writing projects: term papers, semester projects, and of course — capstone projects and thesis work. Today, I’m responsible for editing the work of (and mentoring) junior colleagues. The main lesson I’ve learned over this time is: writing is really hard for most people. So I’m here to help you.

Me, Reviewing Someone Else’s Work

If I had a dollar for every time this scenario happened, I’d… well, you get my point:

ME (reading their “final draft”): [Voice in Head] Huh? Wow, that sentence is long. OK, start it again. I don’t understand what they’re saying. What are they trying to say? This doesn’t make any sense. It could mean… no, that’s not it. Maybe they mean… nope, that can’t be it.

ME: So this sentence here, the one that says “Start by commutating and telling the story of what the purpose of the company’s quality management software is, the implementation plans and the impact to the current state of quality roles and responsibilities for everyone involved.”

THEM (laughing): Oh! Commutating isn’t a word. I meant communicating.

ME: Have you tried reading this sentence out loud?

THEM (still laughing, trying to read it): Yeah, that doesn’t really make sense.

ME: What were you trying to say?

THEM: I was trying to say “Start by explaining how quality management software will impact everyone’s roles and responsibilities.”

ME: Well, why don’t you say that?

THEM: You mean I can just say that? Don’t I need to make it sound good?

ME: You did just make it sound good when you said what you were trying to say.

What Just Happened?

By trying to “make it sound good” — it’s more likely that you’ll mess it up. People think speaking and writing are two different practices, but when you write, it’s really important that when you speak it out loud, it sounds like you’re a human talking to another human. If you wouldn’t say what you wrote to someone in your target audience in exactly the way that you wrote it, then you need to revise it to something you would say.

Why? Because people read text using the voice in their heads. It’s a speaking voice! So give it good, easy, flowing sentences to speak to itself with.

What Can You Do?

Here are two ways you can start improving your writing today:

  1. Read your writing out loud (preferably to someone else who’s not familiar with your topic, or a collaborator). If it doesn’t sound right, it’s not right.
  2. Use a storyboard. (What does that mean?)

There are many storyboard templates available online, but the storyboard attached to this post is geared towards developing the skills needed for technical writing. (That is, writing where it’s important to support your statements with citations that can be validated.) Not only does citing sources add credibility, but it also gives your reader more material to read if they want to go deeper.

Storyboarding

The process is simple: start by outlining your main message. That means:

  1. Figure out meaningful section headers that are meaningful on their own.
  2. Within each section, write a complete phrase or sentence to describe the main point of each paragraph or small group of paragraphs
  3. For each phrase or sentence that forms your story, cut and paste material from your references that supports your point, and list the citation (I prefer APA style) so you don’t forget it.
  4. Read the list of section headers and main points out loud. If this story, spoken, hangs together and is logical and complete — there’s a good chance your fully written story will as well.

Not all elements of your story need citations, but many of them will.

Next Steps

When the storyboard is complete, what should you do next? Sometimes, I hand it to a collaborator to flesh it out. Other times, I’ll put it aside for a few days or weeks, and then pick it up later when my mind is fresh. Whatever approach you use, this will help you organize your thoughts and citations, and help you form a story line that’s complete and understandable. Hope this helps get you started!

STORYBOARD (BLANK)

STORYBOARD (PARTIALLY FILLED IN)

Yes, You Do Need to Write Down Procedures. Except…

近代工芸の名品― [特集展示] 

A 棗 from http://www.momat.go.jp/cg/exhibition/masterpiece2018/ — I saw this one in person!!

Several weeks ago we went to an art exhibit about “tea caddies” at the Tokyo Museum of Modern Art. Although it might seem silly, these kitchen containers are a fixture of Japanese culture. In Japan, drinking green tea is a cornerstone of daily life.

It was about 2 in the afternoon, and we had checked out of our hotel at 11. Wandering through the center of the city, we stumbled upon the museum. Since we didn’t have to meet our friends for several more hours, we decided to check it out.

Confession: I’m not a huge fan of art museums. Caveat: I usually enjoy them to some degree or another when I end up in them. But I didn’t think tea caddies could possibly be useful to me. I was wrong!

When to Write SOPs

One of the features of the exhibit was a Book of Standard Operating Procedures. It described how to create a new lacquered tea caddy from paper. (Unfortunately, photography was prohibited for this piece in particular.) The book was open, laying flat, showing a grid of characters on the right hand side. The grid described a particular process step in great detail. On the left page, a picture of a craftsman performing that step was attached. The card describing the book of SOPs explained that each of the 18 process steps was described using exactly the same format. This decision was made to ensure that the book would help accomplish certain things:

  • Improve Production Quality. Even masters sometimes need to follow instructions, or to be reminded about an old lesson learned, especially if the process is one you only do occasionally. SOPs promote consistency over time, and from person to person. 
  • Train New Artists. Even though learning the craft is done under the supervision of a skilled worker, it’s impossible to remember every detail (unless you have an eidetic memory, which most of us don’t have). The SOP serves as a guide during the learning process.
  • Enable Continuous Improvement. The SOP is the base from which adjustments and performance improvements are grown. It provides “version control” so you can monitor progress and examine the evolution of work over time.
  • Make Space for Creativity. It might be surprising, but having guidance for a particular task or process in the form of an SOP reduces cognitive load, making it easier for a person to recognize opportunities for improvement. In addition, deviations aren’t always prohibited (although in high-reliability organizations, or industries that are highly regulated, you might want to check before being too creative). The art is contributed by the person, not the process.

When Not to Write SOPs

Over the past couple decades, when I’ve asked people to write up SOPs for a given process, I’ve often run into pushback. The most common reasons are “But I know how to do this!” and “It’s too complicated to describe!” The first reason suggests that the person is threatened by the prospect of someone else doing (and possibly taking over) that process, and the second is just an excuse. Maybe.

Because sometimes, the pushback can be legitimate. Not all processes need SOPs. For example, I wouldn’t write up an SOP for the creative process of writing a blog post, or for a new research project (that no one has ever done before) culminating in the publication of a new research article. In general, processes that vary significantly each time they’re run, or processes that require doing something that no one has ever done before — don’t lend themselves well to SOPs.

Get on the Same Page

The biggest reason to document SOPs is to literally get everyone on the same page. You’d be surprised how often people think they’re following the same process, but they’re not! An easy test for this is to have each person who participates in a process draw a flow chart showing the process steps and decisions are made on their own, and then compare all the sketches. If they’re different, work together until you’re all in agreement over what’s on one flow chart — and you’ll notice a sharp and immediate improvement in performance and communication.

« Older Entries