grokking hard

code smarter, not harder

Thoughts when reading How to Win Friends and Influence People

Posted at — 2012-Jun-26

After reading section “Twelve Ways to Win People to Your Way of Thinking”, I recalled that I’ve applied the principle “Start with questions to which the other person will answer yes” months ago with one of my colleagues.

At that time,  my team was working on a project with another team, they started first and later we  joined. At first, the way we created & updated the database actually sucked. The first time when I looked at the sql files, I had no idea how to run those. There were sql files and batch files to run the scripts and one could not know which one to run first just to look at them. So we had to run back and forth to ask the other team for support.

So I decided to sit down and re-wrote all those scripts and batch files with one thing in mind: I just wanted to make me and my team setting up the database as fast as possible. Finally I did came up with a solution and implemented it. But I needed the confirmation of the other team to follow my new way of hanlde updates of database.

I wrote an email to express my solutions and listed what we (both team) could benefit from doing this. The solution was creating two folders: initial and update. The folder initial contained all the scripts up to this time and a batch file to run all those script. And the updates will have sub folders whose name is a combination of both team’s sprint numbers. At every sprint, we put the update scripts into there appropriate sprint folder and I wrote a batch file to run those script at every sprint or run all of them.

The Scrum Master of the other team agreed with most of the points in the email but he still wanted all developers must added the changes into both places, the old scripts and the new scripts,  just to make sure there was no problem.

He, the Scrum Master, was not an easy-going man. So I decided to make an private Skype conversation with him to convince him not doing that. At first he did not agree. He insisted that all developers must do so because that makes everything in sync. The conversation went like this:

Scrum Master (SM): No, we have to keep updating the old script with ALTER and then add the merge the update into the brand_new_update. So if we run the brand_new_update, the customer will have a full database. We just run the old script with the updating parts.

Me: I have a question. If we run all the initial & update scripts, do we have a full database?

SM: Hmm, yes.

Me: We have to set of scripts which, if being run, produce the same state of database. Does that mean we could drop one of them, right?

SM: Yes, that’s also true!

Me: Then would you agree that we could stop maintaining the brand_new_update script and save everyone time from merging to it right?

SM: I guess you are right! Let’s do like you proposed!

That was the first time I could literally apply something I read from a book and the result was immediately positive.