For work reasons, I’ve recently become interested in resources for those new to line management. I put out an appeal for suggestions on Twitter and Managing The Unmanageable was recommended by Thomas Ponnet, with a little cautious reservation:

@qahiccupps Hope you enjoy it. I don’t agree with everything but that comes with the job description. Not all translates for my context.

This quote from the book’s preface sets up the authors’ intent nicely:

There is no methodology for the newly anointed development manager charged with managing, leading, guiding, and reviewing the performance of a team of programmers — often, the team he was on just days before. There are no off-the-shelf approaches. Unlike project managers, who devote hours and hours of study toward certifcation in their chosen career path, development managers often win their management roles primarily from having been stellar coders while displaying a modicum of people skills.

The book is long – over-long for my taste – and, rather than try to rehash the whole thing, I’ll take the liberty of making an exceedingly crude precis:

people are all different

… but there are broad classes of characteristics that it can useful to acknowledge and look for

people are motivated by a relatively small set of important things

.. and, after a certain level is reached, salary is not usually the most important thing

hiring well is crucial, and can be extremely difficult

… and a manager should be thinking about it even when they are not actively hiring

to do well, a manager needs to be organised

… even more organised than you probably think

to command respect from a team, a manager should be able to demonstrate relevant skills

… and need to know when is a good time to do that and when to step back

to enjoy the support of a team, a manager needs to show empathy and give protection

… and that sometimes means letting them fail; but shouldn’t mean setting them up to fail

to function well within a company a manager needs to establish relationships and communicate well

… in all directions: down, up, and across, and in different media

a good manager will reflect on their own actions

… and look to improve themselves

the source of a team culture is the manager

… and, once established, it requires nurturing

Perhaps these things seem self-evident. Perhaps some of them are self-evident. Broadly speaking I think I’d agree with them, based on my own experience. And, in my own experience I find that I learned many of them only incrementally and some of them the hard way.

Which is where a book like this can help – it’s a brain dump of wisdom from the two authors mostly, but also from a bunch of others who offer nugget-sized bites of experience such as

Managers must manage – Andy Grove

with associated commentary:

I’ve used Andy Grove’s phrase innumerable times to coach my managers and directors of programming teams. When confronted with a problem, they can’t just “raise a red ﬂag.” I’m always available when needed, but good software managers find ways to solve problems without my involvement or executive management direction.

And here’s handful of others that chimed with me:

Don’t let the day-to-day eat you up – David Dibble

David made this statement to make the point to his management team that managers have “real” work to do; that the seemingly urgent—e-mail, meetings, the routine—could easily fill a day. Only by being intentional about how we use our days can managers overcome letting that happen

If you’re a people manager, your people are far more important than anything else you’re working on – Tim Swihart

Tim notes, “If a team member drops by at an awkward time and wants to chat, set aside what you’re doing and pay attention. They may be building up the courage to tell you something big. I’ve noticed this to be especially true when the sudden chatter isn’t somebody who normally drops by for idle conversation.”

Managers who use one-on-one meetings consistently fnd them one of the most eﬀective and productive uses of their management time – Johanna Rothman and Esther Derby

The statement is a match for our own experience.

We have two ears and one mouth. Use them in this ratio – Kimberly Wiefling

While I love theory and can happily spend time in talking shops, dissecting semantics and splitting hairs, as my recent MEWT experience showed …

… I also recognise the value of activity to explore, inform, test, and back up the theory. I like to think of myself, still, as a practitioner, and Managing the Unmanageable is a book written by practitioners and grounded in their practice, with examples drawn liberally from it.

It’s unlikely, as Thomas Ponnet suggested, and I’d agree, to fit exactly with everything that you’re doing right now with the team you have in the place you’re working – especially as some of it is very specific to managing software developers. Parts of it will probably jar too. For instance, I found the suggested approach to levels of seniority too simplistic.

But what it can do is give you another perspective, or inspiration, or perhaps fire warning shots across your bow from some position not too dissimilar to yours, and rooted in the real world of managing people in technical disciplines.Image: http://www.managingtheunmanageable.net/

Hello again! It’s been way too long. I’ve been very busy at The AST, which has been taking every spare moment I have (and some I don’t). I’m revving up for WOPR25, and have been hard at work at my day job. My blogging career has suffered greatly. So, what’s brought me back (to fighting … [Read more…]

After I’ve compared between writing automated checks and riding a bike, I played a bit longer with the idea, and thought about tools that were meant to provide non-programmers with automated checks capabilities. The metaphor that stuck in my mind was riding an electric bicycle.In theory – Electric bike is a great idea. It’s relatively cheap, relatively eco-friendly, and does not involve all of that sweating and effort that prevents people from using it as a transportation vessel for short & medium ranges. Riding a bike saves time for just about every ride inside a city, reduces traffic jams (or at least, mostly unaffected by it) and is generally fun. Unless rain is a problem for you – there are not that many reasons not to use it. You don’t even need a driving license for it.However, in practice (at least here in Israel), the reality is quite different – a combination of poor infrastructure and some other factors (such as the young age of many electro-cyclists), results in cyclists terrorizing pedestrians, and being involved in an unproportional amount of accidents that are not as common with regular cyclists (I didn’t manage to find official figures, but the numbers I’ve seen while searching were around 2 injured people per day during 2014, including pedestrians that were run-over by an electric bike, while regular cyclists are mainly counted as “were hit by a car” and get to a bit less than one a day). But honestly – I am willing to believe just about any ridiculously high number I might hear, since I see how electric cars are being used. I’ve seen electro-cyclists ride with their eyes in their phone (held in one hand), riding in couples or even triplets, or folding a leg beneath the rider, and even one time I saw a rider with both legs on the top tube (The phone, naturally, was in one hand). Each and every time I see such a thing I ask myself “why are they doing that?” And each and every time I answer “because they can”. While using the pedals, there are a lot of forces moving in many directions – were I to look at my phone while on my bike, It would take me less than 10 seconds to fall to the ground. I must constantly look ahead to see if I will need to shift gears, and picking a friend on my bike will mean more effort for me. With electric bicycle, those “costs” are not really visible. People don’t have to be as attentive and as careful, they can reach a grater velocity without any effort, and they can get out with losing concentration for more than a couple of seconds.That is, until one time they can’t. An accident caused by an inattentive electric rider is more likely to cause grater damage – It’s faster, heavier (if giving a friend a ride) and by the time the rider gets to the brakes, the accident has already happened.

Tools that are marketed under “the end to your automation problems” or “everything your automation needs” (not to mention “code-less automation) have finally reached the point where we can compare them to electric bike. When I first got to work, we were in the late phases of getting rid of a tool called “Badboy“, and it was fairly obvious why – It was a record & playback tool, that used it’s own proprietary browser to run. Anyone looking at it could tell that it might be a good time to hire someone who can do a better work. The tools wasn’t really bad, but it didn’t help with actual browser coverage, and most importantly – it was ugly and uncomfortable to use.One the other hand, we can look at Testim.io – this is a newer record & playback tool, that works on chrome, looks nice and modern, and provides a bunch of useful things such as grouping actions for reuse, some strong built in validations, and a test report with images. A great time-saver. Working with such a tool, it’s not that easy to notice that we are missing stuff (the first thing that comes to mind is non-web stuff, such as database checks). And, if we move to some non-browser tools – we get an even more complete and powerful tool, such as Ready!API by SmartBear for SOAP\REST testing which provides, on top of DB checks and strong validations with a simple way to setup things (just add a WSDL, and you’re good to go) some neat capabilities such as automated security and load checks and even some simulation services that enables mocking (and controlling) the response for a request.So, we’re making a great progress, right? We can leverage those tools to get rid of the infrastructure fuss and focus on creating checks. We don’t even need to know how to code. Th
e best of all worlds!

Well… no. Not really.Those tools, powerful as they might seem, are pretty limited. It might be because GUI is not really suitable for programming complicated logic, or simply a limitation of the tool’s scope (Browser testing, for instance, is out of scope for Ready!API). But with the shiny tools out there today, it’s getting more and more difficult to build a case against using them, or for migrating out, because we do gain a lot out of them. So why should a company invest in building an extendable, tailored test harness, when we can get all of those cool things for the price of using a tool? Most tools can even be run from the command line, and thus integrate into our CI. And the fact that the tool is configured outside of the main product’s code? that’s fine. Every now and then we’ll just have a tester go and update the scenario parameters. for that small nuisance, why should we pay for testers that can code?Besides, when using a tool, there’s only so much you can know about the tool’s internals and what’s actually going on in your tests – and if something isn’t working, you can’t just peek under the hood and fix it – you have to contact the vendor support (or, if it’s an open source tool – you can start diving into the code and compile your own version of it, and it will be quite painful to do).Also, to return to our bicycle analogy – it’s great to ride while using the phone and zooming around, and you will normally stay out of trouble – until suddenly, you don’t. If you get to a conclusion that the tool you’re using is no longer doing the work you need – it will be that much harder to migrate out of it, and to develop all those nice capabilities you’ve grown accustomed to in your framework.

And, one last point of similarity I found while writing this blog – regular bicycle riders tend to sneer and look down at electric cyclists. They can come up with several scenarios where using them is an acceptable choice (for instance “I don’t have a shower at work” is an acceptable excuse), but every time I see someone riding an electric bike I get that feeling of moral superiority. I’ve noticed pretty much the same feeling towards tool users – despite the fact that I can describe several scenarios where using a tool is better than writing everything at home – as a tester who codes, I can’t help it but look down on testers who automate without coding.

Technology very broadly is becoming more and more complicated … actually so complex that no one, whether you’re an expert or otherwise, fully understands these things … They have enormous number of parts that are all interacting in highly nonlinear ways that are subject to emerging phenomena.

We’re going to have bugs and glitches and failures. And if we think we understand these things well and we don’t, there’s going to be tons of gap between how we think we understand the system and how it actually does behave.

On modelling reality with a system and then creating a model of that system:

… the world is messy and complex. Therefore, often, in order to capture all that messiness and complexity, you need a system that effectively is often of equal level of messiness and complexity … whether or not it’s explicitly including all the rules and exceptions and kind of the edge cases, or a system that learns these kinds of things in some sort of probabilistic, counterintuitive manner.

It might be hard to understand all the logic in [a] machine learning system, but it still captures a lot of that messiness. I think you can see the situation where in machine learning, the learning algorithm might be fairly understandable. But then the end result … You might be able to say, theoretically, I can step through the mathematical logic in each individual piece of the resulting system, but effectively there’s no way to really understand what’s going on.

On “physics” and “biological” thinking:

[Physics:] A simple set of equations explains a whole host of phenomena. So you write some equations to explain gravity, and it can explain everything from the orbits, the planets, the nature of the tides … It has this incredibly explanatory power. It might not explain every detail, but it maybe it could explain the vast majority of what’s going on within a system. That’s the physics. The physics thinking approach, abstracting away details, deals with some very powerful insights.

[Biology:] Which is the recognition that oftentimes … the details not only are fun and enjoyable to focus on, but they’re also extremely important. They might even actually make up the majority of the kinds of behavior that the system can exhibit. Therefore, if you sweep away the details and you try to create this abstracted notion of the system, you’re actually missing the majority of what is going on.

Oftentimes I think people in their haste to understand technology … because technologies are engineered things … think of them as perhaps being more the physics thinking side of the spectrum.

On robustness:

There’s this idea within complexity science … “robust yet fragile,” and the idea behind this is that a lot of these very complex systems are highly robust. They’ve been tested thoroughly. They had a lot of edge cases and exceptions built in and baked into the system. They’re robust to an enormously large set of things but oftentimes, they’re only the set of things that have been anticipated by the engineers. However, they’re actually quite fragile to the unanticipated situations.

Side note: I don’t think there’s an attempt in this discussion to draw a distinction between complex and complicated, which some do.Image: https://flic.kr/p/Q2tMz

TL;DR This post is my report on Testival 2016 that was held last weekend in Rijeka STEPRI center. First, a few metrics. We had in total 32 participants, with female/male ratio 12/20! As this is free event, dropout count is important metrics for us. 15 registered testers did not show, and did not let … Continue reading Report on Testival 2016→