Some businesses should stay away from Agile

I'm pretty sure you know that very well ... I've spent today wandering around thinking about the topic of corporate IT and Agile. One of my thoughts were related to education and the type of person one wants to have on a team. I even started to write a blog post about it but stopped because its a broad topic and certainly needs more thinking to make sense.

But one thing seems to be clear. While the corporation views IT in a supportive function Agile might not work at all. They will always set a fixed deadline, a fixed budget and expect a full feature set. The fun part will always be that "full feature set" will never be clearly defined, because they just want "something that helps the business". And obviously there is no time to figure out what that is, because they have a business to run. ;-)

So unless "the business" understands that software development is always new product development with all the risks that come with it, those projects will always be in trouble. They would be better off to buy off the shelf software instead of attempting to develop their own.

When you develop a new product you usually don't make it a fixed-time, fixed-budget and fixed-scope project. You target a point in time (a trade show maybe) to release a first version or you have a budget and go as long as it lasts. Or you define the scope and accept that time and money needed to accomplish the task are unknown.

If you are a business and just want support from IT, then you should stay clear from any form of development. It certainly is far better to choose off the shelf software that can be customized. You then pay people to do specific work and that's basically what ERP systems like SAP R/3 offer. The good thing about this is that you can get people who are really qualified to do the job, because the way how such a system gets customized doesn't change so drastically as for example Java web frameworks or technology in general. It may be expensive, but it certainly is far more predictable than custom software development. It's kind of calling a carpenter or plumber - just a bit more advanced.

Tags :

Psychological evaluation for Agile?

Based on a number of recent experiences I've come to think that there might be a relationship between work ethics, personal motivation and whether one will succeed with Agile projects. This post will definetely not give the answer. It is merely a thought I wish to publish and maybe some kind readers will provide their own opinion or share their own experience.

To me it seems that there are two types of people in software development. Those who are passionate about creating some work of art and enjoy building software. And those who simply work to make ends meet.

By no means I am condemming those who wish to make ends meet. That's only natural and in a world where one has to buy food, shelter and other supplies it is simply a matter of survival, if looked at closely. People do so many things to that end and I can only speculate why some of that type chose software development and not something else.

Let me make clear that the last sentences do not only refer to those who actually write code. I am talking about all the others who are involved in any software project as well. That includes persons who represent the business side and write specifications - user stories or in other form -, those who manage teams and individuals, those who work in QA, system administration and everything else.

It is astonishing to see what small teams comprised of passionate and highly motivated indiduals can accomplish when they are not restrained by any form of governance. I believe a team comprised of good "corporate citizens" would probably work for a year and still be disussing which toolset to use.

The question is why is that?

Maybe it is because there are so many choices that only someone who devotes his life to the art of software development is able to keep track and accumulate enough knowledge for making an informed decision. Can that be? The regular corporate office worker spends 8 hours at work. A good chunk of that time is used up by meetings, responding to emails, preparing reports and other administrative duties. When this person arrives at home she is tired and wants to be with her family. And the weekend is certainly not spent researching technology topics. I remember one 40ish gentlemen who was working in the IT department of a mid-sized company on SAP R/3 stuff by the time I met him. He was pretty interested in learning about network security and TCP/IP networking in general. So I referered him to a number of books and his response was something like "I have maybe 10 minutes per day to read when I come home".

The Agile Manifesto says:

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

That is very noble and makes a lot of sense. Unfortunately it does not mention anything about the type of individuals.

Can Agile work with people who are only interested in their paycheck, having fun in life and be home one time? Can it work with those who like it easy? Those who prefer to hold up anything with endless discussions about nuisances unconsciously knowing that it will allow to water down anything and get away with it?

Or is Agile merely something for the doers, self-motivated people who are interested in getting it done and then improve it further? Does it refer to entrepreneurs?

How hard is it to transform a worker type person into someone who is passionate about his work? Do we need a psychological evaluation of team members to determine whether they are suitable for Agile?

Update: After posting I did a Google search on psychological evaluation Agile. I would not have expected the result. Interesting...

Tags :

The Browser is No Place for Multitasking

Reading my feeds I came across this little snippet:

Why We Need Web Apps on the Desktop - ReadWriteWeb:

As Mitch Grasso, founder of Sliderocket (our coverage) wrote in a comment here yesterday, "Adobe AIR isn't just about taking apps offline. Multi-window support, drag and drop, keyboard shortcuts, and access to the rich clipboard are all things that you take for granted in a desktop app are difficult or impossible to do in a browser. Browsers are designed for reading webpages - not hosting applications."

There might be a day when the web truly is our operating system, and when browsers really will be designed to run multiple applications. But that day hasn't arrived, and until it does, bringing web apps to the desktop is another important step in their evolution and the way forward in pushing the idea of hosting data in the cloud out to the mainstream.

A while back I wrote The webtop - back in time? and I still think there is a reason for offering some service in the form as a webapp and there is a reason for desktop applications. Squeezing everything into the limited runtime environment that is the browser is not a good thing. We have better capabilities on the desktop and there is no need to get back in time and tie ourselves again to some kind of mainframe. It doesn't matter whether that happens over a wire or with a wireless connection - it's the same.

Maybe the bad experiences with a certain operating system that is plagued with viruses, worms, and trojan horses made people fall in love with the safety of a sandboxed environment named Firefox. I can understand that. But is that a good compelling reason for going back in time and seek salvation in the arms of mainframes and terminals? I don't think so.

Tags :

Sun offers support for Java 1.4 for the next 15 years

As a paid support offering for enterprise customers Sun now offers up to 15 years of support per Java SE family. Basically that means you could buy support for the Java 1.4 JVM and JDK for the next 15 years according to this press release.

Sun Releases Java Platform Standard Edition For Business:
Java SE for Business is designed for customers looking for longer, more predictable support for the platform - up to 15 years per family. Sun will also continue to support the latest non-subscription release of Java SE, at no cost, and deliver three years of quarterly maintenance updates per release family.

Some people have been dubbed Java the new COBOL (1, 2, 3, 4, 5). Looks to me that there were not mistaken ;-)

Tags :

The connection between accounting and sub-standard tools for developers

First of all I have to say that I'm really surprised by the feedback I'm getting. The post What's wrong with software development in large corporations has been the most read post on my blog ever. More than 3,000 people read it on the first day alone.

The other night when I wrote the post I could have gone on for a while. I didn't because it would have been far too much. So allow me to add a few things in this second installment.

Electricians with only a screwdriver and no other tools

Would you accept an electrician who shows up at your house with only a screwdriver in his hand? You probably expect such a professional to carry a number of specialized tools, some basic material and other things needed to perform the work - wouldn't you?

Well, I can report that one and a half year back we had exactly that happen to us in Panama City, Panama. We had some very strange things going on with the electric installation in our rental apartment (current on wires that should have none) and the administrator of the building called an electrician. After a three hours wait a man in his fourties arrived by taxi and from his bulky pants he pulled a single big screwdriver as his only tool. He then started to loosen and tighten some screws holding wires in place and never managed to solved the problem. I had the opportunity to see for myself a good part of the building's electrical wiring and I have to say that it looked to me as it were at least 50 years old. You can imagine that I was quite surprised when they told me the installation were only 10 years old. The explanation was that, yes, the materials used were taken from another building that has been torn down.

Now you might say that you can understand that because it's Latin America, Panama were a third-world country, etc. I'm willing to accept that - to a certain extent.

The connection between accounting and sub-standard tools for developers

But how do you explain why companies of any size let software developers work with inadequate equipment? By inadequate I mean slow CPU, few memory and a small screen. Some would probably say that I'm a big sucker for screen real estate as I had a 21" monitor on my desk back in 1995. But on the other hand I always paid the same amount for my computers through all the years. There is this saying that a software developers needs a new system every year and a half and see that exactly corresponds to Moore's law. Every 18 months you get twice the power or can get the same for half the price.

Software development is expensive and it takes a while to get it right. The professionals who possess the knowledge and long-term experience charge a premium and to me it doesn't make sense to save a few Dollars or Euros on equipment. I don't want to start talking about salaries here, but I think it's safe to say that a high-end, state of the art workstation with the biggest screen you can get is still far less than a month's salary. The question is why do so many companies hire expensive developers or pay expensive consultants just to slow them down artificially by letting them work on 15" laptops with a locked-down Windows XP and as little as 512 MB of memory? With that kind of system you start eg. Eclipse and Firefox to try out the webapp you are supposed to develop and then have to plan ahead of time where you are going to click ... Could be seen as some elaborate form of torture ;-)

Looking a bit deeper one will find that budget constraints are usually to blame for that kind of nonsense. The project gets funded out of one department's budget and the hardware is usually already there or provided by a central services department. And the services department usually charges an outragous amount - although it's kind of a fictious charge, as it is only ledger adjustments - for sub-standard hardware. So it's not that the company doesn't have the money. It is simply not available where it should be.

But that is only one part of the equation. In some cases one may want to ask why a department that is charged with software development doesn't have adequate hardware at all in the first place. I can't tell for sure how the taxation rules in the US are with regard to this, but in Germany the problem has always been that companies can only deduct expenses for new computers over a three years term. I remember it being five years and that has been reduced after a lot of controversy.

Actually it should not matter much how the taxation works. Software development is a big investment, the professionals doing it should be supported by the best tools money can buy in order to create the best software possible for the company they work for. So in the end it comes down to a leadership issue.

There are companies that get it

There are some companies that really get it. For example Matt Raible reports that LinkedIn is giving even contractors new MacBook Pros for their work and other companies buy their developers Macs with 30" screens at the workplace and at home. That truly expressed how they value and appreciate the work these highly skilled individuals are doing for them. Should be common but sadly it isn't.

Tags :

What's wrong with software development in large corporations

How much time does it take to become a knowledgeable professional? 2 years, 4 years, 10 years or half a lifetime? How much time does it take to become a good artist such as painter, musician or composer? What about the saying that good artists are born? That somehow implicitly means that either you are a good artist by birth or you aren't and you can try as hard as you wish, you'll never become a good artist even if you had an eternity.

What has that all to do with software development? If work in the IT department of a larger corporation or as a consultant helping them, you'll certainly can tell by now what I'm about to write next. It doesn't matter where you look, you'll get to know over time hundreds of people working as programmers for those corporations and it's very, very rare to encounter someone who really has a clue about what he's doing. Think about something as common as object-oriented programming. How many people do you know who really got it and are able to come up instantly with a good OOP design with good separation of concern, all those little collaborator objects talking to each other and so forth? I guess you will have to think hard. Sure there has been that one guy or gal but that's about it - isn't it? But you certainly can easily remember a fair number of people who call themselves software architect and the only contribution to the project you were working on where a lot of blockage and repeating stuff that sounded awfully similar to some vendor's sales talk to praise their rigid waterfall'ish tools.

But why is that? I think it has something to do with education and the expected behavior good employees should show. Let's start with the latter.

Today's corporations are still created after the organizational model of the military. Any military organization has a clear chain of command where orders flow down from high rank to lower rank and the lower rank is expected to execute the order given by the higher rank without questioning it. That works great in a battle situation - at least that's what you usually hear about that. But let's ask for a moment what that battle situation actually is. It's quite simple and cruel at the same time. Any battle ends with a large number of dead people and low ranking soldiers are disposable "units". Nobody really cares if they die. The less the know about the overall picture and the more they believe in what you want them to believe the easier it is to make them accept the risk, which nobody would ever accept under normal circumstances. But let's not slip into talking too much about that topic. The point is that in the military it is not common to not inform lower ranks about the overall picture, they get some strong motivation to do a stupid thing (put themselves up for being shot) and they are made to follow orders without questioning - and of course there are sanctions put in place for those who do question and not follow an order.

Now let's look at any corporation. The chief in command is the CEO. He has a number of officers (CFO, CIO, etc)., which command other officers at the departamental level and so on until it comes to the ranks of sergeant, corporal leading groups of privates. The sergeants and corporals are the low ranking line managers and the privates are the common workers. So in the world of corporate software development we can identify the programmer and tester as privates and their team lead as some kind of corporal. The project manager might be some kind of sergeant. As you can see that all so important project team is not so important after all. At least from the vantage point of the commander in chief, the CEO commanding the corporation.

How much time does it take to become a good soldier? Most armies of the world train their lowest ranking members for something betwen a 12 or 18 months. In the beginning they perform some tests to determine whether a person is better suited for less complex work, that is usually Army or manufacturing in most corporations, or for more complex stuff, which is usually Navy/Air Force or administration/support/development. Then basic training starts and the most important part of that basic training is to learn the rules. That is to make people understand that they have to obey orders or suffer consequences. In the corporate world the common consequences are reassignment or you simply get fired. And as people's well-being depends usually on their job, everybody understands all too well that it's a bad idea to show too much of an independent mind.

So... What is software development in its core? Is it some other form of manufacturing? Or is it research or art or what? Can you construct software or is it more that you create software?

It depends on how you answer these questions whether you want corporate soldiers (sergeants, corporals and private) to work on projects or not.

In my opinion software development is something between research and art. After all the word development implicates that something gets created for a purpose and before you develop you will have to know what the purpose is (the problem you want to solve; what you want to improve), what the environment looks like, who will use it, etc. So that includes a very large research component as well. I think one can describe software development as some kind of exploration with the goal to create something with a certain level of quality to solve a problem that is well understood.

That doesn't sound very much like a battle situation - does it? One may think that a good part of software development is about learning, reflection, experimentation and other activities usually associated with scientists. And when it comes to write the code then skills and attitudes, which musicians are known to possess, will be helpful. It needs an awful amount of time to practice test-driven development and be disciplined enough to implemented only what's needed to solve a problem described by a user story.

What's the situation of most corporate programmers? They get hired based on their resume and then put to work on a project. Typically the HR department decides upon hiring or not and they do some kind of pattern matching by looking at the keywords. They get a shopping list from the department and if it says Java, Struts and Junior Programmer, they will easily find someone with less than 5 years experience. Now that poor soul arrives and gets assigned some tasks by the team lead (sent into battle) and there we go. Will that person be creative? Will she be part of a group analyzing the business problem the team wants to solve? Usually not, because everything has already been done and now it's about to write the code based on a specification, which is kind of the battle plan.

Now here is a suggestion. Wouldn't it be great to employ the master/apprentice model known since the middle ages? Why do we allow inexperienced people to mess around with the most important thing in software, which is the code? I think a well motivated apprentice working alongside with a good master will evolve into a true master himself over the years. He will take more and more load off his master as his skills evolve. He will understand why the master does employ certain techniques and why he doesn't use X or Y in different situations. That takes time. But the quality will be higher and so will be the capacity of the whole team, because the team will be comprised of more masters as time goes on. That's an investment and corporation leaders would be wise to invest into the future of the corporation they serve instead of only stare at the short-term shareholder value created in any given quarter.

How long does it take to become a master? In my home country Germany plumpers, carpenters, painters, electricians and others spend three years as apprentices and easily up to eight years as journeymen before they are allowed to lead their own shop as masters. So that old saying "learn how to program in ten years" isn't that wrong after all. Between 4 - 6 years formal study at the university followed by an apprenticeship of maybe 2 years means one learns for at least 6 - 8 years. The next few years are then to hone one's skills and after 10 years one will know the whys and hows of software development.

Tags :