Tuesday, September 28, 2010
Value of Time
Sunday, September 19, 2010
GrandFather Mountain Hike
Friday, September 17, 2010
Self Maintenance and Success
Saturday, September 11, 2010
Children
Friday, September 03, 2010
FireFights at work
Situations occur in which problems arise that require an immediate fix and very soon, we end up spending more time extinguishing fires than doing actual work.The fix is oftentimes a temporary patch that soon becomes permanent until another firefight alters it to become a double-patch, and so on. This is highly likely to increase technical debt. This is a main contributor of high levels of inefficiency and poor quality.
To avoid this, management must promote a culture of good-quality code that doesn't generate fires and for having good discipline, such as code-review, peer/SME guidance and sustainable work that doesn't require spikes of long hours and hard work.
Thursday, August 26, 2010
Influence vs Control
Focus more on influence than on control, steering people in a direction without telling them to do something specific. Steering helps others learn, telling doesn't. Constantly telling people what to do in detail (micro-management) keeps them from learning, and keeps them from being creative and innovative. Allowing people to make their own mistakes and learn from those mistakes takes confidence in the process and a trust in people -- especially when you know the best solution.
Saturday, August 21, 2010
Software projects and Programmers
- Software projects cannot be accelerated by spending more time in the office or adding more people to projects.
- Although most software is made by teams, it is not a democratic activity. Usually, just one person is responsible for the design, and the rest of the team fills in the details.
- Continuous change leads to software rot, which erodes the conceptual integrity of the original design and could cause it become worthless before it is even completed..
- Great programmers spend very little of their time writing code – at least code that ends up in the final product. Great programmers are masters at recognizing and reusing common patterns. Good programmers are not afraid to refactor (rewrite) their code constantly to reach the ideal design.
- A bad programmer is not just unproductive – he will not only not get any work done, but create a lot of work and headaches for others to fix.
- Bad programmers write code which lacks non-redundancy, hierarchy, and patterns, and so is very difficult to refactor. Programmers who spend much of their time writing code are too lazy, too ignorant, or too arrogant to find existing solutions to old problems.
Thursday, August 12, 2010
Human Interaction and Learning to Adapt
Importance of Human interaction: The exchange of experiences and ideas may give us a solution we could use, accelerate problem solving, give us an idea for something new, and provide us with some guidance. It may also inspire us to try something new.
Learning to Adapt: Sometimes someone else's solution may be tempting to use. Don't just go ahead and replicate it. Doing so may result in a marginal solution or the creation of new issues. Instead, adapt them to your own reality such that you end up with what is right based on your own, unique needs.
Wednesday, August 11, 2010
Questioning Ownership
Sunday, August 01, 2010
Writing makes a better person
Wednesday, July 14, 2010
The dichotomy of being smart and Intelligent
Saturday, July 03, 2010
Assuming you are below average
Assume most people are smarter than you.
To assume you're below average is to admit you're a beginner. It puts you in student mind. It keeps your focus on present practice and future possibilities, and away from any past accomplishments.
Most people are so worried about looking good that they never do anything great. Most people are so worried about doing something great that they never do anything at all.
You destroy that thinking when you think of yourself as such a beginner that just doing anything is an accomplishment.
On the contrary it is also important to know you are (or at least have the potential to be) above average. It's an issue of confidence -- you can get a lot more done when you know that your ideas are good enough to be heard by others. This isn't arrogance, but rather a way to combat insecurity and low self-esteem.
Sunday, May 30, 2010
Happiness
Thursday, May 13, 2010
Complexity
Situations are needlessly more complex than they need to be to get the job done, and that extra complexity imposes extra costs. It can result not just in every developer waiting an extra 15 minutes and it can lead to IT failures costing many hundreds of millions of dollars. We don't even know how to discuss complexity. We don't have a quantitative measurement for complexity that allows us to discuss it. The complexity can accelerate to the point where it consumes everything, at which point it becomes the complexity trap.