hmmm I wonder if there is any easy way to move from my old Jroller blog to this shiny new one. Searching did not yield any promising results, looks like I have to do it the hard way, grrrrr.
Category: General
Behind every successful project is a set of really good people
After a lot of thinking and years of experience if it is one thing I have realized it is this, Behind every successful project is a set of really good people.
Software development is like running a kitchen, if you have great cooks and great helpers in your kitchen, no matter how bad the recipes are the dishes will turn out fine. If you have bad cooks no matter how good and detailed your recipes are the dishes are ruined (Read “Big Macs vs. The Naked Chef ” Joel Spolsky).
There are other factors too like using a good methodology and using the right tools, but I think these other factors just add up to 10% .
Like a real good chef a really good programmer is agile, if he finds that there is no Source control, he will just set on up on his machine (or commandeer an old machine set up Linux and SVN on it), if he finds that there is no Wiki, he will set up a TiddlyWiki, if the requirements don’t make sense he will contact the user to clear things up. If he doesn’t have the right tools he will just get it, now it will help if the right tools are already in place.
It also helps to have a good project lead who will be open to adopting new practices but that goes back to having good people on your team, after all a project lead is also part of your team right ?
The three qualities of a successful manager
Recently a project manager I know requested me for a performance feedback. I have read a couple of books, articles, worked under different managers, have about 5+ years of experience in the field and I started to think back on all this material to answer the question, what makes a good project manager? Who were the project mangers that I was always eager to work for and more importantly why?
As I started to think about this, there were three recurring themes that I noticed in all the people I liked to work for.
- Being a good person
- Being Competent
- Willingness to learn, and dive into the depths of any given problem
1. Being a good person
Think about this for a min, who are the people that you are most willing to work for?
- Cranky
- Taking you always for granted
- Never hear a word of praise from them
- Never willing to help you or anyone
- Unwilling to ever hear what you have to say
- Stubborn, my way or the high way attitude types
- Leave you to slug it out while they are at out on vacation
If you have a choice will you be willing to work under such type? If your lead has the above qualities will you be giving 100% to the success of that project?
2. Being Competent
In order to be a lead, it is not just enough to be a good programmer; in fact that is just a starting point. I do not believe that leaders are born, they are made, one needs to train himself to become one and there is a ton of material to do this (books, articles, blogs ….) and learning from others, having a mentor definitely helps.
I have worked under managers, who were excellent programmers, they could hack out sed and awk in there sleep! But when it came to time management or managing direct reports, they were just down right terrible. If you can?t manage your own time, how can you manager someone else?s time?
3. Willingness to learn, and dive into the depths of any given problem
How can one lead if they can?t solve anything? And how do you solve anything if you are not willing to learn what it is? I find these types really annoying, types that are never willing to listen. They never get a good feel about what is going on and you end up going to multiple statuses meeting and creating numerous reports. And these are the types who will freak out about the tiniest problems.
Unfortunately you cannot recognize a good one until you have worked for a bad one! When you work for a good manager things are a breeze, you very rarely end up working on a weekend, things just seem to click and fall in place and you feel good about your project.
Anyways, I think I can rate the PM based on the above 3 qualities
Reading and Writing Java Property Files With Ruby
Created a simple Class in ruby to help reading and writing property files
class JavaProps
attr :file, :properties
#Takes a file and loads the properties in that file
def initialize file
@file = file
@properties = {}
IO.foreach(file) do |line|
@properties[$1.strip] = $2 if line =~ /([^=]*)=(.*)\/\/(.*)/ || line =~ /([^=]*)=(.*)/
end
end
#Helpfull to string
def to_s
output = “File Name #{@file} \n”
@properties.each {|key,value| output += ” #{key}= #{value} \n” }
output
end
#Write a property
def write_property (key,value)
@properties[key] = value
end
#Save the properties back to file
def save
file = File.new(@file,”w+”)
@properties.each {|key,value| file.puts “#{key}=#{value}\n” }
end
end
Books I want to read in the next 6 months
1. The Psychology of Computer Programming.
2. Getting Things Done : The Art of Stress-Free Productivity.
3. The Mythical Man-Month: Essays on Software Engineering.
4. Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity (Paperback).
Use of Fit Test to cover Use Cases and Scenarios
We have been using fit tests in my organization for some time now, I think fit test can sometimes be indispensable ,
We were designing an internal accounting system, we had a lot of complex use cases, and a lot of different scenarios. We needed repeatable tests that would test all the scenarios whenever we add new code. We also needed documentation that could explain the system flow, enter FIT tests,
We designed and developed fit tests that could reset the datbase and run a fit test and cover all the use cases, take a look at the following FIT TEST ( sorry I had to name it .html.css , else Jroller would not allow me to upload).
When you read the fit test it is almost like reading documentation, with Red and Green colors in the tables. Apart for a way to show the users how the system meets the requirements , it is also a great way to show someone new how the system flow works.
Java Certification
I finally completed my Java Programmer Certification last week. I highly recommend “Sun Certified Programmer & Developer for Java 2 Study Guide- Kathy Sierra, Bert Bates“, ISBN 0072226846. It is actually a fun book to read, and covers all the topics.
I also, recommend to http://www.jchq.net/, maintained by Marcus Green, he has an exam simulator on his site (http://www.jchq.net/phezam/login.php), what you get on the actual exam will be very close to what you get in this simulator (In my case I got higher in the actual exam 🙂 no complaints there).
And you should also shoot some rounds at Java Ranch Rule Round up game http://www.javaranch.com/roundup.jsp
Two excellent articles
Open Source, P2P, Weblogs and Slime Mold An article by Bob Rhubart. Leaks Abstractions Levels of abstractions and leaks in abstraction,by Craig Castelaz.