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

  1. Software projects cannot be accelerated by spending more time in the office or adding more people to projects.
  2. 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.
  3. 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..
  4. 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.
  5. 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.
  6. 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

House: Owning a large house gives us more personal space and makes day-to-day living more pleasurable. At the same time, bigger houses cost more to upkeep, they take more time to keep clean and allow you to accumulate stuff without noticing. The house becomes so full of stuff you can’t park the cars in the garage.
Owning very nice things makes using them less pleasurable because you have to be extra careful not to damage them. Keeping your housing costs low and not accidentally accumulating stuff allows you to spend time and money on things that matter more.

Sunday, August 01, 2010

Writing makes a better person

Writing reveals holes in your thinking. When your ideas are written and looking back at you, they're a lot less convincing than when they're just in your head. Writing forces you to mature your ideas by thinking through counterarguments. Writing helps you organize your thoughts in a coherent way. Writing makes you smarter.

Wednesday, July 14, 2010

The dichotomy of being smart and Intelligent

People who are born intelligent start off life with everything easy for them. They don’t have to work hard to get good grades, they never really have to do much to get ahead. The major challenge of early life is school – and school is designed for average people. So intelligent people just breeze through.
But there is a point where every intelligent person faces something that requires more than intelligence. It requires hard work, it requires the ability to fail, it requires being able to do tough tasks, boring tasks. For the first time in their life, in spite of their intelligence, these intelligent people are challenged.
The experience of being challenged has very different effects like “Oh boy, now I’m really gonna have to try hard” to “I”m not smart enough for this.”

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

The secret of happiness is to recognise that, wherever you are, whoever you are with, if you are having fun, then that is the best place to be. Over thousands of years, thinkers have exhorted us to live in the moment, be content with our lot, enjoy where we are. The secret of happiness is probably just getting out there and giving real life a whirl.

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.

 

 

 

Monday, February 22, 2010

Taking Notes

Recording things is part of how you frame the design and understand the problem. It helps to break things down, and build up solutions. It enables to identify what the hard parts will be, and what is low-hanging fruit.

Having the original notes written down when you come back is key to making sure you don’t forget a bunch of details.

Another benefit is in the trail you leave behind. So take notes. Jot stuff down. Use any method that suits you (freemind, notepad, Onenote), but your great thoughts never really happened if you didn’t write them down.

Friday, February 19, 2010

Componets Contributing to the performance of Page load

Network time represents how long a user is waiting while data is transmitted between their computer and your server. We can't completely control network time since some users are on slower connections than others, but we can reduce the number of bytes required to load a page; fewer bytes means less network time. The 5 main contributors to network time are bytes of cookies, HTML, CSS, JavaScript, and images.

Generation time captures how long it takes from when your webserver receives a request from the user to the time it sends back a response. This metric measures the efficiency of our code itself and also the webserver, caching, database, and network hardware. Reducing generation time is totally under our control and is accomplished through cleaner, faster code and constantly improving the backend architectures.

Render time measures how much time the user's web browser needs to process a response from the web server and display the resultant web page. Like network time, it is somewhat constrained here by the performance and behavior of the various browsers. The less we send back to the user, the faster the browser can display results, so minimizing bytes of HTML, CSS, JavaScript, and images also helps with render time. Another simple way to reduce render time is to execute as little JavaScript as possible before showing the page to the user.

Thursday, February 18, 2010

Goals At Work

  • Equity: To be respected and to be treated fairly in areas such as pay, benefits, and job security.
  • Achievement: To be proud of one's job, accomplishments, and employer.
  • Camaraderie: To have good, productive relationships with fellow employees.

Thursday, February 11, 2010

From the CheckList manifesto

Checklists are often between five and nine items and fit on one page. They don't try to spell out everything; rather, they provide reminders of the most critical and important steps. With a checklist, you "improve your outcomes with no increase in skill." the checklist gets the dumb stuff out of the way, the routines your brain shouldn't have to occupy itself with, and lets it rise above to focus on the hard stuff."