Enthusiastic about fostering collaboration and innovation, I harness the power of Data and Agility to navigate the complexities of the modern business landscape
You cannot get educated by this self-propagating system in which people study to pass exams, and teach others to pass exams, but nobody knows anything.
You learn something by doing it yourself, by asking questions, by thinking, and by experimenting.
I don't know what's the matter with people: they don't learn by understanding, they learn by some other way — by rote or something.
Their knowledge is so fragile!
"'Build, so you can learn' vs 'learn, so you can build" nicely summarizes the two approaches to software development. I do the former exclusively. Up-front discovery is almost always a waste of time. The first time you release is the first time you really understand what works and what doesn't. In other words, learning comes from experimentation. Up-front guessing gives you a hypothesis, but the only way to verify the hypothesis is to run the experiment. Build to learn. Fight down that desire to "get it right the first time." IME, that's simply not possible.
Predictability is valuable to the business, but estimates do not give you predictability. What does is a smooth product-development flow, and to get that you need things like measured throughput and cycle time. Those metrics are not estimates. They come from measuring the work as you work. At no point do you need to analyze a specification and make guesses about how long it will take to implement.
A function should be nameable, insulated, homogenous, and contextual.
Nameable: The name should describe what the function does at a level just above the code itself. The name must be clear, evocative, and convenient in proportion to how often it is used.
Insulated: A function should be focussed inward, knowing only its inputs, outputs, and immediate context. Other functions should know only the function's name, inputs, and outputs.
Homogenous: The statements within a function should all be at the same level of abstraction and should not switch between multiple contexts.
Contextual: Every function has a well defined context within which it operates and which both constrains and affords the resources at that function's disposal.
Contexts are nested structures. A context may contain sub contexts and be contained by super contexts.
Trying to make our failing processes work by “doing them better” just leads to more process. It’s like quicksand — the harder you try to move, the more stuck you get. I fall prey to this trap as much as anyone. https://t.co/iCZcwKyqXG
1. Read and write more.
2. Don't hesitate to admit when you're wrong.
3. Be comfortable changing your opinion.
4. Find a mentor.
5. Stay teachable.
6. Make mistakes and learn.
7. Don't get offended easily.
8. Ask questions.
9. Spend time with nature.
10. Stay humble.