To paraphrase Kent Beck: software delivers no value apart from runtime. Ideas
take physical form in hardware, virtualized only part of the way down, and
someone other than the developers makes the ideas manifest. So then: ops
folks are the crop's caretakers; developers design the seeds.
Well, of course this isn't true. Developers don't turn pie-in-the-sky math
into socially constructive math that sysadmins then make useful. No:
developers write code that makes things happen. We care about runtime just as
much as ops, so we need to know how our software is helping people in
reality-and how it can do a better job-in order for us to refine both the
ideas and the implementation.
So cycle-time shortening-the metric of continuous delivery, and one of the
Twelve Principles of Agile Software-is equally about users and makers.
Working software delivered sooner is better for ... (more)
Fail fast, fail often. Yeah, but the first failure blew up the
satellite. Well, this is just a photo-sharing app..not rocket science. Okay,
but your photos are accessed by users who have passwords that they probably
use for other things..and aren't some photos as important as satellites?
Several problems arise when the harm of software failure cannot be treated as
an unbound variable. Here are some thoughts on two. I'll write more on two
more (one cognitive, one computational) later.
Problem 1: Identity Persists Across Non-Obviously Coupled Systems (So the
Stakes Are Higher Than ... (more)
Technical decisions around data persistence are hard, which is why we
surveyed 583 IT professionals on everything from current DBMS and ORM usage
to modern database engines' data structures and access patterns to storing
data on a mobile device.
The demographics of this survey are as follows:
69% of these respondents use Java as their primary programming language at
work. 68% develop primarily web applications. 66% have been IT professionals
for over 10 years. 45% work at companies whose headquarters are located in
Europe, 27% in the USA. 44% work at companies with more than 500 ... (more)
Data persistence has a way of sneaking up on developers. You start out with a
simple, straightforward database that can functionally hold the data you're
working with and the data you need to work with later. But as your needs
change, you start to modify it here and there, until it becomes a brittle
tangle of tables and keys and indexes. You need something more dynamic, but
you need to retain the ability to retrieve your persistent data. Now, you're
miles from where you started, and staring down the possibility of having to
adopt a whole new system. That persistent data is fundam... (more)
Programming is hard, but hard stuff can also be fun -- like when you're
juggling six levels of abstraction and barely (but totally) keeping the
namespaces straight; in the mental monad-zone nesting a dozen functions like
mad; suddenly realizing that this whole block could be refactored into a
five-line, more readable, much faster recursive procedure; churning out
classes and having your tests pass on the first try.
But programming can be unpleasant too -- like when a stack trace tells
you nothing at all what the heck, or when you have to untangle the lousy
code some how-did-this... (more)