My favorite backpack finally failed on Friday.
The zipper had been in rough shape for a week or so, but for several days I had managed to jam in my sneakers and gym clothes and the unfortunately large Amazon-issued ThinkPad laptop, plus some notes and papers, and I had been able to get it to close as long as I zipped only in one direction.
But Friday, on my way home from work, the main zipper really went to hell, so I ended up grabbing one of the zipties in the mess at the bottom of the pack and securing the front-pocket zippers to the grab-handle at the top, which was good enough to get home.
Bonnie says the nice people at the local cleaners can fix the zipper, which is cool, but that requires emptying out the backpack. This backpack has traveled with me all over the world; it also serves for day hikes in the Cascades in the summer. It would be easier to enumerate the times that I have left the house without it than the rare times that it has stayed behind.
I emptied it this evening after dinner into a flimsy plastic Safeway bag and, as I was in the kitchen near a scale anyway, I weighed the contents of the random junk after gym clothes were dumped in the washer and laptop was safely plugged in: total weight remaining = 1.5 lbs.
A partial list: two contact lens cases, a small plastic compass, a compact first-aid kit, a half-empty Crest toothpaste, a pink-ribbon Master lock (I never have trouble spotting my locker in the men’s room), 3 multi-colored and 6 plain zipties, a spare credit card (it works) and the May 2010 edition of Harper’s that I haven’t been able to discard, even though it’s crumpled into a tight roll, because of Edward Hoagland’s article “Last Call.” It’s as close to a Bible as I have right now.
Starbucks mints, iPod headphones, lip balm from the kids’ orthodontist, a plastic knife, a couple of keys (one I’m pretty sure opens a safe at a former job). Also a winning lottery ticket from a Christmas stocking several years ago (I won $2). A half-empty small Motrin and the gloves that Amazon handed out when I spent a couple of days working at the warehouse.
All this together weighs 1.5 pounds according to the kitchen scale.
# rm PowerOn.snd
# rm PowerOn.wav
I find myself explaining this a lot, so it’s time to write it down for reference.
In software development, one encounters 3 types of PMs: Product Managers, (Technical) Program Managers, and Project Managers. It is important to know the difference between the three.
Product Managers have an MBA. They have a deep and visceral understanding of how the money flows in their market segment. They know their competitors’ products as well as their own, and they understand technology enough to trade off between major features and inform key product decisions. They may have dabbled in code here and there, but by and large they are not “technical”.
(Technical) Program Managers have a CS degree, and likely were professional software developers at one point in their career. (Part of their authority derives from this being a credible threat: “If you won’t write that code, I will.”) They know their customers better than their own family, and they are good enough project managers not to miss too many details.
Project Managers are experts in building project plans, and may even be professionally certified in doing so (PMP, etc.). Typically, they do not have either advanced business or technical degrees, but many have gained a deep and visceral understanding of the risks, dependencies and pitfalls in professional software development.
(Note: One frequent point of confusion is that there is a non-technical definition of Program Manager as well- in traditional project management, e.g. building airplanes or bridges, a program manager is the overall coordinator of a large effort and may also directly manage a team of project managers. However, in software development, the technical definition of the role predominates. In some organizations, the abbreviation TPM is used to make it totally clear.)
The definitions above I think are fairly common, and probably won’t elicit much debate. Below is my opinion on the importance and priority of staffing these roles. Obviously, on a small software team, it makes no sense to have 3 non-coding contributors - so who do you hire first?
If you have any intention of making money from the software you are building, you hire the Product Manager first. It’s her job to figure out how the money is going to be made, and that ought to be an important prerequisite for building the software in the first place. (In startups, this role is frequently fused with that of the CEO until the company gets off the ground.)
Once you have a team of a half-dozen or more developers, a growing base of customers with conflicting requirements, a deep backlog of technical improvements to be prioritized, and generally a bit of a mess on your hands, you may find yourself needing a Program Manager. The criterion for hiring one is simple: will adding a full-time non-coding technical resource to this project improve productivity, retention and general happiness of both customers and the existing development team enough to make it worthwhile?
Once you have multiple development teams, with complex dependencies between them, sometimes with external vendor dependencies, sometimes spread across multiple sites or countries, sometimes answerable to different parts of a large organization, then you may find yourself needing a professional Project Manager. By this time the overall scope of the project is perhaps 40-50 engineers, and just communicating up-to-date status is a significant job.
Some organizations, often web development or consulting shops, use Project Managers in place of (Technical) Program Managers to coordinate projects at the small-team level (3-10 developers). This is probably fine if you’re building vanity web sites and the like, and it definitely saves money, but it is probably not a good idea if you are building more complex pieces of software.