May 30, 2015 - Why a Software Carpentry Instructor

The University of Vermont’s 1993-94 undergraduate catalogue lists CS 011 Computer Programming I as a first semester course for freshman in the civil engineering bachelor’s program. I however entered UVM in the fall of 1993 as an environmental studies major so I did not take it. When I switched to civil engineering the next year, the recommended programming course had changed to CS 016 Programming in MATLAB and as Frost said, that has made all the difference.

That course was a new addition taught for the first time by Maggie Eppstein. She was a lecturer in 1994 but is now the UVM computer science department chair. This was my first experiance programming and it was a revelation. I fell in love with the act of creating something that worked just the way I wanted using a langage that was completely logical. Every programming concept Maggie introduced just seemed obvious and natural. I don’t remember ever studying or reviewing anything after lectures, I just did the programming homework in a couple hours and aced all the exams.

I got an A+ in the class (nerd!) and enjoyed it so much that I signed up to be a TA the next semster. For 5 to 10 hours a week I sat in office hours working through homeworks with struggling students and ran around in the hands-on labs trying to keep everyone caught up with Maggie who would be scrawling code on the whiteboard. I kept TA’ing that course for 5 semesters until I graduated. It was the first job that I chose to persue myself - no parents involved.

I have been thinking about my experiance for two reasons: first because I read this article in the Spring 2015 UVM College of Engineering and Mathmatical Sciences Summit newsletter. The protagonist, Caitlyn Bishop, is a former biology major at UVM who took the same course nearly 20 years later as an elective and also fell in love with programming. She ended up switching to math and computer science as a result of her acidental discovery. I was supprised by how coincidently similar her discovery of programming was and I started wondering how often this happens.

The second is that I just went through the Software Carpentry instructor training program. In our final conference call, Greg Wilson said something along the lines of “Congratulations on completing your training, now let’s get you signed up to teach some workshops.” This was the moment where I started to wonder “Wait, what did I just volunteer for?”

The answer to that is that I volunteered to help people decide if programming is for them. That is really what I enjoyed about TA’ing MATLAB and that is what I want to have an opportunity to do again.

And maybe like Caitlyn, some SwC students can find out early what they are truely interested in to make the most their time in college or early careers. I haven’t designed a beam in 20 years and I’m still catching up on basic math and computer science concepts because I didn’t follow the programming road on to where I should have: computer science.

Some more fun college computing stories:

When came for my orientation, the engineering school made a big deal about how they had just finished upgrading the 386’s in the main computer lab with DX co-processors so they could use the new 3-D drafting appliations.

Sophomore year was the first year UVM offered wired network connections in dorm rooms. But they blocked IPX networking which DOOM used for multi-player so we bought thin-net coax network cards (no expensive hub required!) and ran cables down the halls to network our computers together.

The day I got my computer in my dorm room hooked up to the Internet, one of my friends cam over and started showing me gopher and FTP sites. Some time during that session I started wondering if I could some how limit my paper topics to just subjects that I could find references for on FTP sites so I wouldn’t have to go to the library ever again. I don’t think I ever checked out a book in my 4 years at UVM.

At the start of what must have been the second mid-term in Maggie’s MATLAB class, she walked in with a pillow case half filled with Halloween candy. Apparently she had some sort of disciplinary issue with her kids and they had their candy confiscated. She brought it in for us since she couldn’t eat it all. To this day I always feel just a touch let down when I walk in to an exam and there is no candy.

Apr 30, 2015 - Bus Factor Valuation

Probably most IT folks are familiar with the “bus factor” or “the lottery factor” if you prefer to think of good things happening to your coworkers. It’s the number of people who can get hit by a bus (or retire to a Carribean Island) before a project is doomed because no one knows how anything works.

The question is, what is a good bus factor? For really small projects it’s simply going to be 1 and that is just the way it is. Hiring two people who both have complete knowlege of one job is just too expensive and the project simply won’t happen. For a larger project, how do you know whether 3 or 5 or 10 is appropriate?

Enter the Bus Factor Valuation Formula:

actual value = desired value * (1 - 1/bus factor)

From a graph of that last term you can see that this is a pretty harsh function for small teams:

[Bus Factor Valuation graph] (https://www.desmos.com/calculator)

If only one person knows how everything works, your project is worth nothing. Even with 2 people knowing how your project works, your project is really only worth half of what you want it to be. Past 4 or 5 people the value flattens out fast. If you want to get more than 80% of what you think your project is worth, you need to start thinking about redundant teams, not redundant people.

I won’t make any statements about the fact that this equation imples every project is worth less than anyone thinks it is.

Here is my coworkers’ take on this idea:

Bus Factor Whiteboard