Category: Technology

Iterative development and branching

Scrum

Sandy Walsh, a colleague of mine at Rackspace who also works on the OpenStack cloud development project, has written a blog post on how Iterations and Time-boxing are (Mostly) Useless. It’s a well-written, thoughtful post, and I appreciate his perceptions, but some of them are (to my point of view) strikingly incorrect and unsupportable.

His general thesis can be summed up by these sentences:

Personally, I think Distributed Revision Control Systems (DRCS) such as git, bazaar or mercurial are the most significant change in software engineering within that last 10 years. Not because having a non-central repository is so revolutionary, but because branching and merging has become such a low-cost operation that the speed of software development has increased dramatically. Development shops that utilize these tools can see some big improvements in how they deal with the “Rough Edge” at the end of the sprint.

A major point of contention with Sandy is that neither the Agile nor the Scrum methodologies specify a branching or merge process, and thus it’s not the revision control system that dictates whether or not the methodology works. In addition, some of Sandy’s perceptions of the Scrum process appear to be slanted by not having had the experience of working in a smoothly-running, experienced Scrum environment.

Continue reading

Collaboration – it’s an open world

Crowd at #OpenStack

The normal modus operandi of the technology community is for companies (and their employees) to keep things close to their chests. Intellectual Property (“IP” in the vernacular) is the currency of choice in Silicon Valley and beyond. There is a real (monetary) value in having some unique technology because you can leverage that to sell products that everyone wants, but for which you are the sole provider.

On the other hand, if the technology is not unique, then it can be a very good thing to drive the value down (all the way to zero, if possible), because businesses can then compete on other measures. My employer, Rackspace (see my disclaimer in the sidebar), is a services company. We don’t sell technology per se, at least not in the same way that Apple sells it. Instead, we sell services, so it’s helpful to us for the technology cost to be as low as possible.

Continue reading

It’s Cactus in the Cloud

Openstacklogo 270x279

OpenStack, the open-source cloud-computing framework that I’m working with here at Rackspace, has announced its latest release today. This is the “Cactus” release, alphabetically following Austin and Bexar, and to be followed by Diablo. Read the whole press release for details.

If you’re not familiar with it, OpenStack has a number of cloud computing projects, including Nova (the compute framework that I’m involved with), Swift (a file storage service similar to Amazon’s S3), and Glance (a service for persistently storing virtual machine images). Other services are planned for the future.

The next release of OpenStack will kick off at the OpenStack Conference and Design Summit in Santa Clara, CA, during the last week of April. I’ll be there, so contact me if you’d like to get in touch then.

Software contingency planning, Donald Rumsfeld, and the epistemology of ignorance

In February, 2002, Donald Rumsfeld, then Secretary of Defense under George W. Bush, uttered an oft-maligned and usually ridiculed statement in a Department of Defense news briefing:

Reports that say that something hasn’t happened are always interesting to me, because as we know, there are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns — the ones we don’t know we don’t know. And if one looks throughout the history of our country and other free countries, it is the latter category that tend to be the difficult ones.

The language may be convoluted, but it’s impeccably true. We can be aware of our own ignorance: the “known unknowns,” according to Rumsfeld. However, it’s the things that we are yet unaware that we are ignorant of that are likely to bite us in the ass.

Software development has two major components. First, and most simply, is the active design, development, and testing of the code. Secondly, however, is the planning and coordination of the delivery of that code. Generally speaking, the larger the first part is, the more difficult the second one. A single programmer working alone can often easily predict how long it will take him or her to complete a specified unit of work. The more people that get involved in a project however, the more uncertain things become.

Continue reading

A good nights’ sleep

This is not my bed

I was diagnosed with presbyopia—”old eyes”—in 1997. At the time, the optometrist said that it’s not unusual, it’s just that I was getting it about 10 years before most people.

In 2002, I took myself to the doctor because of “crunching” noises in my knees that I could hear when I went up and down stairs. He referred me to a specialist, who told me that I had arthritis. It’s something most people will get eventually, he told me, it’s just that you’re getting it about 10 years early.

In 2006, we replaced the mattress that we had purchased when we moved to England in 1996. Both my wife and I had been having problems with pain—shoulder, back, etc., and we thought a new mattress might help. It did, mostly, but I still had a fair amount of back/hip pain and I lost a lot of mobility.

Continue reading

Working with grown-ups

Rackers

I made a comment on Twitter the other day that “I work with a team of rockstar developers @rackspace!” I’d like to make sure that this is understood.

Calling someone a “rockstar” could possibly mean that they are overpaid, under-talented, self-centered divas. That’s not the meaning that I was trying to convey. In this case, I’m using rockstar to mean someone who is superbly talented at his or her job.

In most development teams I’ve worked on in the past, there’s usually one or two senior developers, a few people with 5-10 years of experience, and a bunch of younger (“junior”) programmers. This is quite normal, and it ensures that the expertise of the senior folks gets distributed to the less-experienced members of the team. It also makes financial sense to the business, because junior programmers cost less than senior ones, and, even though they may be less productive, they can still leverage the expertise of the more senior developers.

Continue reading

Eating my own dogfood

For those of you not in the software industry, you may find this a bit grotesque, but there’s a common phrase used: “eating your own dog food.” It does not refer to a nasty habit or fetish; rather, it means that the software company itself uses the software that it creates. If you work for Microsoft, you can bet that you’re using Microsoft products for most of your day-to-day tasks.

As I think I may have mentioned before, I’ve taken a new job as a software architect for Rackspace; specifically, I’m working in the Rackspace Cloud division. In the spirit of eating one’s own dogfood, then, I’ve created a Rackspace Cloud Servers account and have started to migrate my personal websites to it.

Continue reading