Details |
Manifesto
A public declaration of intent stating my beliefs, how I organize my work and even my life.
Three Rules for ManifestosThere are three simple rules for creating a manifesto:
I will use the following apps for...Google Drive (GDrive) for backup my files, photos and mp3.
Dropbox for important files. GDrive for searchable files (not caring about extraction and parsing of the data by Google). SkyDrive for everything else (garbage?). Diigo for bookmarks, keep [cached versions or] references of online content, highlights and for keep references to online content (short period of time). Pearltrees for the same as Diigo. I'm using it for my Personal Learning Network (PLN). Put&Read (folder on GDrive) for everyday docs (they are always ongoing works). Temp (folder on GDrive) for "files downloaded to scan and classify or read soon". Kanbanize for everyday project tasks management using Kanban and Personal Kanban. Columns
Swimlanes
Task Types
Gantter for project management in a classic way. Hackpad for small notes (with the intention to be collaborative) KwikSurveys for complex surveys. TypeForm for beautiful surveys. GoogleDocs for simple surveys or polls. CRM (folder on GDrive) for meaningful people management. Level of workI work at 90%, always, but I do it in many “swimlanes" (see above). Because of this, I only work in the 20% of things that returns the 80% of benefits (the old Pareto). My valuesSome of these are borrowed from Adams Wiggins Heroku Values. Strategy vs. TacticThe difference between strategy and tactics: strategy is done above the shoulders, tactics are done below the shoulders. Strategy is the best way we found to choose the best battles to fight in order to win a war; tactic is just the best way we found to win those battles. Make it realIdeas are cheap. Make a prototype, draw a wireframe. Discuss around concrete examples, not hand-waving abstractions. Don't say you did something; provide a URL that proves it. Ship itNothing is real until it's being used by a real user. This doesn't mean you make a prototype in the morning and blog about it in the evening. It means you find one person you believe your product will help and try to get them to use it. Do it with styleJust because we're building bad-ass infrastructure and tools doesn't mean it can't be cool, stylish, and fun. Aesthetic matters. See The Substance of Style Slick and fun meets powerful and serious. Before Heroku (and a few others, like Github and Atlassian), developer-facing products were almost always stodgy, ugly, and completely lacking in style or fun. We're part of the consumerization of IT. Intuition-driven balances data-drivenHunches guide you to places to create new value in the product. Users don't really know what they want. Creating products people loves requires treating product development as an art, not a science; but products have to solve real user problems. Understanding impact of product changes to existing product is best done by mining the data. When you have a mature product and many users you have lots of data on how they are using it. Use that data to make evidence-based decisions. See: Inspired: Created Products People Love Divide and conquerBig, hard problems become easy if you cut them into small pieces. How do you eat the elephant? One bite at a time. If a problems seems hard, think about how you can cut it into two smaller, easier problems. If one of those problems is still too hard, cut it in half again. Wiggins' Law: If it's hard, cut scope. Timing mattersIf you're building something and just can't seem to get it right, maybe now isn't the right time. You learned something in the attempt, set it down for a while. Maybe in a few weeks or a few months you (or someone else) will pick it up again and find that the world has changed in a way that makes it the right time to build the thing. Corollary: if you don't do what you need/have to do in the right moment, later it won't be effective. Build an audienceI don't know the industry you work in. But what I do know is that your industry needs your voice. More people than those in the room with you each day deserve to see your take on things that matter. All that people will know how good you are so is the best job insurance possible. Don't interrupt an interruption.One thing at a time; as exception you can make 1 interruption, but only 1. Don't interrupt an interruption. See Test Driven Development By Kent Beck Take a good decision; then ensure that the decision you make turns out right.While I support the use of any available data to rank my options in some rough sense, ultimately the best way to avoid paralysis-by-analysis and moving forward is:
See Stop Worrying About Making the Right Decision Machete designCreate a single, general-purpose tool which is simple to understand but can be applied to many problems. It's like the product version of occam's razor. The value of a product is the number of problems it can solve divided by the amount of complexity the user needs to keep in their head to use it. Consider an iPhone vs a standard TV remote: an iPhone touchscreen can be used for countless different functions, but there's very little to remember about how it works (tap, drag, swipe, pinch). With a TV remote you have to remember what every button does; the more things you can use the remote for, the more buttons it has. We want to create iPhones, not TV remotes. Small sharp toolsComposability. Simple tools which do one thing well and can be composed with other tools to create a nearly infinite number of results. For example, the unix methodology (stdin/stdout and pipes), see The Art of Unix Programming. Small is beautiful. This isn't just tools, it's also teams. Several small, autonomous, focused teams working in concert almost always beat a single monolithic team. Results, not politicsYou "get ahead" in your career by delivering real value to customers and to the company, not by impressing your boss or with big talk. Decision-making via ownership, not consensus or authorityEvery product, feature, software component, web page, business deal, blog post, and so on should have a single owner. Many people may collaborate on it, but the owner is "the buck stops here" and makes the final call on what happens with the owned thing. The owner can and should collect feedback from others, but feedback is just that: input that the owner might or might not choose to incorporate into their work. If something doesn't have an owner, no one should be working on it or trying to make decisions about it. Before those things can happen, it has to be owned. Ownership can't be given, only taken. Ownership can't be declared, only demonstrated. Ownership begins with whoever creates the thing first. Later the owner may hand it off to someone else. If an item gets dropped for some reason (for example, the current owner switching teams or leaving the company), it's fair game for anyone else to pick up. Apple's term for an owner is "directly responsible individual," or DRI. Do-ocracy / intrapreneurshipAsk forgiveness, not permission.
Everything is an experimentAnything we do -- a product, a feature, a standing meeting, an email campaign -- is always subject to change. That includes discontinuing or shutting down whatever the thing is. Ending an experiment isn't a failure, since we often learn the most from experiments that don't produce the results we wanted. Own up to failureDid you make a mistake by posting to the blog at the wrong time? By failing to document the feature before you shipped it? By screwing up a customer's app? By not respecting someone's ownership, or hurting someone's feelings? Own it. Admit your mistake, say you're sorry (when applicable), and feel the failure to make sure you learned from it. Then, get back to work. Gradual rolloutsEase into everything. Use feature flags to activate people slowly into changes, then let it bake for a bit. Test out the message for a public launch by first sending it around internally, and later writing the private beta announcement. Collect feedback and adjust. By the time you're ready to take it public to a wide audience, you'll be fairly certain to have worked out all the kinks. See: Crossing the Chasm Do lessDo we really need that feature? Can we delete that code? Do we really need that command? Can we outsource to or partner with another company so that we don't have the build and maintain something? See: Ephemeralization You touch it, you own itOwnership can be a problem, especially if there's more than a few devs working on an app.
In the hairiest of cases or the rushiest of rushes: make a mental note that it needs to be refactored. Bring it up with your boss. Explain that it would be irresponsible to build further there without some refactoring. If you lack a test harness to do this efficiently, fantastic! That is a clear step 1. Question everythingThe status quo is never good enough. See: Interfaces matterEverything has an interface. A platform has an API. A computer has a keyboard, a mouse, and a GUI operating system. Teams have interfaces too. How do you file a bug or make a request? Where and when does the team collaborate with any other team? The two critical components of a good interface are that it be narrow and well-defined. A poor interface is one that is wide and poorly-defined. See: Explicit Contracts Names matterThink careful about how something is named. Pick exactly one name for each concept the user needs to track, and use it consistently. For example, Heroku add-on providers are always called providers, never "vendor" or "partner" or anything else. Writing a glossary can be a good way to design the vocabulary around something. Maniacal focus on simplicityThere is no step 1. Write wellGood writing is a powerful tool for communication. Clear writing is clear thinking. See: Strong opinions, weakly heldHave a strong opinion and argue passionately for it. But when you encounter new information, be willing to change your mind. See: Strong Opinions, Weakly Held CandorBe blunt, honest, and truthful. Constructive criticism is the best kind. Avoid keeping quiet with your criticism about someone or something for the sake of politeness. Don't say something about someone to a third party that you wouldn't say to their face. See: Winning Read purposefully, and apply your knowledge“Don't just say you have read books. Show that through them you have learned to think better (...) it would be a bad mistake to suppose that one has made progress simply by having internalized their contents." — Epictetus, The Art of Living Put the phone away and be present“Nothing, to my way of thinking, is a better proof of a well ordered mind than a man's ability to stop just where he is and pass some time in his own company." — Seneca, Letters From a Stoic |