According to the Standish Group's just-released report, CHAOS Summary 2009; 32% of IT projects are on time, on budget, with the required business functions; 44% of IT projects are either late, over budget, and/or missing required business functions; the remaining IT projects (24%) are cancelled. This means in general a new IT has about a 4 in 10 shot of being a successful business project, which means that the odds are that it will most likely fail in some way. In fact out of 100 IT projects about 25 of them will be cut!
In fact it is even worst than it seems, these numbers are worst than last year's. Believe it or not, these are the lowest number in the last five years!
So what does this mean to you (assuming someone is reading this and that they work in IT)? Well, it means that most of the projects that you have work on in the resent pass have failed in some way. It also means that IT as a whole needs to improve their delivery of projects.
So what can IT do? We can try harder at understanding our business clients. The other day I saw a blog that got me thinking about how if you really want to understand your business clients you will have to become one, you will have to "Eat Your Own Dog Food". I read some where, that Amazon developers have to sometime every couple of years shadowing their business clients. I think this is a great idea, if you see how your business client really uses your software you will be better able to understand there needs and their pain points.
Now I do not think that sitting with your business clients every couple of years will allow IT projects to become more successful, but I think it would help.
Thursday, July 16, 2009
Tuesday, July 14, 2009
Use Real Business Function to Measure Progress
Today during lunch I attended the ThoughtWorks' Webinar "The Agile PMO". Not being a PM or anything like that I cannot comment on the content other than to say that I learned a lot about what PMOs do. But, that is not the point of this post.
At the Webinar Ross Pettit was talking about when a PM reports status to the PMO they should measure that status in terms of Business functions. To me this made so much since, I cannot believe I never thought of it before. I believe on most of my projects, many aspects of the project are 90% done for more than 90% of the project (this goes double for all the projects that fail or are late).
This 90% done for 90% of the time is not really any one's fault. You see most people in IT are optimistic (or they are very jaded and pessimistic). This leads people to believe that things will get done quicker than they normally do. That is why I think it is a great idea to report things in terms of how much Business functionality is done. If you report the status in terms of Business functionality, then all parties involved would be able to understand the status. This would help in avoiding the 90% done for 90% of the time, because either the Business functionality is available or it is not.
At the Webinar Ross Pettit was talking about when a PM reports status to the PMO they should measure that status in terms of Business functions. To me this made so much since, I cannot believe I never thought of it before. I believe on most of my projects, many aspects of the project are 90% done for more than 90% of the project (this goes double for all the projects that fail or are late).
This 90% done for 90% of the time is not really any one's fault. You see most people in IT are optimistic (or they are very jaded and pessimistic). This leads people to believe that things will get done quicker than they normally do. That is why I think it is a great idea to report things in terms of how much Business functionality is done. If you report the status in terms of Business functionality, then all parties involved would be able to understand the status. This would help in avoiding the 90% done for 90% of the time, because either the Business functionality is available or it is not.
Saturday, July 11, 2009
Is 0 positive, negative, or neither?
Zero as an idea that has a history of not being well liked (e.g. How can nothing be something?). You see people throughout history dislike the idea of nothing. Nothing is a scary and uncomprehensive idea for humans.
Despite all this, zero is said to be neither positive nor negative, instead it is neither (none of the above). Why is this? You see the idea of zero is that zero is a position on the number line. If you extended the number line out from negative infinite to positive infinite, zero would be in the exact middle. The best way to think of zero is as a place holder (in fact this is believe to be how zero got it start) between positive and negative numbers.
Despite all this, zero is said to be neither positive nor negative, instead it is neither (none of the above). Why is this? You see the idea of zero is that zero is a position on the number line. If you extended the number line out from negative infinite to positive infinite, zero would be in the exact middle. The best way to think of zero is as a place holder (in fact this is believe to be how zero got it start) between positive and negative numbers.
Tuesday, July 7, 2009
GOTO Hell
It seems that people have forgotten what Dijkstra said about GOTO. You see GOTO is actually being added to languages that did not offer it before (PHP5). Have we not learned that GOTO is too easy to abuse?
The argument against GOTO (as given by Dijkstra) is simple, when you use GOTOs you cannot tell without a great deal of work what a program executing has done. Example if you use the following:
n = 783
:start
i = 2
:loop
if n%i == 0
goto done
end
i = i + 2
if i > n
n = n + 2
goto start
end
goto loop
:done
print n
n = n + 2
if n < 100000
goto start
end
This program would not be very hard for most people to figure out what is going on, but what if somewhere deep in the source code called start or done--or even worst loop. What would happen if you call loop or done much latter in the code? Are you sure you know what the values of i and n would be? I agree GOTO does have it uses, I mean sometimes it can save you a lot of code (see the C code for ls). GOTO is at its best when it gets you out of a deep if/for/if/case/... structure, but you could always use private methods in order to get yourself out of those cases without a GOTO. You see there is no real reason to use a GOTO and as such I believe if the greater good it is best to leave it out of languages.
The argument against GOTO (as given by Dijkstra) is simple, when you use GOTOs you cannot tell without a great deal of work what a program executing has done. Example if you use the following:
n = 783
:start
i = 2
:loop
if n%i == 0
goto done
end
i = i + 2
if i > n
n = n + 2
goto start
end
goto loop
:done
print n
n = n + 2
if n < 100000
goto start
end
This program would not be very hard for most people to figure out what is going on, but what if somewhere deep in the source code called start or done--or even worst loop. What would happen if you call loop or done much latter in the code? Are you sure you know what the values of i and n would be? I agree GOTO does have it uses, I mean sometimes it can save you a lot of code (see the C code for ls). GOTO is at its best when it gets you out of a deep if/for/if/case/... structure, but you could always use private methods in order to get yourself out of those cases without a GOTO. You see there is no real reason to use a GOTO and as such I believe if the greater good it is best to leave it out of languages.
Labels:
C,
Call to Arms,
GOTO
Monday, July 6, 2009
The Problem with Too Many Sites and Only One Password
If you are like most people then you have one password and log-in for all of your web accounts. This is a really big problem, since now your security on-line depends on every site you have an account on. Now if one of those site gets hacked, bam; the thief is off to every bank website there is. With more and more people on-line and people having accounts at more and more sites, this is becoming a real issue!
One way to protect yourself is to have a system. You could do something as simple as add a pre and postfix to your password for each site (a different one for each site). Most people are not very likely to play around with that kind of thing on different websites so you are somewhat more protected.
One way that I just saw on Hacker News today is to use Stanford PwdHash. PwdHash is the program I was going to write for myself to protect my passwords but never really got around to it. PwdHash is a JavaScript and browser extension tool which generates a hash key based on the password and domain enter into it. For example, for the site www.example.com and the password of password (a very bad password) PwdHash will generate the value of 4QAIn8SvaW, a very good password. In fact Microsoft's password checker gives it a strong (password gets a weak). If you paste the password in twice on Microsoft's password checker it will become a best (add a ! to make it even better).
PwdHash seems safe, since you are not storing anything on a remote machine. I am going to try it out some more before I give it my really important accounts, but I think it will be great for social networking site (which may not have the best security). Give it a try, it has to be better than using your dog's name and zip code for every website.
One way to protect yourself is to have a system. You could do something as simple as add a pre and postfix to your password for each site (a different one for each site). Most people are not very likely to play around with that kind of thing on different websites so you are somewhat more protected.
One way that I just saw on Hacker News today is to use Stanford PwdHash. PwdHash is the program I was going to write for myself to protect my passwords but never really got around to it. PwdHash is a JavaScript and browser extension tool which generates a hash key based on the password and domain enter into it. For example, for the site www.example.com and the password of password (a very bad password) PwdHash will generate the value of 4QAIn8SvaW, a very good password. In fact Microsoft's password checker gives it a strong (password gets a weak). If you paste the password in twice on Microsoft's password checker it will become a best (add a ! to make it even better).
PwdHash seems safe, since you are not storing anything on a remote machine. I am going to try it out some more before I give it my really important accounts, but I think it will be great for social networking site (which may not have the best security). Give it a try, it has to be better than using your dog's name and zip code for every website.
Thursday, July 2, 2009
Focus
Christopher Alexander noticed that in Mexico building such as La Casa de los Azulejos in Mexico City attention is not paid to the laying of a single title. In fact most of the titles are not even straight. You see the craftsmen in Mexico pay attention to the over all picture, the relationship of one title to another. The collection of all the titles is what people notice, not the straightness of a single tile. The big picture is what matters, not one small detail.
In software, most of the time we fall into this trap (I know I have fallen into this trap more than a few times). We worry about the spacing in the source code, the placement of comments, the use of an UML Activity diagram over a BPMN diagram, etc. Most of the time the big overall picture is not looked at.
We should take a advise from the Mexican craftsman and focus on what matters. Does this code meet the requirements of the clients? Will this code fit into the overall enterprise? ...
-----------------------------------
Idea based on this 37signals post:
http://www.37signals.com/svn/posts/1778-christopher-alexander-on-the-perfection-of-imperfection
In software, most of the time we fall into this trap (I know I have fallen into this trap more than a few times). We worry about the spacing in the source code, the placement of comments, the use of an UML Activity diagram over a BPMN diagram, etc. Most of the time the big overall picture is not looked at.
We should take a advise from the Mexican craftsman and focus on what matters. Does this code meet the requirements of the clients? Will this code fit into the overall enterprise? ...
-----------------------------------
Idea based on this 37signals post:
http://www.37signals.com/svn/posts/1778-christopher-alexander-on-the-perfection-of-imperfection
Wednesday, July 1, 2009
Better than UML, the Next Big Thing, AML (Arbitrary Markup Language)
I got to say when I first saw Neal Ford's blog on AML (Arbitrary Markup Language) on Hacker News I knew I had to read it. AML is about the only design layout and style I've seen in the real world. When I see UML in the real world, most of the time is it not UML which follows the OMG standards. Instead the UML I see in the real world are diagrams which use the UML symbols in Visio, but I do not think the Three Amigos would call it UML. You see most people do not really understand UML and even if they do, they do not understand UML 2.0. Most people do not know about most of the symbols and diagrams that are part of UML 2.0. Most of the time in the real world you will get a Use Case Diagram, Class Diagram, a Sequence Diagram, and sometimes a Activity and Deployment Diagram. On these diagrams the symbols are close to being right, but they are not the official UML 2.0 symbols (most of the time they are the first options in for a symbol in Visio). To confuse things even more, most of the time if you have more than one person doing designs you can tell during a review that multiple people did the over all design.
Truth be told there is nothing wrong with this. The reason that you communicate is to pass on understanding and ideas from one person to another. So if the diagrams are not a 100% correct OMG official UML 2.0 diagrams, that is OK in my book. If the diagram can communicate what you want to say, then it is good.
What really stood out in Neal's blog on AML was when he said, " I'm a fan of AML, because it cuts down on irrational artifact attachment: you have nothing except the last 5 minutes invested in the diagram, making it as transient as possible". I never really thought about it, but the amount of time I spend on a design document is inversely related to my willingness to make major changes to it or throw it away. I find that this seems to be true with most other IT people too (I'd assume it is true for all fields). This attachment is completely irrational, it does not really matter how much time was spent on something, if it does not meet your client's needs (be it the business, another area, customers, etc.), then it should be changed to meet those needs.
That is the nice thing about AML, it is quick, direct, and to the point (said in my best Use Car Sales Man voice). You see AML is just boxes, circulars, arrows, lines, and whatever else is need to communicate your design and ideas in as clear and concise as possible. If you have spent any time in IT, you have by now seen a few different takes on AML and that is the whole point. If you can understand what the other person is drawing and trying to convey then the diagram is good.
Ever since cameras have been a common feature on most cell phones, I have been finding that most meetings in which a design in AML is drawn on the white board someone will take a few pictures of it and send it out in the meeting notes. If the design is really good, someone will draw it up in Visio really quick. To me this is the best way to design. Remember only you can fight irrational artifact attachment.
Now do not get me wrong, I am not saying that you should not think about your designs. If anything, I think that as much time as possible should be spent on designs (they are the cheapest thing to change and fix). What I am saying is that you should spend time figuring out what needs to take place and how to do it. You should spend as little time as possible on the symbols and layout of the design and as much time as possible thinking about all of the different things that you have to worry about in any design.
Truth be told there is nothing wrong with this. The reason that you communicate is to pass on understanding and ideas from one person to another. So if the diagrams are not a 100% correct OMG official UML 2.0 diagrams, that is OK in my book. If the diagram can communicate what you want to say, then it is good.
What really stood out in Neal's blog on AML was when he said, " I'm a fan of AML, because it cuts down on irrational artifact attachment: you have nothing except the last 5 minutes invested in the diagram, making it as transient as possible". I never really thought about it, but the amount of time I spend on a design document is inversely related to my willingness to make major changes to it or throw it away. I find that this seems to be true with most other IT people too (I'd assume it is true for all fields). This attachment is completely irrational, it does not really matter how much time was spent on something, if it does not meet your client's needs (be it the business, another area, customers, etc.), then it should be changed to meet those needs.
That is the nice thing about AML, it is quick, direct, and to the point (said in my best Use Car Sales Man voice). You see AML is just boxes, circulars, arrows, lines, and whatever else is need to communicate your design and ideas in as clear and concise as possible. If you have spent any time in IT, you have by now seen a few different takes on AML and that is the whole point. If you can understand what the other person is drawing and trying to convey then the diagram is good.
Ever since cameras have been a common feature on most cell phones, I have been finding that most meetings in which a design in AML is drawn on the white board someone will take a few pictures of it and send it out in the meeting notes. If the design is really good, someone will draw it up in Visio really quick. To me this is the best way to design. Remember only you can fight irrational artifact attachment.
Now do not get me wrong, I am not saying that you should not think about your designs. If anything, I think that as much time as possible should be spent on designs (they are the cheapest thing to change and fix). What I am saying is that you should spend time figuring out what needs to take place and how to do it. You should spend as little time as possible on the symbols and layout of the design and as much time as possible thinking about all of the different things that you have to worry about in any design.
Subscribe to:
Posts (Atom)