Too long in one job

“What have you learned from maintaining your own code?” is a pretty decent question to ask candidate programmers. Many people we interview have never stayed longer in a job than 2-3 years. That’s enough to build something of size, but often leave without seeing whether it’ll stand the test of time.

I’ve been with my current company for seven years now. It’s enough to let me see how my earlier ideas played out in practice. And boy, have I been wrong at times. Several of the components I wrote are now part of our technical debt and when I do a technical introduction for newcomers, on several items I repeat “that one’s my fault”. What I thought will ease maintenance and development, either doesn’t anymore or never did. It’s been seven years of excellent education, and one that I was being paid for.

There are a lot of good reasons to change employers. Abusive work environments and dead-end, repetitive, I’d-rather-die-boring positions top that list, and if you’re in one of these places, you cannot leave too soon. But my approach was always that once I agree with my employer to a set of conditions, including fair pay, humane work environment and, importantly, lots of space to grow, I become committed to that relationship for as long as these conditions are upheld.

On the other hand, some of my colleagues left, lured by offers “too good to refuse”, presenting massively interesting challenges to tackle. Modern technologies, booming industries, novel approaches. Often sweetened with better pay. I cannot blame them and I cannot say myself what I would’ve done if presented with such an offer.

One can certainly also make the argument, that others’ work is just as good a source of learning, as one’s own. That going to a different place, working with different people will expose one to other, often better approaches. Of course. I’m just afraid of this turning into a cargo-cult spiral, where you acquire new ways of working without taking the time to understand them—why they succeed and where they fail—before moving on to the next big thing.

Instruction vs. Experimentation
From Jessica Hagy’s Indexed

It’s complicated. There’s no good number or even range of years one “should” spend in a single place. Not without considering the context of this time—the company, the people, the work and alternative opportunities. And in a world of abundant opportunities, such as the one we have now in IT, it’s crazy difficult to decide whether and when to make a move.

The unconference experience of SoCraTes 2014

Flip-flops, sandals, occasionally a pair of Vibram Five Fingers and some people walking barefoot. It’s the definition of the laid-back spirit at SoCraTes 2014, an unconference I joined last week, made for and by software craftsmen. It was my first ever unconference experience and while I found the format unsuited for my personality, the energizing power of that community was exceptional.

SoCraTes logo

SoCraTes stands for Software Craftsmanship and Testing – an all-in-one statement embodying the aspiration to become better at creating software tomorrow than we were today. That’s all there was available before the event to describe its contents. No calls for papers, no formal agendas, speaker profiles or anything one would expect from a regular conference. All sessions for the day were announced each morning, often sparked by the previous night’s conversations. One literally comes there without knowing what to expect.

Pitching sessions

For two days, first thing after breakfast, all 150 of us met to fill in the agenda, by pitching sessions and sticking them somewhere onto the grid of available times and spaces – a morning conference-room lecture on micro-services, or perhaps an afternoon debate on freelancing strategies in a garden setting? Anything was possible, because in Open Space Technology:

  • Whoever comes is the right people.
  • Whenever it starts is the right time.
  • Wherever it is, is the right place.
  • Whatever happens is the only thing that could have.
  • When it’s over, it’s over.

and perhaps most importantly:

Law of two feet
If at any time during our time together you find yourself in any situation where you are neither learning nor contributing, use your two feet, go someplace else.

SoCraTes attendees spent days strolling between sessions, then evenings and nights playing board games, learning to juggle, explaining complex software architectures with beer glasses, or mob-programming in Cobol.

So, how was it for me? Mixed.

There are consequences to participating in an unconference. On the positive side, there’s the flourishing creativity. Every single person I met at SoCraTes was passionate about their work to the point of making me ashamed that I didn’t know enough about the field and probably didn’t work hard enough to learn. I actually had to get some work done in-between, just to improve my morale, like finishing a blog post and publishing a microscopic framework for content websites.

On the negative side, however, was a certain level of disorganization and common lack of substance. With no information on sessions published beforehand, there was no way to make a reasonably informed decision about which ones to attend. I had to decide on the spot, at 9 o’clock in the morning of the day, based on titles and 30-second pitches. A few people came with prepared sessions, but many just improvised them.

The result is that most sessions ended up being discussions. A session owner may have introduced the topic and then some of the people present talked through its selected areas. While that’s a useful form for a meeting of peers trying to fill in their gaps in knowledge, it doesn’t work well for the less experienced who would like to learn in a more structured fashion.

In theory, the law of two feet removes the burden of having to sit through a bad session, but in practice leaving one session makes you arrive at another one mid-way, which often makes it difficult to join in and follow the flow of information.

After the two days I didn’t feel I took away much, despite the amazing variety of sessions and the astonishing scope of knowledge of all their attendees.

In Philip Zimbardo’s classification of time perspectives, I’m clearly a future-positive-oriented type. I like to prepare ahead and anticipate what’s coming. I also like concise conference sessions where presenters share the experience of their past work, like describing a specific project, a piece of software they built, and the lessons they took away from it. Concrete, credible, and structured.

Unconferences are great because of the people who attend them. Competent and passionate to the boundaries of craze. That’s what keeps those who enjoyed SoCraTes coming back. They seek renewed inspiration and energy coming from others like them. It’s perhaps the most social gathering of geeks.

For the future I will likely stick to more traditional conference formats, with curated agendas. SoCraTes 2014 was a very well organized event and for anyone who feels comfortable with the format, the upcoming editions will be thoroughly enjoyable.