No bosses, no juniors – working at Valve

Hi Kalle,

if you haven’t already, it’s now time for you to go and read what might be the most interesting publication in company and workplace culture this year:

The “leaked” Valve handbook for new employees.

There is just too much interesting stuff in here to discuss in one blog post so I’ll probably break this down to a few posts (or we discuss it on the podcast), but here are some highlights:

  • No management – people work on the projects where they feel they can be of most use and move their desks to form groups accordingly.
  • No juniors – only hire extremely competent and driven people at the height of their careers. No costly bringing up of juniors, they have enough attraction as an employer that they don’t need to “grow their own” – they can attract the best within the business.
  • Compensation based on peer review – salaries are based on stack ranking by your co-workers. You make what the guy sitting next to you think you should make based on your contributions.
  • “T-shaped” employees – hire people with a broad range of skills that are also one of the best in their field within a narrow discipline (sounds a bit like The “Jack of all trades” department put into practice!).

Valve also lists what they think they could improve on (mentoring, predicting more than a few months away etc) which is very self-aware of them, could be interesting to discuss as well.

But what are you waiting for – let me know when you read it, can’t wait to discuss it with you (and Jeff)!

And may all your TF2 hats be awesome,

Mattias

Advertisements

Day 1 checklist – Make the new guy the hero

Hi Kalle,

since I just started at a new company and am in the first few weeks in the “getting-up-to-speed” phase where you go around feeling kinda useless and stupid, I have two good, solid tips for how to make sure to get your new employee a flying start.

So when you have to hire a guy three years from now to your gloriously successful start-up, whip out this post and make sure to:

1) Have everything ready for them.

Computer, chair, phone, keycard, whatever system access they need (especially to SVN/TFS/etc – for some reason version handling always gets forgotten by HR, I wonder why…).

Everything you need to do good work should be there ready to use at day 1 – no exceptions. If the hire has a choice of computer or phone, make sure to sort this during the time between the signing and the first day so everything is ready to go.

If you have this all sorted and stars align on that first day, you have a chance to…

2) Have the new guy/girl make an impact in the company on day 1.

First day at Lavasoft, I got to fix a bug for customer support that caused their support form to give the customer the impression that their ticket failed submitting, causing the customer to type in the same request over and over again in an increasingly agitated tone, producing a nice mess for the support department to deal with.

I wrote a single line of code, managed to publish the change and voila! – instant gratitude by the support department and saved money for the company on day 1. Couldn’t have asked for a better start.

This was by pure chance in my case but in future hires, I will try to make this part of the introduction plan – to have a task that needs doing that day that is important for the company, so they get to be the hero on the first day of work. I forgot this at my last company, so this is as much a reminder to you as it is to me.

Some ideas for suitable tasks might be:

  • Fix a bug that can be published the same day.
  • Improve the language of a particularly nastily written public webpage / wiki.
  • Answer customer questions on the company forum.
  • Fixing the resolution of the projector in the conference room so that it actually fits the canvas. (We might have this problem at work…)

Can you think of other useful tasks in the same spirit?

Take care,

Mattias

 

Creating an API to a team – a system developer’s take at company communication

Hey Kalle!

Been a while since I posted here (we should really publish the podcast too btw, need to speak to Jeff about that).

As you know, I’m now working for a really big company (about 18000 employees) and as such I’m but a grain of sand on a large beach of company culture.

However, the part of the company I’m working for used to be a smaller company that was bought and incorporated into the bigger company in a single-brand strategy (i.e. the old company’s name is not used any more etc). It is still a fairly self-contained branch with stable customer relations that was established before the merger and has the application management of a product that has been around since the early 90’s.

So our department is both a part of the rest of the organization, as well as our own ship, and this reflects in our methodology. In some parts we are running some SCRUM, we are looking at Kanban for some of our stuff and we also have a lot of waterfall in a lot of parts as well as some ITIL-inspired roles for application management. On top of this, we also have a delivery excellence process that is instituted by the company as a whole. In short, it’s all a bit of a mixed sallad (one that has both tomatoes and tuna as well as steak and kumquats – yummy!) with each bite tasting slightly different (not very agile-sashimi at all).

Here is our dilemma:

We need to work out a way of working that works for our independent unit given our customers, our products and our staff – while at the same time working together with the large organization we are also a part of in a way that they can understand and appreciate.

The good news is that I feel that it would be accepted to run any kind of methodology internally in our branch as long as it meshed well with the rest of the company and it yielded great results (i.e. we were efficient and very profitable), so it is a great situation for improving our process. However, the key here is how to work together with everyone else in the company in a manner that is efficient for them and for us.

So I thought:

Why not approach this as a system developer and picture our part of the company as a module in a large piece of software?

If we could just provide an API to the exterior world (the rest of the company and our customers) with metrics and ways of communication that is useful and efficient for them, we could pretty much run any kind of internal process as long as it was CPU-efficient (i.e. cost-effective).

This is obviously the opposite of transparency, and it would be interesting to hear your thoughts on the subject. Maybe transparency should be a topic for a future podcast, sometimes I feel that people just don’t want to know and too much transparency might just create confusion as to what they are looking at.

I’ll keep you posted on how this develops – I think my next step will be to map our “interface” in a way similar to how I would map the interface of a module and see if that yields any interesting results.

Thanks for reading all of this (I think I just scored 0/3 on my own scale…), let’s talk soon.

Take care,

Mattias

 

Loose leadership – Lavasoft lessons learned

Hey Kalle,

it’s read-an-article-and-then-read-what-Matte-thinks-so-we-can-discuss time!

Here’s the link:

http://h30565.www3.hp.com/t5/Feature-Articles/Lead-Leaders-Why-Loose-Leadership-Matters-Most-in-the-Coming/ba-p/1910

I’ll give you a few minutes…

Back? Good!

This post from mr Brogan obviously ties into my previous post about The “Jack of all trades” department. He might have even read it. Or not.

Anyways, the idea about leader employees is pretty exciting. Pretty much a situation where you have succeeded with empowering everyone to be decision-makers, something that we worked hard on at Lavasoft if you remember (succeeding in some cases, failing miserably in others).

Brogan had four points that can make this style of leadership possible, I’ll illustrate with some examples from our shared time at the web department of Lavasoft for your reading pleasure (ah, the memories):

1. “Bumpers” to keep your team from making any grievous and irreparable mistakes. 

At Lavasoft, this would be the peer reviewing of design decisions and the sanity checks in stand-up meetings. Also, the whole back-up support from a manager in tricky communications with partners and other departments. When it comes to expenses and being able to drive parts of the budget themselves, we never came that far – I mostly took advice on which licenses and office equipment we needed and mad decisions based on that. That would have been an interesting thing to try, putting people in charge of different parts of the budget and managing that all by themselves.

2. Production- and results-based metrics versus “butt in seat” metrics.

We were never much about metrics for performance at Lavasoft, and we didn’t need to be since we had such a small team (about 5-6 members) and good daily communication that I knew what you guys were doing and how it was going. Not much need for metrics then, but in a larger organization they might form a good starting point for discussion and a fairly unbiased measurement (the bias, of course, lies in what you measure though).

Putting in the wrong measurements though might lead to everyone managing their own pet projects, the success of which they’ll be measured by, and competing for resources for these – not my favorite kind of workplace.

One solution might to be set metrics for the group instead (hewwow SCRUM sprints!) that are better indicators for if people are performing. And then coach the group to figure out what needs fixing.

I’ve heard example of real estate brokers (of all things) that get provision based on how they are doing as a group, which encourages them to send prospective buyers to other brokers properties as well which benefits everyone in the group – something that a straight bonus system based on individual performance traditionally discourages.

3. A more open communication stream. 

Hopefully you’d agree, but I tried hard to give you guys as much information about what was going on in the company as possible, barring sensitive information about co-workers and such that wouldn’t benefit you and actually would hurt someone else.

I think this is just common sense – the more information you guys have, the better you can make decisions on your own. You will always be more knowledgable about the technology than me anyways since that is your speciality so if I can impart as much relevant information about the business as possible, we’ll can cut out me as the middle-man in decision-making, making us less vulnerable.

This stream should always be finetuned constantly so only relevant and interesting information is passed on both ways (“I don’t think I need these numbers anymore, they are useless to me and I never take any action based on if they are high or low since I have better indicators if the application is performing as it should or not. If you say we’re doing fine, that is enough for me and more efficient.”).

4. An active learning culture and mistake-learning path.

It’s always healthy to question how things are done at the company. It’s important to keep this constructive though. The “What puzzles us?”- question in the heartbeat retrospective after sprints was a good way of catching organizational flaws that needed adressing by someone with a bit of clout with the rest of the organization (“Why does marketing always deliver their stuff a few days late?”). I guess if you have a group of leaders, you should coach them in optimizing these things themselves (advice them a bit on how to approach Marketing in a constructive way on this subject that might be a little bit touchy).

We had a lot of shifts in how we did stuff (build-your-own vs adapt-your-own, figuring out what the web department should focus on, adopting SCRUM) and most of these were results of employees pointing out flaws in the way we worked and suggesting that we examine alternative approaches.

So, did we have loose leadership at the web department at Lavasoft?

More so than some other departments I would say. We were a long way from embracing it completely I feel, but the aspects of it that we implemented (without ever labeling them “loose leadership” per se) worked pretty well and were beneficial to us.

And that is the key take-away for me:

If you are constantly trying to get better, you’ll never be fully optimized and content, ever.

So make sure that each step is a goal in itself and makes you happier, more efficient or more powerful by itself, while at the same time bringing you closer to a goal or vision of how you want things to work.

Let’s do lunch some day,

Mattias

The “Jack of all trades” department

Hey Kalle,

read a blog post that I stumbled across (I think I started with looking up http://dojotoolkit.org/ which seems pretty neat btw) that made me think of you and your path as a freelancer.

It was kinda warm and helpful, and it seemed like a real person had written it, so I though it might be a good read for you:

http://rmurphey.com/blog/2010/08/14/2-years-in-some-thoughts-on-working-for-yourself/

Among all those nice tips, this little line caught my eye:

“My general theory on the economy question is this: rarely is full-time employment of a web worker an efficient distribution of labor, unless you are working for a very, very large company.”

Now, this can interpreted in many ways. But the thought I had was: maybe I’m thinking about my own role wrong?

(This is where this post takes a strange turn, it sometimes happens when I keep writing like this – new thoughts pop up and I’m too lazy to write a new post…) 🙂

I’ve always felt that I should try not to code when I’m hired for managing since it takes time from my managing, and therefore might make my co-worker less efficient and happy. Right now, as you know, I spend my time between project managing, recruiting, selling and coding and I’ve always thought of this as a phase we have to go through since the department is still growing (plan is to be around 10 people in 10 months, up from three right now).

But maybe it would be more effective if I’d still do a little of each even after the department has grown, and eventually hire a couple of others like me who can do a little of everything? A project lead who can sell? A coder who can recruit? A sales guy who can code and do GFX? This way, everyone can always do something where they are effective, even though we might not need coding or project managing right now. Hello cross-functional, flexible SCRUM team of our dreams where everyone can pick any task from the board and go.

I admit: this sounds like a Game Dev Story game gone a bit weird, but I have a strong feeling this could really work (and probably is working in a lot of smaller companies). I just wonder how far it would scale.

See you on Wednesday,

Mattias