Jiri Lundak

Archive for the ‘Job’ Category

Knowing when to Leave

In Agile Development, Career, Job, Team, Values on January 23, 2013 at 1:02 am

It was a long time with the same company. I nearly became part of the inventory. It was an awesome journey from a disorganized bunch of people, with no real concept on how to produce good quality software, that preferred to depend on external knowledge for managing projects, to a lean and mean software company, that produces 17 releases a year and had more than 135 releases go live during these 9 years.

We made a dent in the universe, for how long it lasted. We introduced Agile development practices and looked for talented people to join us. Self-directed people, good collaborators and able software engineers. We were trying to hire only the best of candidates (we hired only every tenth maybe).

This saved the company from failing. We were successful again.

And now I am leaving. Why that? It is not because of bad technological choices, it is not because of bad customer relationships and it is not because of a hostile business environment. These are problems of daily business life. We can cope with that.

The discussions of the last month have worn me down. I was not able to convince my peers, that we were drifting away from values we all valued.

So here we are. Our people were breathing the spirit of agility. They embodied self-organizing principles. They valued to be included in the decision making process. Sure not everything was rosy. But we never shied back from correcting ourselves. Unfortunately I was not able to counter the building up of positions, of creeping distrust. Though I tried to improve things I miserably failed.

But now there is hope again. People are talking again with each other, about their values, their hopes and their expectations for a better future. That is a good sign. But I am not part of the solution anymore and this makes me very sad.

In this dark personal moment, there remains one wonderful and encouraging thing deeply impressed in my memory: the pure and genuine solidarity with Agile principles, that most of my colleagues have shown, by underlining the value and positive effect the Agile way of doing things had in their lives.

Especially one colleague brought me joy and encouragement. We never talked personally about agility and its benefits in depth, he always seamed not to care much, just doing his thing, taking never any sides in 12 years. And now this… a long email, showing his personal benefits he got from the Agile way and how much he cared. This was very moving for me personally. Agile has reached the hearts and minds of people living it from day to day. This I call a movement!

So now, that I must go, I leave behind people, who for themselves have seen the light, who know what they want and know how to take care of themselves. So my wish goes out to them: be courageous, do not give in and continue to do good work! You know who you are.


Competence Development

In Career, Competence, Job, Mastery, Personal Development on April 5, 2012 at 11:49 am

Sometimes I feel hopelessly losing grip on things I mastered in the past. And this frustrates me. The more I am pressed in the manager role, the more I feel uncomfortable. I know I should not. This is social ascent after all. But I am not satisfied. But before taking any action that goes in the wrong direction, I need to asses why I feel this way.

So I tried to put my thoughts in a graph. Let’s call it a competence development chart:

It shows 5 kinds of competence:

  • Social: This is the type of competence we begin acquiring in kindergarten. Most of it is ingrained in us, before we even start working. This is also a quality we train every day. For me this includes talent to be a leader and a good communicator.
  • Technical: As a software developer, this is your primary and most important field of expertise. It is also the most easy to loose. Technology evolves quickly, your code base moves on and your coding skills rust. Without constant exercise and application you immediately fall behind and it’s hard to make up lost ground.
  • Domain: Domain knowledge is an asset, that can make you invaluable in turning business needs into working software. It helps you asses the necessity of a given feature and lets you make informed design decisions. You will not just be coding away on something somebody else specified, but your are truly able to help creating the product the customer really wants. Usually you will immerse in multiple domains during your career. And although you will be able to transport part of your knowledge of one domain to another, you will be mostly starting over.
  • Business: Ability in the business domain does not come naturally to everybody. Not all people have an affinity for doing business on their own. But when you aspire to a holistic view of software development or you believe to have that great product idea or just want to sell you service, or when you feel that business is limiting you as a developer, then this can become a driver for acquiring some business knowledge.
  • Holistic: This is the ability to connect all the dots. You have a natural feel of how things should work, why things go wrong and what could help. This sets in, when you acquire competence technically, socially and at least in one domain. As all competences “seeing the big picture” can be lost over time and peeks, when you are a master in the three previously mentioned areas.

What happens, when you have just competence, that is limited to one field? Let us have a look:

  • Technical: When you have development skills only, you can develop anything based on a specification. You can not know whether what you implement is fit for the customer’s task at hand. You need somebody else to tell you. Some middleman or the customer himself. If you add a middleman, then you can not be sure, the what you implemented will really match the customers’ needs. Rework is preprogrammed. Something you do not like to do.
  • Domain: If you have only domain knowledge, then you might be able to describe to a developer what things you would like to have implemented. You are not necessarily able to explain how it should be implemented. But as soon as you are shown a solution you immediately can tell if it fits your needs. You might build over time an opinion on how the current system you are using works under the hood, but you never can be sure. Especially if developers are allowed to alter the system. So you ever so often will have to adjust your mental picture. And you will need a developer to inform you on how it really works.
  • Business: If you have business knowledge only, you are good at making financial decisions, at formulating contracts, at negotiating with customers, partner companies and vendors. You might have a flair for leading people, but many do not. You are not able to judge the work of developers or domain experts. Even if you had previous technical or domain knowhow, it can quickly fade away. You depend a lot on other people creating value. A problem you definitely have is, that you depend mostly on other peoples’ information, that often was already altered, adjusted and watered-down, so that it does often not represent reality anymore. And you do not even posses the ability or time or both to analyse or validate that information.
  • Social: If you are good only at connecting (with) people, you might be able to use this ability to be the glue to bond teams or groups within an organization, but not much more.
  • Holistic: This kind of competence can not exist in isolation. The more competences we are able to maintain (nearly) simultaneously, the closer we can get to seeing the whole, the better we are able to develop and maintain a global understanding, that does not get lost in detail.

Now I do not want to underrate any person having an ability just in one of these areas. There are only a few people having deep knowhow and understanding in all of the areas at the same time. But most of us do have some knowhow in all of them. And we can try to maintain that knowledge crisp, clear and current. How is it possible to maintain a sufficiently deep knowledge in more than one area?

Below are the ways I currently see. You might have other possibilities you want to share.

  • Concentrate on one area: I should do one job and do it well, at any one point in time. Trying to be a “jack of all trades” usually does not scale and does not benefit anybody, not even myself.
  • Do things in parallel: Filling in multiple roles at the same time is not for the faint of heart. Although you might be able to have a bit of a synergy (when you have a management role like head of development and Product Owner at the same time). But much more you will be torn between roles and you will be a mediocre boss and a mediocre PO at best. And if you go down that path, but are a responsible person at the same time, you will be doing lots of overtime, and your private life will suffer.
  • Rotate jobs in shorter time periods: There should be no fear to loose status or clout or position. If I rotate into and out of jobs, like Product Owner, Software Developer, Head of Development or Business Person, then I acquire only additional leadership potential, because I know more than others at the place I work. I will be able to fill many roles, that need to be filled. I can leverage my knowledge to lead in any position. And best of it all: I will be a person, that can not be easily replaced, and should I be replaced nonetheless, I will not have a hard time finding another job.

You might have noticed, that I did not include a leadership or management area of competence. Here is why: I see leadership and management skills always in context of real work. Situational leadership is key. Anybody in an organisation is able to lead, if he is an expert in his field and is interested in making a substantial contribution to the whole. Managing should also be situational and at the same time very collaborational, no one person should think is is able to manage the whole.

So what about mere management positions? They can exist in an organisation. But should the person holding such a position have mainly management skills and not much more? I believe the contrary: they should have primarily active competence in any of the other fields and management skills should be only seen as an add-on. Management competence falls for me in the holistic and social competence areas. Standing on its own, it tends to develop a life of its own, which often is not healthy for the organisation in its entirety, although the one managing might be convinced that it is.

I just made this up for myself. I am quite sure, that my thoughts are still kind of ruff and incomplete. I might elaborate on my actual choice in another post.