Wednesday, May 21, 2008

Server Up Time

For a windows machine,

"The 'net statistics workstation' command will tell you the last time your
computer was rebooted."

From
http://www.itnewsgroups.net/group/microsoft.public.windows.server.general/topic8056.aspx

Wednesday, May 14, 2008

Improve My Software Delivery Commitments

In Oct 07 I first read about the Evidence Based Scheduling feature of FogBugz. I like reading Joel Spolsky because he seems to tell it straight regardless of the subject. This time, it stung. Software projects are chronically late. Most projects I have been on in the last 9 years are no exception. When I read this article, I took up courage to ask a co-worker about it. He was excited about using something like this.

Well we took the plunge. We tried FogBugz for a month in January and then bought some licenses. I recently got a new supervisor. She seems willing to try out FogBugz as our software project management tool.

From Evidence Based Scheduling,
Why won’t developers make schedules? Two reasons. One: it’s a pain in the butt. Two: nobody believes the schedule is realistic. Why go to all the trouble of working on a schedule if it’s not going to be right?

Over the last year or so at Fog Creek we’ve been developing a system that’s so easy even our grouchiest developers are willing to go along with it. And as far as we can tell, it produces extremely reliable schedules. It’s called Evidence-Based Scheduling, or EBS. You gather evidence, mostly from historical timesheet data, that you feed back into your schedules. What you get is not just one ship date: you get a confidence distribution curve, showing the probability that you will ship on any given date. It looks like this:

The steeper the curve, the more confident you are that the ship date is real.
Here is a 70 minute video Joel Spolsky made in Oct 07 that explains the Evidence Based Scheduling feature of Fogbugz.

Frederick P. Brooks in 1987,
Not only are there no silver bullets now in view, the very nature of software makes it unlikely that there will be any—no inventions that will do for software productivity, reliability, and simplicity what electronics, transistors, and large-scale integration did for computer hardware.... I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation.... If this is true, building software will always be hard. There is inherently no silver bullet.
Fogbugz is not the golden goose that will solve all software development problems. As I persist in my discipline to use it, it will help me make more accurate delivery estimates.

Wednesday, April 02, 2008

"An order of magnitude better"

We have been looking for one of the best programmers at my work. Since my supervisor no longer can do the leg work of phone screening and setting up interviews, I have volunteered to take this hat. It has been a revealing exercise.

There is a consensus in the software development industry that the best programmers are "an order of magnitude better than the average ones" Spolsky.
A Guide to Hiring Programmers: The High Cost of Low Quality, revsys.com

"there is at least an order of magnitude of skill difference between the average programmer and the best programmer, and maybe even two orders of magnitude" Barnes.

"many studies have shown order of magnitude differences in the quality of the programs written, the sizes of the programs written, and the productivity of the programmers" McConnell

"[Bill] Curtis observed order of magnitude differences among the programmers" McConnell

Skill Disparities in Programming. Atwood.
I am by no means one of the best programmers. I generously consider myself in the upper end of average. One of the things I remember from my interview with Vitrix years ago was that they wanted to hire people smarter than themselves.

With the help of another programmer and a few resources on the web, I have gathered a list of interview questions that discover the skills and qualities of a developer. I am sure we will find a match with someone passionate about effective software development.

Here
is our job posting, by the way. If you think you fit the drive, curiosity and skills to join us, come on! Even if you think you are shy on experience, take a plunge. We will be gentle.

Tuesday, April 01, 2008

C# XML documentation

We are using sandcastle to generate help documents from xml comments of our code.

Remember, /// will get you started.

C# XML documentation comments FAQ

MS Windows Workflow Foundation

Someone as work mentioned that we might consider MS Windows Workflow Foundation after hearing us describe the project we have been creating for the last many months. Following are some notes I took in my introduction to it.

ASP.NET and Windows Workflows Foundation

Manage application processes with Windows Workflow Foundation Brian Noyce

Link to a poster of Microsoft .NET Framework 3.5 update to the Commonly Used Types and Namespaces.


Notes from Michael Stiefel on Windows Workflow Foundation
1 of 4

"Workflow is the automated processes of a Business Process" Reliable Software

6:21
Reusable Business Activities
Separate Workflow from Activity

This workflow is hosted somewhere. Sharepoint?

Workflow runtime

9:50
Concept of Host
Concept of Activity
Concept of Workflow

10:30
The dream is these activities will be manipulated by Business Analysts in a drag and drop way.

2 of 4

5:30
Activities are not small atomic. These are long processes.
Programmers cannot stay in the back room. You are not of high value. You are just a coder.

Tuesday, March 25, 2008

Just Do It

After having a conversation with a collegue where we turned grandiose in our plans, he became frustrated because of the obstacles in our company. I said, "do get some code working and you'll feel better". Joel had this to say in Getting Things Done When You're Only a Grunt.
A lot can be done to improve the project just by one person doing it. Don't have a daily build server? Make one. Set your own machine up with a scheduled job to make builds at night and send out email results. Does it take too many steps to make the build? Write the makefile. Nobody does usability tests? Do your own hallway usability tests on the mailroom folks with a piece of paper or a VB prototype.
.

Outbound Filter or Inbound Filter

I have had three occasions to remember Joel's reference to tact filters. He said
there's always some person without an outbound filter who feels compelled to tell you about how he uses Opera, so he doesn't have this problem, although, frankly, I could care less what Anonymous uses. He's not even human to me, he's anonymous.
Joel refers to Jeff Bigler's description of Tact Filters. Here is Jeff's entire post.
I came up with this idea several years ago in a conversation with a friend at MIT, who was regularly finding herself upset by other people who worked in her lab. The analogy worked so well in helping her to understand her co-workers that I decided to write it up and put it on the web. I've gotten quite a few email messages since then from other people who have also found it helpful.

All people have a "tact filter", which applies tact in one direction to everything that passes through it. Most "normal people" have the tact filter positioned to apply tact in the outgoing direction. Thus whatever normal people say gets the appropriate amount of tact applied to it before they say it. This is because when they were growing up, their parents continually drilled into their heads statements like, "If you can't say something nice, don't say anything at all!"

"Nerds," on the other hand, have their tact filter positioned to apply tact in the incoming direction. Thus, whatever anyone says to them gets the appropriate amount of tact added when they hear it. This is because when nerds were growing up, they continually got picked on, and their parents continually drilled into their heads statements like, "They're just saying those mean things because they're jealous. They don't really mean it."

When normal people talk to each other, both people usually apply the appropriate amount of tact to everything they say, and no one's feelings get hurt. When nerds talk to each other, both people usually apply the appropriate amount of tact to everything they hear, and no one's feelings get hurt. However, when normal people talk to nerds, the nerds often get frustrated because the normal people seem to be dodging the real issues and not saying what they really mean. Worse yet, when nerds talk to normal people, the normal people's feelings often get hurt because the nerds don't apply tact, assuming the normal person will take their blunt statements and apply whatever tact is necessary.

So, nerds need to understand that normal people have to apply tact to everything they say; they become really uncomfortable if they can't do this. Normal people need to understand that despite the fact that nerds are usually tactless, things they say are almost never meant personally and shouldn't be taken that way. Both types of people need to be extra patient when dealing with someone whose tact filter is backwards relative to their own.
.