Effective product management

Too many projects go off the rails, and it always relates to:

  1. Deliverables.
  2. Timeline.
  3. People

Successful projects are a harmonious balance of these three attributes. Every failure is the result of some leg of the stool not holding its weight.

But all is not lost! A project can recover at any point by revisiting its first principles, and closing the identified gaps. Simply ask yourself some guided questions.

Have we identified all of the work to be completed?

Project management is the art and science of getting people to work together. And the more people involved in a project, the more challenging it is to get them headed in the right direction.

The project manager takes ownership of ensuring the project is deconstructed to its requisite components, and those tasks are delegated to their relevant parties. Any failure in this process is a failure of the project manager.

Identify the work to be completed, and make sure someone is responsible for it.

Does everyone have the information they need?

Communication is the most important skill for a project manager. It can make or break the entire project. It's the single most important fulcrum in the whole process.

The tool itself doesn’t matter. Slack, email, Zoom, Google Spreadsheets, Basecamp, Asana, and Jira are all forms of communication.

Communication ensures everyone knows what they need to know.

But this sounds like a bunch of heady mumbo jumbo?

You’re right. It’s up to you to translate these principles to the real world.

New person cc’ed into an email thread? Reply with a recap of the project to bring them up to speed.

Details and nuance getting lost in text? Offer a catch-up call to take advantage of higher-bandwidth communication.

Something not getting done? Make sure the task is actually defined, that there’s a person responsible for it, and that the person is capable of completing the work in the time allotted.

Leading a meeting? Share the agenda for review beforehand, set time limits for each discussion, and identify key takeaways and next steps that serve as the tangible results for the meeting.

General confusion about the project? Synthesize key details into a document everyone has access to, and keep it up to date.

Keep it up!

Four short links – March 19, 2018

Selfish altruism, "performance management", all sales decks are awful, and the opioid epidemic.

  1. A Selfish Argument for Making the World a Better Place (Kottke.org) — This has always been my raison d'être. See also: why resource utilization isn't zero-sum.
  2. A Performance Question (Rands in Repose) — Canonical manual for dealing with direct report performance.
  3. The Greatest Sales Deck I’ve Ever Seen (The Mission) — Structure your deck into a narrative arc.
  4. Andrew Sullivan on the Opioid Epidemic in America (NY Mag) — One of the hardest challenges for our generation.

rtParty 2018

Enjoyed India last week, both at rtParty (rtCamp's annual company bash) in Goa and hanging out at the Pune office earlier in the week.

Following Vivek through Koregaon Park to the rtCamp office.
Ain't no shame getting my caffeine fix.
Not a very flattering photo of a biz team meeting.
New rtCamp office is expected to launch March 18th.
Morning arrival in Goa, after 14 hour overnight train journey.
Bunch of scoundrels.
As you might imagine, I ate a ton of Indian food.
Xavier's Cafe all decked out for the party.
4:42 am, Dubai airport, amidst 40 hour journey home.

Bridgeliner

The folks at WhereBy.Us have soft-launched their new Portland media outlet, Bridgeliner:

Check out their first newsletter from yesterday and hit "Subscribe" in the top left if it's something you're interested in.

Sweet!

Introducing the Gutenberg Plugin Compatibility Database

This post originally appeared on make.wordpress.org/core.

Ideally, the majority of WordPress users should be able to use Gutenberg on the day WordPress 5.0 is released. They'll hit "Update WordPress", navigate back to the editor, and continue publishing in Gutenberg with all of the functionality they expect in the Classic Editor.

But plugins! If any one of their active plugins are incompatible with Gutenberg, the WordPress user is likely to experience pain, misery, and bad fortune. Many WordPress installations have a dozen or more active plugins, so WordPress plugins are a significant risk vector for Gutenberg incompatibility.

Enter the Gutenberg Plugin Compatibility Database. The goal for this crowdsourcing tool is to identify whether or not WordPress.org plugins are compatible with Gutenberg. With this data set, we'll be able to:

  • Know the most likely causes of incompatibility.
  • Focus developer outreach on the highest impact problems.
  • Proactively educate WordPress users on whether or not their WordPress installation is ready for Gutenberg.

The only gotcha: we need lots and lots of person-hours for testing. If each plugin takes roughly 1 minute to test, we'll need ~75 person-hours to get through the remaining ~4500 plugins in the database.

Check out the project README.md for a more complete introduction to what's involved. This includes a definition for "Gutenberg-compatible", explanation for why only 5000 plugins are in the database, and other design decisions.

Do you or someone you know have access to lots of person-hours (e.g. WordCamp contributor day, hosting support team, etc.)? I'd love to chat! Feel free to leave a comment, ping me on WordPress.org Slack (I'm 'danielbachhuber'), or get in touch however most convenient.

Fields middleware for Gutenberg

At the moment, registering fields for your Gutenberg block requires a bunch of repetitive code to produce similar UI.

For instance, to produce a text control, you need to do something like this:

el( wp.blocks.InspectorControls.TextControl, {
	value: url,
	onChange: function( newVal ) {
		props.setAttributes({
			url: newVal
		});
	},
	placeholder: __( 'Enter a GitHub Gist URL' ),
} );

See? A lot of boilerplate that you need to repeat for each text control.

For the simple UI, this boilerplate shouldn't be necessary. I'd much rather define a field type when registering the attribute:

attributes: {
	url: {
		type: 'string',
		field: 'text',
	}
},

It sure would be awesome if this existed as middleware!

Crappy hardware ideas

In no particular order:

  • Natural peanut butter stirring device. You know, to mix the peanut butter back into its oils. This device would need to be high torque with low speed, or it could even be mechanical with some design to increase mixing.
  • Fridge door alarm. Amazingly, our fridge doesn't beep when the door is left open. Many fridges do. This device would emit some noise (or send you a text, etc.) when the sensor detects an opening for >10 seconds.
  • USB hub with mounting hardware. All I want is to mount the hub to the back of my desk so I don't have to see it. Some hubs exist, but the price is quite high for what they are. There's an opportunity for something with screw holes in the ~$20 range.
  • All-in-one individual video conferencing unit. The existing options seem focused on adding a variety of peripherals to your conference room and TV. This setup would be for one person, and include video camera, screen, light source, and audio. A veritable magic box!

iPhone home screen, February 2018

Notably:

OverDrive is like free Audible! See if your local library is participating. I've been knocking through non-fiction since September.

Goodreads for keeping track of what books I should read and have read. Sometimes the network is useful.

Overcast may seem like an over-hyped podcast app but it's actually really good. Listening at 1.5x is life-changing.

Look ma, no Mail.app! I made the decision to remove Mail from my phone a few months ago and haven't looked back.

Spotify is my jam (after switching from Rdio), although I'm growing weary of algorithmic influence on music. Might be time to go back to albums.

Paprika keeps our family's cookbook in sync between devices. Tonight is turkey meatballs, pasta, and brussel sprouts.

Previously: 2012, 2011. Inspired by Rands.