Talking, Thinking, Typing

One cardinal misunderstanding burning teams, tanking projects and killing products since the dawn of software is the assumption that software development can be reduced to the aspect of producing code.

Daniel Fone does a great job of broadening the picture with his triptychon of software development as: Talking, Thinking and Typing.

Software development is talking: Speaking and listening to peers, colleagues and stakeholders. Software development is thinking: Thinking alone by modeling data, testing abstractions, thinking through cases, thinking together by reading other people’s thoughts. Software development is typing: Writing code, but also: Comments, readmes, specifications, code reviews, tickets, mails, …

Overemphasizing one of these aspects or neglecting others is a sure fire way for personal all professional frustration.

On Avoiding Stupidity

It is remarkable how much long-term advantage people like us have gotten by trying to be consistently not stupid, instead of trying to be very intelligent.

This truly struck a cord with me. You can try being brilliant, being excellent, being the best, and I guess this is not the worst aspiration for a team. But, in the end, success in completing projects and shipping products is less about being exceptional but being non-exceptional. Not about getting one thing perfectly right, but about getting many things not wrong. Success sometimes is less about winning and more about not loosing.

I Test On Prod

Inspiring piece. The better and more advanced you get at testing your code for all eventualities and scenarios, the easier it is to loose out of sight that you will never produce perfect software, there are just too many modes of failure. Hence “Testing in Prod” is not an artifact from times long gone, it is a reality and your org needs to be able to do it.

A system’s resilience is not defined by its lack of errors; it’s defined by its ability to survive many, many, many errors.

Pioneers vs Process People

Often overlooked while staffing: Most people excel in very specific situations, some prefer to make, some to maintain. But projects/products require different skillsets througout their lifecycle.

“[At the start] it needs builders, pioneers who come up with clever ideas and execute upon them fast. They improvise … are opinionated [and] make their own decisions.”

“[Later] it needs a lot of incremental improvements, nitty-gritty […] details […] and a developer team which […] only needs some fine-tuning.”

Really good example from Oliver Eidel.

A Good Meeting

How long since you have been in a bad meeting? A week? A day? An hour? Unfortunately it is really, really easy to botch a meeting, to make it the worst part of any given day for a whole group of people. Fortunately it is also not that hard to make it a positive and productive experience.