Thought Clusters

Software Development and Management

Managing Followers of the Old Way

without comments

Mike Cottmeyer has a good article on transitioning to Agile:

It’s important when we introduce something new that we spend some time figuring out what the people around us need to be successful. These folks have families… they have kids in college… they have financial obligations. You are not just asking them to change… you are asking them to put their livelihood at risk. People don’t resist change because they are bad people or because they just don’t get it. Chances are… at some level… they are afraid.
More than likely… there is some fundamental concern that you have not addressed. Until you understand what your detractors need to be successful… and work to satisfy that need… on their terms… they are going to continue to stand in your way. They will continue to hold you back and resist the changes you are trying to implement. If you had so much to lose… you’d probably do the same thing.
Trust me doesn’t cut it until you have earned that trust. Agile will help you get there… but you know what… you might have to let them have their Gantt chart… you might have to let them have their MRD… until you can make it safe for them to let it go.

It’s important when we introduce something new that we spend some time figuring out what the people around us need to be successful. These folks have families… they have kids in college… they have financial obligations. You are not just asking them to change… you are asking them to put their livelihood at risk. People don’t resist change because they are bad people or because they just don’t get it. Chances are… at some level… they are afraid.

More than likely… there is some fundamental concern that you have not addressed. Until you understand what your detractors need to be successful… and work to satisfy that need… on their terms… they are going to continue to stand in your way. They will continue to hold you back and resist the changes you are trying to implement. If you had so much to lose… you’d probably do the same thing.

Trust me doesn’t cut it until you have earned that trust. Agile will help you get there… but you know what… you might have to let them have their Gantt chart… you might have to let them have their MRD… until you can make it safe for them to let it go.

This is applicable not only to Agile, but also any new processes that you introduce into your team or organization. I wanted to add one important point: The people who are standing in your way just feel uncomfortable, but they do not know why they are uncomfortable for the most part. Maybe there are people who actually think, “I have to oppose this because I will lose my job“, but generally speaking, they just know that what you propose is not going to work, even if they like you and trust you.

And such thinking is perfectly rational. If it wasn’t, you would have managers who go the other disastrous way of adopting every new business fad that catches their attention. There would be no stability because there would only be moving targets. Even a good methodology like Agile would fail because they will keep tinkering with new ideas instead of sticking to a gameplan and seeing it through.

So, think of “some” opposition as a good thing. It means that when you break down the opposition, the change is likely to be more permanent because you have convinced people of its benefits and addressed their concerns. You would also have learnt how you must adapt the change to the needs of your team or company.

Gradual change is the change that lasts. So be patient.

Written by Krishna

July 3rd, 2009 at 7:00 am

The Dangerous Software Quality-Cost Argument

without comments

There is an argument, which I am very sympathetic to, that quality lowers cost and increases the speed of software development. Unfortunately, quite often, the proponents of this argument miss out a phrase, “in the long run“. And because they do not tell the whole truth, it avoids dealing with real business concerns. It is dangerous because it leads to throwing out the baby (quality) with the babywater (higher initial costs).

The cause, I think, is that people confuses higher quality now with the transition from low quality to high quality. When your software development team is already working at a high level of quality, you are already saving time and money by avoiding rework and having to fix costly bugs. Maintenance is easier. Adding new features is done faster. So things are good.

But when you are trying to move from your present quality level to a higher quality level, there will be transition costs. This includes the time and money spent on quality personnel, training, new processes, documentation, piloting and so on. And even the best of transitions will involve irrecoverable losses because of mistakes made during piloting and tailoring the new quality processes.

As an organization, you need to budget for these transition costs and have an understanding (formal or informal) about the return on investment, i.e., how long will it take for these quality initiatives to start paying for themselves. Such an exercise can also help you accelerate the launch of the quality initiatives that can offer the fastest bang-for-the buck. For example, while both are important, code reviews have quick returns while automated testing has a more gradual return on investment.

So the real argument is, “Improving quality will cost you in time, effort and money, but it is an investment for the future with some immediate, but other long-term benefits. And here is how and when it will pay off.” That is much more meaningful and truthful. And it has a much greater chance of being accepted by a business manager.

Written by Krishna

July 2nd, 2009 at 7:12 pm

Ask the Right Questions At the Right Time

without comments

If you want to get something done by someone, there are two basic basic rules to follow, otherwise you will end up getting frustrated:

  1. Don’t ask them a question when they are unprepared or under-prepared to deal with your request.
  2. Don’t ask them a question when they don’t understand your expectations of a reply.

Other people don’t live in the same universe you do and they definitely don’t have the same thought processes you do. They have their own targets to meet and issues to resolve. Unless their only job is to be idle until you call upon them, when you interject your request without any warning, the first inclination for them would be irritation and a wish for you to disappear.

So make sure that you choose the right time to ask something of someone. Give them enough room to take care of whatever urgent matters are occupying their thoughts and then be able to handle you. One way to do that is using an asynchronous medium such as e-mail to give prior warning or asking time to schedule a meeting to discuss a matter. Calling someone out of the blue and jumping directly into a request has a high probability of getting your request shot down.

Second, if people don’t understand what you are trying to do, they will always give the direct answer to your question, instead of finding ways to help you. For example, if you want a friend to help you with some house work and you ask him, “Do you know electrical systems?“, it is likely you will get a “No”. Instead, if you tell the friend that you are looking for someone to help you and then mention specific things, the friend may find some common ground and agree to help you.

Or in a work setting, if you ask an engineer, “Can you get this method down to 0.01 seconds?“, the answer may be “No”. But maybe the right question, “How fast can you get this method to run?” and the answer comes back as “0.05 seconds”, maybe that is something you can work with in combination with other factors that you can tinker with.

In more simple terms, ask open-ended questions that focus on the problem, not on the solution. When you do that, you may get solutions that are even better than what you originally thought of.

    Written by Krishna

    July 1st, 2009 at 7:18 pm

    Posted in project management

    Tagged with

    Incremental Progress

    with 2 comments

    If you have a dream about achieving something, one of the biggest illusions you can have is to wait for the right circumstances to open up so that you can start working on your dream. This includes stuff like:

    • I will do it when I find the time.
    • I will do it when I don’t have any other responsibilities.
    • I will do it when the stars are aligned.
    • … etc.

    The problem is that you will never find an opportune time. There will always be work to do, bills to pay, responsibilities to attend to, family members to take care of and a million other things. As you keep waiting, days go by. And the days turn into weeks, weeks into months and suddenly years fly by and there is a different face in the mirror.

    Instead, try to make some progress every day. If you are writing a program in your spare time, try to complete something on a daily basis. Maybe it could be a simple screen, or it could be a database method. Or it could be refactoring or a test case. Or checking if the labels are aligned or have the right spelling. Every bit you do counts towards the final goal.

    Second, realize that nothing comes without sacrifice. If you want to lead the exact same life that you had previously, the new venture will not fit in. If you still continue to sleep 9 hours, keep the TV on all the time and spend the rest of the time partying and enjoying life, don’t be surprised if there is no progress. You will have to give up activities to achieve your greater goals. In some cases, you may have to give up some of your friends. In simple terms, there is no free lunch.

    Last, the present trajectory of your life is determined by factors such as your job, and your family. And if you have a different dream, that, by definition, has a different trajectory. The point is, how much effort are you spending on each path? And are the efforts on the first path taking you closer to or farther from the second one?

    Written by Krishna

    June 30th, 2009 at 8:00 pm

    Posted in self-improvement

    Tagged with

    Software Development Blogs

    without comments

    Jurgen Appelo has the latest edition of the top developer blogs up. Surprisingly, I have jumped from 149 to 127 despite having a couple of months where I hardly wrote anything at all, and also after a move to WordPress that seems to have dropped my RSS subscribers by half.

    I have been noticing the reduced frequency of many bloggers that I follow. Perhaps the pervasive use of Twitter has contributed to this, because what used to be a post is now a Twit. This is perhaps a good thing as it raises the quality of the average blog post. But at the same time, it moves the attention of the blogger away from writing longer posts, the cycle feeds on itself and the frequency keeps going down.

    Writing, like other creative activities, requires momentum. You cannot just turn it on and off. The more you write, the more you are inclined to write. If you stop for sometime, it is harder to restart the process. They talk about writer’s block. It is much more difficult when you haven’t written anything for a while.

    Another problem is that when you have a gap, there is an added pressure of producing something of higher value than usual. Perhaps like an actor who took a break and wants to pick a movie that is sure to become a hit. This means further delay as the selection process continues ad infinitum. On the other hand, if one is writing frequently, there will be good ones and bad ones, and you are generally more concerned with the process than the outcomes.

    One aspect specific to writing about software development is that after a while of writing, you get a sense of déjà vu, as you go over the same ground and topics. Sometimes, it also seems that you are beating the same point to death. Part of keeping it interesting is to be able to keep a broader mind and keep looking at new developments and ideas.

    Obviously, software development is a highly innovative field, but a lot of the innovation is in the tools such as languages and frameworks. The overall process of managing software development doesn’t change so quickly. And it shouldn’t, really, because it would mean an unstable working environment with the managers trying the latest management fad. That partly contributes to some of the repetitive themes in blogs.

    And of course, life happens. Writing a blog is generally a labor of love for most people who are not paid to do it and don’t have ads (like this one). And you do it juggling time between work and family, snatching a few extra minutes at the start or end of the day or during a weekend. Sometimes, there is not enough to juggle.

    Written by Krishna

    June 29th, 2009 at 11:19 pm

    How Communism Broke People

    without comments

    via Shafeen, here is an article originally published in 1982 about a trip to the erstwhile Soviet Union by Edward Crane of the Cato Institute.

    But if it is hard to describe the economic wasteland of Russia to someone who hasn’t been there, it is even harder to describe what their totalitarian system has done to the human spirit of 260 million people. It isn’t just the drabness and grayness one sees everywhere. Or the rudeness and surliness one encounters so often. It’s that you virtually never see people laughing, smiling or just seeming to enjoy themselves. People seem to walk slightly bent over, their eyes always averting a stranger. There is an overwhelming sense of oppression and depression. It is no wonder that alcoholism is a major problem in the Soviet Union.
    When we occasionally had opportunities to talk to people in parks or on the street, there was a phrase that kept recurring. We’d ask them if they had ever been outside the USSR, if they would ever own a car, if they could switch jobs if they wanted. The answer, with a shrug of the shoulders, was often an emotionless “It’s impossible.” Whereas in our society one frequently encounters a sense of outrage at injustice or a determination to achieve a goal against all odds, in the Soviet Union one just shrugs. It’s impossible.

    But if it is hard to describe the economic wasteland of Russia to someone who hasn’t been there, it is even harder to describe what their totalitarian system has done to the human spirit of 260 million people. It isn’t just the drabness and grayness one sees everywhere. Or the rudeness and surliness one encounters so often. It’s that you virtually never see people laughing, smiling or just seeming to enjoy themselves. People seem to walk slightly bent over, their eyes always averting a stranger. There is an overwhelming sense of oppression and depression. It is no wonder that alcoholism is a major problem in the Soviet Union.

    When we occasionally had opportunities to talk to people in parks or on the street, there was a phrase that kept recurring. We’d ask them if they had ever been outside the USSR, if they would ever own a car, if they could switch jobs if they wanted. The answer, with a shrug of the shoulders, was often an emotionless “It’s impossible.” Whereas in our society one frequently encounters a sense of outrage at injustice or a determination to achieve a goal against all odds, in the Soviet Union one just shrugs. It’s impossible.

    I am just young enough to remember the 1980’s and the fall of the Communist regimes in Eastern Europe. Even in those days, there was talk about World World III and it was surprising to outsiders how quickly the regimes crumbled under popular unrest. Crane’s article shows how broken the citizens of those nations were and how false the facade of strength was. He was prescient in suggesting that peace, not war, would destroy the USSR because their leaders could not hide the reality behind excuses of foreign interference.

    It is worthwhile to remember the horrors of Communism if only because it shows the truth of the old adage, “The road to hell is paved with good intentions“. Communism started with the assumption that it is possible for a central entity to distribute resources that would eliminate poverty, but it soon disintegrated into a totalitarian society that turned on its own people.

    I don’t mean to draw any moral equivalences, but it is amazing how common the Communist mentality is, not just in government, but also in business which are supposed to be capitalistic. Big Business stifles innovation and creativity and demands conformance to outdated “standards” and rule books. Openness and transparency are dirty words in many corporations who thrive on double-speak and false marketing.

    The rise of Web 2.0 and applications like Facebook and Twitter (especially with regard to what is happening today in Iran) teach us that voices cannot be silenced. People want to be heard and listened to. They want a stake in what is happening. Businesses that fail to listen to their employees and customers do so at the peril of their existence.

    Written by Krishna

    June 29th, 2009 at 7:12 pm

    Posted in business management

    Tagged with

    Natural Things To Do

    without comments

    I am an advocate of programmers starting their own blogs so that they can share their thoughts on programming and software development. But this is not necessarily a natural thing to do because writing is different from programming. The natural thing for a programmer to do is to write programs (duh!). So when you interview a programmer, a good judgment of whether they are good programmers is to ask them what kind of programming they do outside work. Do they have a hobby project they are working on? Are they contributing to some group project (open source or otherwise) online? If they also have a blog, that is a plus because it shows a passion for communicating with others, but it cannot be a filter.

    On the other hand, when somebody is paid a salary for writing, i.e., they produce documentation or do some sort of technical writing, it just feels wrong when they do not have a blog or other outlet for writing. A person who likes writing will do it even if they are not being paid, because they have the need to put words to paper or the screen. So the equivalent interview question for such a person would be, what kind of writing do you do outside work? It doesn’t have to be technical stuff. Maybe they are writing a poem or a children’s story. But whatever it is, it demonstrates how much they love writing.

    Similarly, a graphics designer without a personal website seems like an oxymoron. Does the person do the work only if they are paid to do it? Are they not interested in exploring design layouts, HTML, CSS and all the interesting stuff in the graphics world? Also importantly, how confident are they in showing the world what they have got in design skills?

    So there you have it: The single most important question you can ask in an interview is about the natural thing for a professional to do outside their working hours? If they don’t have anything remotely connected to their profession, it is an indication that they don’t value the profession so much.

    Obviously, there are exceptions. If a person is working in a sweatshop and only going home to sleep, or they don’t have the resources or are forbidden by law to tinker outside the workplace, that is fine. But in the normal course of events, you would always want to look at people who maintain their interest and use their time outside work.

    Written by Krishna

    June 22nd, 2009 at 8:02 pm

    WordPress Move

    with one comment

    I changed my hosting from Blogger to a hosted instance of WordPress. I hope this does not result in a deluge of posts to your blog reader (Google Reader does that sometimes). Thanks for continuing to read my blog. If you are not yet subscribed, you can subscribe using a blog reader at http://feeds2.feedburner.com/thoughtclusters or through email at http://feedburner.google.com/fb/a/mailverify?uri=thoughtclusters.

    There were a couple of reasons for the move to WordPress:

    1. I recently bought some space on MediaTemple, which allows you 1000 GPU (Grid Performance Units) per month. That is a lot of horsepower even if you are getting thousands of pageviews per day. All for $20 per month, which also includes PHP, mySQL, a great control panel and other goodies.
    2. Once you start playing with WordPress themes and plugins, Blogger seems like a toy project compared to WordPress. There simply isn’t any comparison. I had written a post comparing Blogger and WordPress.com which may have given the impression that there is nothing much to choose between them. Perhaps it is still true about Wordpress.com, but a hosted WordPress instance is incomparable in power.

    I changed the look to the Journalist theme from Lucian E Marin. Simple black-and-white design. Other themes I liked before I finalized on Journalist were iNove, Carrington and Vigilance.

    The move from Blogger to WordPress was painless for the most part. Here are the things I did:

    1. Changing the domain name settings. Google uses eNom for domain names hosted on Blogger. It ties that into Google Apps. So you cannot just point the eNom settings to the DNS servers of MediaTemple unless you want to also ditch the other Google Services. I guess I could move the domain registrar to MediaTemple, but I was not ready to do that yet. So the configuration is to add an A record for “www”. This may be a problem if the IP changes. So it is a short-term fix.
    2. The other problem is that when you install Wordpress and then navigate to the login page, it shows you the admin password and then asks you to login. This is a problem for an existing blog which is being visited by people. One way to get around this is that before you change the domain registrar settings, change the Network Settings in Windows to use the DNS servers of the WordPress host. This will enable you to set up the blog and change the administrative login.
    3. Getting WordPress to import Blogger posts and comments is a breeze. All you have to do is provide your Google login, click a few buttons and just sit back. One important thing is to make sure that you have set up the users corresponding to the Blogger authors so that you can map them correctly.
    4. I learnt that the pictures do not get imported automatically into the WordPress media library. I suppose there may be some tool that does that. If not, I would have to manually upload them and edit the posts to use the images. That is going to be some work.
    5. Blogger Gadgets do not get imported. So you have to set up Google Analytics, Google Webmasters, Creative Commons license, etc. manually. It is not difficult, just another thing to take care of.

    Should you move to WordPress? Definitely yes. If you cannot move to a hosted installation, get a domain name and move to Wordpress.com. One day, you can make the transition to a hosted site. I did this after 3 years. So can you!

    Written by Krishna

    June 17th, 2009 at 12:00 pm

    Posted in blogs

    Tagged with , ,

    Entrepreneurs Today

    with one comment

    Matt at 37 Signals writes:

    The term entrepreneur feels outdated. It’s associated with people who work brutal hours, invest their life savings, and risk it all on a dream.

    But these days, you can do a ton with just a little. You can build a business by working just a few hours a week. You can keep your day job and start something on the side. Software and technology that used to cost a ton is now free (or very cheap). You can easily work from home and/or with people thousands of miles away.

    In this new landscape, people who would never think to call themselves “entrepreneurs” are out there starting businesses, selling products, and turning profits. [...]

    These people are thriving without risking it all or leveraging their lives. They’re succeeding without MBAs, business plans, and all those other credentials you’re supposed to have before starting a business. You just don’t need that stuff to build something great anymore.

    The point is that you no longer have an excuse anymore for doing nothing. You cannot complain that life didn’t turn out to be great because you didn’t have money, resources or time. As Matt explains, you need just a little. So the biggest obstacle to achieving your dreams is you. How much priority have you given to chasing your dreams?

    Those who complain are never serious to begin with. They need a scapegoat for their lack of achievements. And they point to whatever or whoever is available: their jobs, employers, family, friends, education and so on. But the real culprit is plain old laziness and lack of passion. This doesn’t mean that you are going to make a million dollars tomorrow by pursuing your dreams. You may very well do that, but maybe not – it depends on many factors beyond your control.

    But the question is, are you trying? And are you spending some fraction of your time thinking about and contributing to your dream?

    Written by Krishna

    June 4th, 2009 at 4:30 pm

    Posted in self-improvement

    Meaningless Definitions

    without comments

    OK, take one guess as to what this could be:

    _______ is a design philosophy that leverages existing investments in the creation of flexible solutions that are more responsive to your business needs.

    Apparently, this is Microsoft’s definition of SOA (Service-Oriented Architecture).

    Does any technology market itself as saying that you need to ditch your current infrastructure and create rigid solutions that do not respond to business needs? If not, can the marketing folks at Microsoft start talking like human beings?

    Written by Krishna

    June 4th, 2009 at 4:00 am

    Posted in technology