Monday, November 29, 2010

How to accurately estimate projects.....

Most people estimate how long something will take by trying to figure out how long a task will take. Most of the time that works, however for software, it fails miserably. See, it's not about the task, it's about the behavior the user wants. Behavior can't be easily defined the same way a task can be.
Take for instance this task:
Resolve issue with business stuff that's irrelevant (default materials lists were not being created w/ new programs)

The key here is the word issue. It's not defined. So you have to figure it's at least10 hours to get it defined. Then you can get actually implement what they want. Then you have to define what a default materials list is, and what they mean by default. The more people that are involved, the longer that will take. Say another 10 hours at least.
See, the easy part is writing the code. The hard part is figuring out what the heck it's supposed to do. Most project managers, and project management software think that's a task. It's not even a requirement.
Here's another one:
Final notification would be provided to someone indicating that they were something good

Here again the words final notification provide a whole world of unknowns. How will this happen? Will the user have the option to specify the method of notification? That's probably another 10-15 hours of wrangling right there. Then, another 5 hours for the actual content of the notice itself. If it's different formats, you might have another 5 hours wrangling over typography, format etc.
Another one:
Ability for roles within some department to search for people and leave notes

Roles? Which roles? Are they new roles? Search for people? By what SSN? customer ID, email? phone number? Do you know how many ways there are to find someone? Then how do you present the list? How does the user know that they have found the right person? *SIGH* Another 15-20 hours of wrangling.
Here's one more, and one of my favorites:
Business status identified and managed effectively

Manage? Manage? What does that mean? Simple Create/Read/Update/Delete functionality? Do we need a business rules engine? There's a huge difference between managing a 3 person business, and a multi-national corporation. Manage.. really... not even close to being a good requirement.
So what makes a good requirement? Anything that defines behavior. That's not something that can be defined in a single sentence. It's certainly not something that can be defined easily in MS Project, or any other project management software. It's at least a paragraph, probably more.
See not only do you have to define what you want the software to do (how it behaves) when things are good, but also when things go badly. There are usually more things that can go wrong then can go right. Each of those is it's story, it's own behavior.
Project management says you can start when you have all the tasks that need to be accomplished specified. This is just not possible. You're not done when all the tasks have been accomplished. You're done when the software behaves as the user wants.
This is where Behavior Driven Design comes in. It's not a methodology for project management. It's not a silver bullet for all your software project woes. It's a method of doing the hardest thing there is to do in any project: communicate. It focuses the attention of everyone on the project on the two single most important things in any project: Behavior, and communication.
You can find out more at: the wiki article and at the website

Wednesday, February 17, 2010

Critical Thinking in the corporate world, by the top brA55es

We get a 22 page document on how to fill out a defect report in Jira. This would not be so bad if it was 22 pages of how to describe and detail defects in a coherent way. It was instead 22 pages of work-flow, which is entirely driven by Jira anyway, and therefore does not need documentation.
Instead it was describing the use of 3 fields in order to allow management to do apples-to-apples comparisons of bugs. Only an MBA (Massively Bad Advice) could come up with something so incredibly asinine. Bugs, like real estate are unique. A bug in one application is not the same as a bug in another application.
What they mean is that they want a way to determine which bugs they want to get rid of, and which ones they want to keep. This means that by definition defective software is acceptable. Which means that at my employer, quality is not a primary concern.
Yes folks, MBA's think defective software is acceptable to deliver to the customer.
Is there any wonder why I call being made a manager, a demotion.......

Tuesday, October 27, 2009

One to Many relationship in liftweb

Most of the other examples don't follow all the way through, leaving you at the "Oh gee, the mapping is done, now how do I get to select the many". My example is not to show the One to Many where the Many are dependant on the one, but rather choices that the one can belong to the one. So for instance you have a Party which has a many to many relationship with PartyType. However, a Party can have different types at different times, so you need a one to many from the party to some intermediate class (we'll call it PartyClassification), and then from PartyClassification to Party Type.
Something this: Party[1]->[N]PartyClassification[N]<-[1]PartyType.
The Party[1]->[N]PartyClassification part is fairly easy to do, and I'll cover it later. However the PartyClassification[N]<-[1]PartyType is more interesting. You can't create a PartyClassification without a PartyType, and you have to present the user with a selection of PartyTypes that the PartyClassification can have.
Now, for the example I'm going to use One[1]->[N]Many as the actual names. I could use PartyClassification and PartyType, however whenever I follow examples with "real" names, I sometimes forget which is the many, and which is the one. I'll assume the same happens to you, and keep it simple.
So we start with a fresh mvn archetype install.

Saturday, April 11, 2009

Selling a customer experience not a product or service

http://www.venturecompany.com/opinions/files/serviceforce_is_a_big_deal.html

Business Plans

http://www.pehub.com/36689/study-finds-business-plans-a-waste-of-time/
I've heard this before, from some of the VC blogs I follow. They use the plan as a filter for people they don't know. Same for angel investors. I think they understand that the plan is only good until you open your doors, and then you have to adjust as you go, making the plan fairly obsolete fairly quickly.
In Art of the Start, Guy Kawasaki says there are 5 things you MUST accomplish as an entrepeneur:
1) Make Meaning
If you're ogarnization never existed, the world would be worse off because _________________________________
2) Make Mantra - as opposed to a mission statement
In 10 words or less write your organizations mantra:
3) Get Going
Just go do it. Now please :)
4) Define your Busines Model

1. Calculate your monthly costs to operate your organization
2. Calculate the gross profit of each unit of your product
3. Divide step 1 by the results of step 2
4. Ask a few women if you have a chance of selling that many units. If you don't , no business model

5) Weave a MAT - Milestones, Assumptions and Tasks
Okay, this is a big section.. buy the book!

Standout in a crowd

Watch this link
Okay, so the guy is a bit.. aggressive but is he wrong? No, I don't think so .
Coll Business Card Designs
Super hero Cards
Show Off Cards

Sunday, March 01, 2009

Thoughts on regulations and laws.

Here's an interesting article from Slashdot
Click to read. Note Slashdot is a technically oriented site, more interested in technology then politics.
So if a huge rental fee is charged, enough to leave the wireless bands to the major players in the space to rent we stand a good chance of killing innovation. While I don't subscribe to the "All innovation comes from small company" theory, with the state of things now, it's very cheap and easy to start a business and get it running on the internet. Wireless internet, and the devices like iPhone, Storm, Android and others on the way; we could be chilling new company's from getting started.
Let me give you an example: Click to read article
Did the Federal Alcohol Administration Act of 1935 mean to squash competition? No, I don't think they did. Did they mean to effectively make Budweiser the national beer of the U.S? No, I don' think so.
Nor do I think Jimmy Carter intended to allow 1,463 breweries, including 975 brewpubs to spring up across the country. I think his intention was to de-criminalize a hobby. I would tend to doubt that he even thought something like this would happen. I don't think anyone did. They just lifted the regulation, and Capitalism took over. As it always does.
I'll give you another example. There is something called The Ugly C Code Contest (okay, if you Google for that you wont find it, try The International Obfuscated C Code Contest). C is a programming language. The contest is to use and abuse the language to create the ugliest working program you possibly can. Every year, at least 1 new rule is added, because someone obeyed the rules in a new and unique way, that really shouldn't have been done. These are celebrated, although not allowed to win, as being particularly clever. However, despite the ever increasing number of rules, the contest is very freewheeling and encouraging of new ideas and strategies. It is it's view of the rules, and encouragement of innovation that keeps it going for 24+ years. Missing only 1 or 2 years in that entire time.
That's pretty much sums up how most conservatives (that I know) view business regulations. There is a fine line between killing innovation, killing the economy, and keeping people from killing the ideas and concepts that are the United States. I can look at what the financial industry put together and appreciate the cleverness of what they did. I also support eliminating derivatives, and mark-to-market accounting. Those two things alone would have at least made the crash easier. A third thing might be to give up trying to control the economy all together.
This may very well mean getting rid of the Fed. You can make a very strong argument that one of the keys to the real estate collapse was cheap money.