The Iron Rolling Mill (Modern Cyclopes), Adolph Menzel
I read Adam's Heroku values, below are some that I want to internalize myself when building my own company.
- make it real: ideas are cheap. make a prototype, discuss around concrete examples, don't just say you did something, provide a URL
- ship it: nothing is real until it's being used by a real user
- do it with style: infrastructure and tools can be cool stylish, and fun. aesthetic matters. (The Substance of Style)
- divide and conquer: cut big, hard problems into small pieces.
- throw things away: it's not code that is valuable, but the understanding you've gain from building it. don't be afraid to throw something away to do it again, it will almost always be faster to build and much better the second (or nth) time around.
- Machate design: create a single, general-purpose tool that is simple to understand but can be applied to many problems. product version of occam's razor. (create iPhones, not TV remotes)
- small sharp tools: composability. simple tolls that do one thing well can be composed with other tools to create a nearly infinite number of results.
- Do-ocracy / interapreneur: ask forgiveness, not permission. take the initiative to make something happen and take responsibility for failures
- Everything is an experiment: anything is always subject to change. ending an experiment isn't a failure, you learn the most from experiments that don't produce expected results
- gradual rollouts: easy into everything. use feature flags to activate people slowly into changes. test internally -> private beta -> public
- design everything: Less is More & The Design of Everyday Things
- do less: can we delete that code? do you need that feature? can you outsource the work to a partner/company so you don't have to build or maintain that?
- question everything: status quo is never good enough
- interfaces matter: everything has an interface (platforms have APIs, teams need to file issues and collaborate) good interfaces are narrow and well-defined
- names matter: think carefully about how something is named. pick exactly one name for each concept the user needs to track and stick to it. Write a glossary to design vocabulary around something.
- ignore the competition: except to borrow good ideas.
- write well: clear writing is clear thinking
- strong opinions, weakly held: have a strong opinion and argue passionately for it. but when you encounter new information, be willing to change your mind.
- candor: be blunt, honest, and truthful. constructive criticism is the best kind. don't keep quite for the sake of politeness.
- programming literacy for all: everyone can and should be able to write software