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.
Thursday, August 26, 2010
Influence vs Control
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.
Saturday, May 08, 2010
Monday, February 22, 2010
Taking Notes
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
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
Tuesday, November 24, 2009
Nice Java 7 features
Some upcoming nice new features in Java 7
Underscores in numeric literals : int one_billion = 1_000_000_000; // Comma would have been more natural
Binary Literals : int binary = 0b1001;
Strings in switch statements :
String s = ...
switch(s) {
case "asinine":
processAsinine(s);
break;
case "foo":
case "bar":
processFooOrBar(s);
break;
// fall-through
default:
processDefault(s);
break;
}
Not necessary to close resources like InputStream, Writers, Sockets, Sql classes explicitly
This:
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
br.close();
}
becomes
try (BufferedReader br = new BufferedReader(new FileReader(path)) { //copied from C# ?
return br.readLine();
}
Collections ( List,Set and Map) can be created like in Ruby or Perl. Instead of:
List<String> list = new ArrayList<String>();
list.add("myitem");
String item = list.get(0);
we can do:
List<String> list = ["myitem"];
String item = list[0];
