Book Notes : Creativity, Inc.

Creativity, Inc.: Overcoming the Unseen Forces That Stand in the Way of True Inspiration
Creativity, Inc.: Overcoming the Unseen Forces That Stand in the Way of True Inspiration by Ed Catmull
My rating: 5 of 5 stars

I found this book a really interesting read, partially as it is a familiar story to us but from the inside you get a very different perspective. The focus on success never being a guarantee and that everything is random are two particularly powerful points. Without a random sequence of events Pixar would not be what it is, Disney animation studio would still be struggling and the world would be a much worse place as a result.

The book starts with the story of how Pixar came into existence from being part of Lucasfilm then being sold to Steve Jobs. At the time the company made hardware then evolved into software until the movies it is famous for today. The challenges the book go through are similar to any growing company or one which stagnates but it also tells the personal stories of Ed Catmull (the author), John Lasseter and Steve Jobs.

Unleashing creativity requires that we loosen the controls, accept risk, trust our colleagues, work to clear the path for them, pay attention to anything that creates fear. Doing all these things won’t necessarily make the job of managing a creative culture easier. But ease isn’t the goal; excellence is.

The book has a chapter with the following points, but I have added some of my own notes from the book to the end.

  • Give a good idea to a mediocre team, and they will screw it up. Give a mediocre idea to a great team, and they will either fix it or come up with something better. If you get the team right the chances are that they’ll get the idea right.
  • When hiring people, give their potential to grow more weight than their current skill level. What they will be capable of tomorrow is more important than what they can do today.
  • Always try to hire people who are smarter than you. Always take a chance on better, even if it seems like a potential threat.
  • If there are people in your organisation who feel they are not free to suggest ideas, you loose. Do not discount ideas from unexpected sources. Inspiration can, and does, come from anywhere.
  • It isn’t merely to be open to ideas from others. Engaging the collective brainpower of the people you work with is an active, ongoing process. As a manager, you must coax ideas out of your staff and constantly push them to contribute.
  • There are many valid reasons why people aren’t candid with one another in a work environment. Your job is to search for these reasons and then address them.
  • Likewise, if someone disagrees with you, there is a reason. Our first job is to understand the reasoning behind their conclusions.
  • Further, if there is fear in an organisation, there is a reason for it – our job is (a) to find what’s causing it, (b) to understand it, and (c) to try to root it out.
  • There is nothing quite as effective, when it comes to shutting down alternative viewpoints, as being convinced you are right.
  • In general, people are hesitant to say things which might rock the boat. Braintrust meetings, dailies, postmortems, and Notes Day are all efforts to reinforce the idea that it is okay to express yourself. All are mechanisms of self-assessment that seek to uncover what is real.
  • If there is more truth in the hallway than in the meeting room, you have a problem.
  • Many managers feel that if they are not notified of a problem before others are or if they are surprised in a meeting, then that is a sign of disrespect. Get over it.
  • Careful “messaging” to downplay problems makes you appear to be lying, deluded, ignorant, or uncaring. Sharing problems is an act of inclusion that makes employees feel invested in the larger enterprise.
  • The first conclusion we draw from our success and failure are typically wrong. Measuring the outcome without evaluating the process is deceiving.
  • Do not fall for the illusion that by preventing errors, you won’t have errors to fix. The truth is, the cost of preventing errors is often far greater than the cost of fixing them.
  • Change and uncertainty are part of life. Our job is not to resist them but to build the capability to recover when unexpected events occur. If you don’t always try to uncover which is unseen and understand its nature, you will be ill prepared to lead.
  • Similarly, it is not the managers job to prevent risk. It is the managers job to make it safe to take them.
  • Failure isn’t a necessary evil. In fact, it isn’t evil at all. It is a necessary consequence of doing something new.
  • Trust doesn’t mean that you trust that someone won’t screw up – it means you trust them even when they do screw up.
  • The people ultimately responsible for implementing a plan must be empowered to make decisions when things go wrong, even before getting approval. Finding and fixing problems is everyone’s job. Anyone should be able to stop the production line.
  • The desire for everything to run smoothly is a false goal – it leads to measuring people by the mistakes they make rather than by their ability to solve problems.
  • Don’t wait for things to be perfect before you show them to others. Show early and show often. It’ll be pretty when we get there, but it won’t be pretty along the way. And that’s as it should be.
  • A company’s communication structure should not mirror its organisational structure. Everyone should be able to talk to anybody.
  • Be wary of making too many rules. Rules can simplify life for manager, but they can be demeaning to the 95% who behave well. Don’t create rules to rein in the other 5% – address abuse of common sense individually. This is more work but ultimately healthier.
  • Imposing limits can encourage a creative response. Excellent work can emerge from uncomfortable or seemingly untenable circumstances.
  • Engaging with exceptionally hard problems forces us to think differently.
  • An organisation, as a whole, is more conservative and resistant to change than the individuals who comprise it. Do not assume that general agreement will lead to change – it takes substantial energy to move a group, even when all are on board.
  • The healthiest organisations are made up of departments whose agenda differ but whose goals are interdependent. If one agenda wins, we all lose.
  • Our job as managers in creative environments is to protect new ideas from those who don’t understand that in order for greatness to emerge, there must be phases of not-so-greatness. Protect the future, not the past.
  • New crises are not always lamentable – they test and demonstrate a company’s values. The process of problem-solving often bonds people together and keeps the culture in the present.
  • Excellence, quality, and good should be earned words, attributed by others to us, not proclaimed by us about ourselves.
  • Do not accidentally make stability a goal. Balance is more important than stability.
  • Don’t confuse the process with the goal. Working on our processes to make them better, easier, and more efficient is an indispensable activity and something we should continually work on – but it is not the goal. Making the product is the goal.

Some of my notes:

  • Being on the lookout for problems is not the same as seeing problems.
  • Stick to your beliefs – if you pride yourself in producing quality products, don’t let anyone make you make a low quality product.
  • Never say things won’t change – things will this is inevitable.
  • Trust, candor and respect are very important thing to develop,but they need a focus as they can disappear without people realising. A group of people who highly respect each other and are prepared to be completely open and honest results in a product which is of a superior quality – in Pixar this includes the Brain trust.
  • From an early age in life people are taught that failure is bad – this is not the case failure is learning, and you will learn more from failure than you will from accidentally being successful.
  • “You’ve got to feed the beast” – for Disney these were animators, these are the people who your paying to do the work so people keep them busy doing stuff. Controlling the beast is important and sometimes ideas need to be protected.
  • People at Pixar don’t have contracts, they are there because they want to be and can leave at any time. This also means that instead of waiting for peoples contracts to expire, and to not renew them, conversations between management and employees happen as soon as they are needed.
  • Peoples brains are wires in a manner than things need to be explained. Humans don’t like the idea of randomness but ran random events happen all of the time. It is natural to assume that your product was a success because the team was great, but it could just have been you were lucky.
  • As people move higher up they see less. The position you are in means that people act differently around you and the issues you are looking for are hidden from you. You don’t understand what is happening on the “shop floor” as it is complicated, it is not possible to understand everything but additional view points should be considered additive and not dictatorial.
  • Even though people like getting a bonus they enjoy being shaken by the hand and appreciated as much or more than the money.
  • Hindsight is not 20-20, we know more about the past but we still interpret things differently as shown by two people recanting the same story. These are based on our own internal models. We also fill in the gaps and try to draw conclusions – some of which will be too sweeping.
  • Research is key – the best way to be in a creative world is to be immersed into the environment you need to be creative within. So in Pixars case if you need to animate a flamingo the best way is to go to the zoo to observe one. This also prevents derivative work and not new creativity.
  • Postmortems
    • Consider what we learned – but be careful not to construct learning which did not exist.
    • Teach others who were not there
    • Don’t let resentment foster
    • Use the schedule to force reflection
    • Pay it forward – what questions should we ask in the future?
  • Pixar University
    • Built connections between desperate teams
    • People were free to be goofy, relaxed, open and vulnerable
    • It encouraged people to become accepting with mistakes and imperfections
    • Sent a clear message that people should keep learning

The book has details of Steve Jobs role with Pixar. Other than taking it over from Lucasfilms he ensured that it was strong against Disney which was many times its size. One of the key achievements was its flotation – right after its first full length film. Steve knew that once the film was launched Disney would want to renegotiate soon after the success of the first film, to ensure that Pixar had a strong hand he needed to build up the finances and do this by floating the company at a very astute time.

The book has a very interesting description of the process of the merger between Pixar and Disney. How Steve Jobs wanted to ensure the survival of Pixar and he could not see it being independent since it lacked distribution and marketing ability. Disney was the perfect match but the risk was Pixar would be subsumed into the Disney animation studio and squashed – Steve knew this and to protect Pixar he ensured that the management of Pixar took a lead at Disney Animation.

View all my reviews

Book Notes : The Goal

The Goal: A Process of Ongoing Improvement
The Goal: A Process of Ongoing Improvement by Eliyahu M. Goldratt
My rating: 4 of 5 stars

The goal talks though the conversion of a manufacturing plant which had been running using cost accounting and its embracing of Lean manufacturing. The way the book is presented is quite novel in that its presentation is as a story where you go on a journey with the plant manager as he faces being closed down.

Through the course of the book Kanban is presented and applied to the plant. The book covers things such as challenging the productivity views of robotics, showing how the entire productivity of the plant is dictated by its bottlenecks, that you need excess capacity and you can’t run everything at 100% without building up large amounts of inventory which may or may not be sold.

The production line approach, made famous by Ford for the production of cars, was an extremely efficient form of production because of the flow of work but for such a system you need large volumes to warrant a dedicated line. The aim of lean manufacturing is to take the idea of flow and apply it in environments where the volumes are not sufficiently large to warrant their own production line.

Flow is key to shipping products to costumers – the key is to reduce the time from when a customer places an order to the point where we get the money for it.

This does not work with traditional local optimisations. This usually means large batch sizes since the set up of the machine is likely to be significant and traditionally people then try to produce as much of the parts as possible from the single set up. This results in large amount of in progress inventory which adds no value in its current form. Additionally the larger the batch the longer the parts need to wait – 99% of the lead time to produce a product can just be it waiting to be processed. To facilitate flow it is key that the focus on these machines is to improve the the efficiency of the set up time so that the machine is able to produce smaller batches which reduce the amount of over produced inventory and the waiting time thus reducing costs and lead time.

When there is an issue with flow inventories accumulate and the order lead time increases and reduces bussiness cash flow. One way to improve flow is by limiting space, this prevents the building up of large inventories. This is counter to previous approaches since limiting space means that not every worker will be busy all of the time, only bottlenecks will have the high levels of utilisation. By stopping people work it quickly highlights any issues in the flow and these can then be resolved. This means that the focus is always of making the bottlenecks more efficient – which is key since any time lost at a bottleneck will impact the output/productivity of the entire site. Things such as putting quality control before the bottleneck will improve the throughput since the bottleneck won’t work on parts which will be rejected later. Ensuring the bottleneck is able to run none stop, such as by splitting breaks so that people can cover it continuously.

The challenge of small production quantities and small buffers is that gridlock could happen where parts are not available for assembly when the space is already filled up. A solution for used in Kanban is instead of restricting buffer space between manufacturing steps the amount of products which can be produced are. The Kanban system uses the idea that when you want to ship something to the customer this triggers all of the preceding steps required to manufacture the product. The way this is achieved is through the use of cards, these cards are passed from the end of the production line towards the beginning each one triggering the manufacturing of the parts required to produce the product which is trying to be constructed.

Lean can not be applied to all industries, because of the time it takes for Kanban to produce an efficient manufacturing process it only works for products which do not change for a significant period of time – this works better in a car plan where new models are only released once a year. Additionally Lean does not work where the products are produced sporadically – because of the buffers the product needs to be being produced on a continuing basis. Lean also only works where the mix of products being produces are fairly consistent. Any of these three will reduce the effectiveness of lean.

View all my reviews

A poppy of remembrance for London

A letter to the Mayor of London

In 2014 the people of London were very moved by the “Blood Swept Lands and Seas of Red” (aka the poppies at the Tower of London). These poppies represented the number of deaths between the start of the war and those up to 11 November 1914. This was an immensely powerful and though provoking installation and it was a shame when it went – though I can understand it would not have been possible to keep expanding it to cover all of the deaths which occurred until the end of the war in 1918 due to its size.

What I would like to propose is that to mark the centenary of the end of the 1st World War in 2018 that we install a series of red bricks within the pavement to draw out the extent with which the poppies from the Tower of London would have reached, had the installation continued to represent the people who died during the entire first world war. These red bricks would form the broad shape of a poppy when seen on a map. To me they would be something that would remind people about the huge number of people who were killed during the war in a way which is very accessible – since many people per day would walk over them.

I would be very interested to hear your thoughts.

Richard

Tower of London poppies to 1918

Book Notes : How to Recruit and Hire Great Software Engineers

How to Recruit and Hire Great Software Engineers: Building a Crack Development Team
How to Recruit and Hire Great Software Engineers: Building a Crack Development Team by Patrick McCuller
My rating: 4 of 5 stars

You should be hiring people with the right attitude and the capability to learn, master and teach since although you know what you are doing now you don’t know what you’ll be doing 1,3,5 or 10 years from now.

Hire top performers, hiring anything less than the best will hurt your bussiness. Talent bring talent, incompetence repels talent. A mediocre or low performer will not aid the team and will actually diminish its performance though having to deal with messed up projects or missed deadlines. It is generally easy to identify low performers and exceptionally high performers, the challenge comes with the mediocre ones – once hired these people are very difficult to remove because they are not doing anything wrong they are just not capable of performing at the high levels which you need. Top performers perform between 10 to 16 times more than an average one.

Understand your current pool of talent, ask them to periodically update their CVs to map out the teams current knowledge and experience. Knowing who is in the team will identify holes in the team if they need filling and will help you focus your recruitment if you need to replace someone. Critically the profile needs to look at leadership, experience (tenure, technologies etc), style (cautious, quick, adventurous, perfectionist) and roles (build engineer, tool engineer, user interface developer etc). Engineers have two preferences, either creators or optimisers. As a project changes from the start-up/creation phase into the optimisation phase this might mean that the people in the team needs to change to ensure that the engineers are still being suitably challenged.

Hire ahead where possible – the pressure of hiring someone urgently to fill a role will always lower quality through subconscious if not though concious bias.

First hires on a team are critical – you need engineers who are leaders and great communicators, who inspire the team both technically and on a personal level developing and coaching them.

Its a race – how quickly can you hire? because if someone else can hire quicker the candidate might be off the market before you have got very far through your process. Look at the process, the barriers and try to reduce the process to as short a time as possible – could you go from candidate to decision in one day? Can you speed things up, remove steps or reject candidates earlier? There are ways to make things quicker without lowering the quality of the candidates.

Candidates as customers. Candidates will be more likely to work for a company with a simple and enjoyable hiring process. If your candidates experience is exceptional, they will notice, talk and refer others to you. You will turn down a lot of candidates so if they are treated well rejected candidates can still spread the word about your company. So ask the candidates how they found the process, see what they say and improve things. By being as open with the candidate as possible they will know what to expect and so can perform at their best – provide a guide for the candidate to know what the steps of the process are. During the interview the words chosen should be straightforward – uncommon or complicated words should be avoided, not just for people for who the interviewing language is not their first language but for all candidates. There are some people who should just not be allowed to interview – for whatever reason they are not the suitable, these people should not be forced to interview as these people will leave a bad experience with the candidates.

Passive candidates need wooing – this might be extra steps such as a getting to know you phone call, speaking with developers, pre screening etc. Reduce the barriers to entry – such as not requiring a fully up to date CV however all candidates should be treated fairly. Don’t make exceptions for one if you are not prepared to make exceptions to all.

Active candidates contain a large number of people who can’t hold down a job, don’t have sufficient skills (e.g. new graduates). These sort of candidates gain a lot of experience at being interviewed.

Job descriptions are not inspiring – why would anyone work for a company based on a job description. If your target is passive candidates especially then they will either ignore or not care for the job description, so how can you attract such people but still provide them with the details of what they will be doing? A passion statement, this shows the passion for the company – Why are they doing what they are doing? Why should people work for you? and don’t present it in a dull form.

Great software engineers know other great software engineers, tapping into their network is immensely powerful but engineers themselves are usually not very good at seeing or networking. Additionally it is likely that their immediate group of contact are not looking for a job but encouraging them to speak about your company both to their immediate network and their wider network (friends of friends) is a great way to spread the word about your company.

Recruiters want to make money, if you reject all of their candidates they will not send you any more. The best way to improve this is better explain the candidate you are looking for to them, to explain the company, to help them better understand what you are looking for. The more information they have the more suitable candidates they will send to you and thus the better the candidates the more you will hire and the more money they will make. So spending time with recruiters is a great way to improve the quality of the source of candidates. Just remember that because the recruiter is incentivised to hire people they are likely to do whatever they can to help the candidate get the job (such as leaking interview questions etc).

Contract hires, instead of a long laborious interview process hire more freely on a short term contact then if they are performing well look to give them a permanent contract. To the author this has always turned out to be counter productive and a distraction rather than a benefit.

Unfortunately it is part of the concious for people to want to hire people “just like them”, this introduces bias be it sexism, ageism, universityism etc these are a challenge so when people say why they should not hire someone try to get to the root of it. For new starters working in another country it is likely that this bias is even greater. Don’t bother searching the internet for details about a candidate – it is as likely that you will find out irreverent information as relevant information, as such the risk of bias is greatly increased. Consider if the interviewer actually needs to have seen the CV or not – if the interview is competency based then there is no need for a CV then they should not see it since this will introduce additional unneeded bias. The HR team should redact any information which is not important to the hiring process and could introduce bias – such as gender, age, marital status etc.

Identify the source of the candidate, where you get a good source spend more time getting candidates through that source. Different recruitment companies and even recruiters have different approaches so try to focus on the ones which work best for you.

Lower the barrier to entry. Do you really need 6 years of Java experience? CV screening is quick simple and cheap – but this drastically reduces your pool of candidates for no good reason. Someone doing the same project for 6 years gaining Java experience is very different to someone working for 2 years on a variety of projects. Interviewing is expensive but it is better to look at your interview process, such as telephone interviews, rather than being harsh on CV content. When going through CVs look for positive points, negative point and neutral points. If the positive outweigh the negative then the candidate is worth interviewing. Positive items are things such as length of experience, relevant experience, variety of experience, education, computer science experience (such as university but specifically computer science rather than just Java courses), patents and publications (though reading these is not recommended), responsibility. Negative items are “wall of words” but not saying what the individual did, lengthy CV and quickly changing companies. Things to discard when reviewing a CV, things such as breaks in service, irrelevant information, small spelling or grammatical errors – especially when dealing with people who’s first language is not English.

Telephone screening provides its own challenges because of the unnatural narrow band of communication. A simple problem can become difficult and a tricky problem can become impossible over the phone. Asking open questions such as about recent projects can just use up valuable interview time because the power is passed to the candidate. Posing coding questions should be short, typically 30 seconds and can be conveyed without confusion and the answer to which are just a few lines long. An alternative is to use a shared screen so that there is no room for confusion.

To maximise the use of interviews ensure that there is some coordination over who is going to ask which questions to prevent repetition. Four or five experienced interviewers are the optimal number. When handing over the candidate don’t discuss the candidate to prevent bias. Gain feedback from interviewers independently before discussing the candidate.

If the candidate says that they are suffering from outside stress offer to reschedule the interview for a time when they are better able to focus on the interview process. During interviews candidates will be at their best. As an example if the candidates English is a challenge it is likely to be worse once they are hired, however a thick accent should be forgiven since after a day or two of working with the individual you will quickly get used to the way they speak. If the candidate makes inappropriate jokes or comments these are likely to be more prevalent once they start. If the candidate has strange mannerisms (such as restless legs etc) these can be medical conditions or stress induced and should be ignored. If there is silence then let it happen, this could be the way the candidate thinks and so you should be happy to let a little time pass for the candidate to focus. A large number of candidates lie, if you suspect a lie push it a bit to find out more – it is likely the candidate will admit to a misunderstanding however if the candidate gets caught up in their own lie the author has highlighted the issue and contradictions and then ends the interview process. Candidates expect certain questions, if you ask questions which are similar to these but are not the same then the candidate might inadvertently answer the wrong question in which case you should highlight the difference to clear the confusion up for the candidate. Where possible get them to do the job you will expect them to do and see how they get on, for jobs where you can’t do this ask them questions about their past jobs but remember it is likely the responses will be on the positive side. The book goes into many more details about interview questions than I am going to cover here.

Interviewers are only able to asses people of a similar level – it is very hard for a junior developer to asses the difference between a senior and a principle developer. This can be a real issue where you are looking to recruit a competency into a team that you don’t currently have as people will be recruiting outside of their field of expertise. Training interviewers through shadowing, classes and workshops, documentation and guides, coaching, practice interviews and then once they are actually interviewing candidates to continue to provide feedback so they are always improving. It is especially important to get interviewers to understand between domain knowledge and capabilities, if the candidate does not have the knowledge but has the capabilities then they will quickly pick up the knowledge.

Hire the best engineers you can afford and keep going till you run out of money/budget. During hiring there is always a margin of error. Hiring a poor performer is quickly correctable, you can just let them go. It is difficult to fire someone for doing just and “all-right” job. Hire the candidate is all of the things you want and nearly none of the things you don’t. “Nice” people are not enough, they need to have capability the nice people who are pleasant to everyone but when they start have no capability to do the work are the hardest to let go. You should never hire people who: slam former employers, severely irritates anyone, lies or deceives, ignores goals. Never hire below your standard, the hire will have impact for their entire tenure at the company which could exceed your own.

Feedback can give the option for a candidate to argue about an already made decision and potentially could give the option for a legal challenge. As such, if the HR team do not already have guidelines of what you say, the author recommends giving more generic feedback such as “You were not a great match today. Gain some more experience, hone your skills-coding, design and so on and consider applying again in a year or two”.

Keep and analyse records – not just of the candidates but of the recruiters. Review the data regularly. If you hire someone then let them go, was there any data which could have given you the information earlier? If a candidate performs really well were there things which you could pick up on to help identify this earlier? etc.

The amount you pay developers falls between the bounds of local market rate at the lower end up to creating golden handcuffs at the top. If you want great developers you need to pay them appropriately but over paying people will mean people who should not take the job take it only for the money and get tied in so they can not leave. Decide what your offer is and make it, this should be the maximum which you feel would be appropriate and explain this to the candidate so they know their is no room for negotiation. Make sure that you hire at the appropriate level, someone being interviewed for a developer role who is at a principle level will sail through the interview but they are not right for that role. Let the candidate speak to others on your team, even after the interview process, by being open and honest with them they are more likely to feel that they have made the right choice. If the candidate does not respond within a week don’t assume that they are not interested, instead get the highest person in the company you can to call to speak to the candidate as a sell call – this will set your company apart for a candidate who might get a couple of offers and your CEO has phones to speak to them.

The recruitment process is not over until the candidate is settled into their new job. Once they accept send a welcome email to them, giving them details about the work they will be doing – a large number of candidates will be passionate to know about some of the technologies they will be using before they actually start and will do some investigation at home. For people who relocate they will need even more help with things which you take for granted, e.g. where to rent a place or where shops are etc speak to them before they begin to see what help you can give them. Think about the first day – make sure they have a desk, their network account is set up, arrange for people to go out for lunch – everything you can do to make the new starter fell welcomed and part of the team. Try to arrange things for their first week to get them to start settling in this should cover the team, bussiness and technologies. Perhaps give them a peer mentor that they can chat to, someone who is an aspiring leader will usually enjoy taking on this role. Everyone is different and so will need to be treated a little differently to help them fit in.

Top talent want top talent requiring jobs, if you hire top talent make sure that the work they are doing is suitable. The things which turn off top talent are incompetent developer and low quality work.

View all my reviews

Book Notes : How Google Works

How Google Works
How Google Works by Eric Schmidt
My rating: 5 of 5 stars

The book lifts the lid a little on what goes on at Google. There are a number of insights which I found particularly interesting and a number of interesting anecdotes (such as the Google withdrawal from China).

There are a couple of over arching things in this book.

Bussiness plans are out of date as soon as the ink dries. Although it is good to think about where you are going, having a fixed and ridged plan of how you are going to get there is never going to suceed.

Hire great people, pay them well and let them get on with it without standing in their way will lead to creativity which you did not expect. The best smart creatives have the potential for disproportionate impact.

CEOs should make or be involved in product launches, acquisitions, public policy. The key skill of a CEO of senior leader is to know which decisions to make and which to let run their course.

Make sure you are working on the right things – spend 70% of time on the thing which is making you the money (not the thing which might in the future), spend 20% on what you think the next thing will be and 10% on speculative ideas which may or may not pay out.

Product, product product.

The best products are successful because of technical factors, not business ones. This explains why products such as Google Reader got closed down (which just presents RSS) and Google News (which aggregates data sources and identifies similar stores) was not.

Never think, we have put a lot of time and money into this so we have to make is a success. If something is not going the way it should kill it as soon as you realise it. Since there should be technical insight it is not likely to be a complete waste, it is likely some of the components are still useful for different projects.

Competitive advantages don’t last long. As such for companies to last a long time they need a “grow fast strategy”

The book refers to defaulting to open a large number of times. They explain how they feel this drives better products and that allowing people to build on the success of open tools, platforms etc drives innovation and improves things much quicker than if things are closed.

The defaulting to open also refers to not locking people in – if you lock people in so they can’t leave then it does not encourage you to innovate and as such a competition can come along and produce a much better product. This is clear from Google search where people can easily go to a competitor so by having a low barrier for the customer to change forces the company to focus on product quality.

Don’t follow competitors but do use them as motivators to keep you focused on product improvements. They gave the example of Bing and how this encouraged them on to innovate even more in search such as Google Instant Search.

If you want to know what you can do to change the world (or even your own career) think about where things will be 5 to 10 years in the future. How are things going to get from here to there, what is missing and what opportunities does this present. Thinking 5 to 10 years into the future self driving cars are extremely likely, but when Google kicked off their autonomous driving program there was not clear way how or who would get there.

View all my reviews

Book Notes : Management 3.0

Management 3.0: Leading Agile Developers, Developing Agile Leaders
Management 3.0: Leading Agile Developers, Developing Agile Leaders by Jurgen Appelo
My rating: 4 of 5 stars

The book is targeted at Agile management of software development teams but the ideas within it are not specific to them. It is written in a mixture of anecdotes, theories from scientific papers and practical approaches you can take. The target is to present a model which has 6 “views”; Energise people, Empower teams, Align constraints, Develop competence, Grow structure & Improve everything. Here are the things which I noted from each of these views.

Energise people – Innovation is the key to survival for a company, and innovation is the combination of information, knowledge, creativity, motivation, diversity & personality. Here people are key to the system, and people are complex. To energise people they need a creative environment which is safe (where people have freedom and can take risks without consequences), has games (allow people to practice their creative talents), is variation (routine kills creativity), visibility (show off creativity breeds more creativity), on the edge (challenges should be a little scary). Traditional management used extrinsic motivation, e.g. target driven bonuses, however these reduce creativity. Instead creativity is best when it comes from intrinsic motivation. Intrinsic motivations are to feel competent, to be accepted, curiosity, honor, purpose, autonomy, order, influence, social contact/relatedness & status from challenging work, achievement, personal growth, recognition & responsibility. Additionally “hygiene factors” such as job security, salary, working conditions, etc – these don’t motivate people but there absence does demotivate people.

Empower teams – No one person can comprehend an entire project, this is why at planning and daily stand-ups the entire team need to be present. As such the team is the best place to make decisions, not some manager since the team has the most information and understands it the best. As such empowering the team produces both the best results but also allows a company to grow. Telling people what to do just builds up motivational debt, but asking empowers people for their input and sometimes results in a better idea as well as the work actually getting done. Additionally a manager should not step in to make a decision but might help the team make their own decision – the worst thing a manager can do is to think “If I want a job doing properly do it myself” as this just obliterates the empowerment of the team. People or teams can be empowered for different tasks at different levels. The proposed levels go from management take control through to the team take control, these being Tell, Sell, Consult, Agree, Advise, Inquire, Delegate. For different people and different tasks they might have different levels (e.g. spending < £500 might be an inquire but for people in their first 3 months this might be at the consult level). There are different levels of maturity for empowered tasks from the low maturity level with little risk for the company, this could be things such as coding guidelines or internal workshops; through to moderate maturity which would be things such as self-organising the team, getting people involved in interviewing others for the team or potentially developing a new business model; up to a high maturity level where people determine their own salaries, choose their own projects or job title. Sometimes you would not empower an individual to do something but you might empower the team, so collectively they are responsible. Empowerment is built on trust & respect; between a manager and the team, team and a manager, within the team and within yourself – it needs to be built. One way to build trust is to be open and visible, if you tell people as much as possible (even if you think it might not be relevant) then they will do the same and build trust further.

Align constraints – Manage the system, not the people. So we now have a group of creative and empowered people and teams. There are always boundaries, and these boundaries should be tweaked and refined to get the desired outcomes from the team. The role of a leader is to develop the self organising system, protect the system & direct the system. Directing the team is to give it purpose. People have three types of purpose intrinsic, extrinsic and autonomous. The intrinsic purpose of a software team is to create software – without this the team no longer exists. The autonomous purpose for the same team might be to develop “clean code”. The extrinsic purpose is imposed by a leader, and this can be for the individual team or company since it is only the leader who can is responsible for the whole system. This extrinsic purpose(s) is the long term vision, for the product the team and/or company as well as the short term mission. These statements should be understandable, concise, memorable, ambitious, actionable, useful, plain, tangible, excitable, and inspiring. Again, a purpose linked to a reward will likely restrict people and reduce creativity.

Develop competence – Growing competencies is key to systems improving. There are multiple ways to grow competencies – self directed, being coached (this does not need to be by a manager), certification (the certificate only attests to your ability at a point in time but the process of certification will give you learning targets), tools (such as check lists), peer review and feedback, supervisors (to check quality), management (to check compliance). Care has to be taken else you get a “what you measure is what you get” approach, and if this is of a sub-system the optimisation of which might be bad for the business as a whole. The dimensions which contribute towards the project are functionality, quality, tools, people, time, process & value so these would give a more holistic view of progress but should be measures at the highest level which they make sense. Competency is a mixture of skill and discipline. Skill is missed out of the agile manifesto, and following which craftsmanship or mastery has been an important topic. Discipline is things such as task board up to date, meetings start on time, code coverage, etc. Skill and discipline are deliverables, where as knowledge or experience is theoretical – people should be rated on their deliverables not on the theoretical. Where possible use relative ratings – how much better are things than the last time, not just how good are things. As with all of agile, people should get feedback quickly. The people who work closely together should provide feedback – not managers who do not work with people continually.

Grow structure – With people being the core of the system, communication is the key to success. Communication is tricky as different people interpret the same thing differently – it is a combination of information, relationship and feedback. Since relationships are key to this whenever a team is forced together the communication will start poorly, as such keeping a team together (even if the project change) is beneficial. Where feedback between team members is poor the communication suffers and the result is unpredictable. The structure of communication should impact the structure of the teams – where communication within the team should be the primary communication. Communication from outside of the team will always be needed but this should be at a slower pace. This has impact on the decision between forming a functional or cross-functional team. Where communication is mostly within a function then a functional team is more optimal but where the communication with with others then a cross-functional team is more optimal. This might also change over time, and it might be worth seconding someone from a functional team to another team to ease communication. Since each team optimises for its own process it is possible that, for example, a functional team might optimise its process so the function is very efficient but this might not be efficient for its users – as such each team should be a value center with other teams as valued customers. For inter-team communication there are two approaches – where all communication goes via management or where teams talk directly. It is mostly the case where teams talking directly is best because of bottlenecks which going via management introduce. The ideal team is one of 3-7 people where members compliment each other in such a way that they get the job done quickly – this is only possible by having a diverse team. It has also been shown that the product developed is a reflection of communication structure of organisations – e.g. have 2 teams working on a compiler and you will get a two parse compiler. So the team needs to be adapted to the product which is being developed. To keep people interested their role should change regularly, so it is best to keep job titles broad to allow flexibility. These broad titles help informal leadership – everyone in the team should take on whatever is needed for the team to function best be it leadership or development. To facilitate this generalised specialists (T people) aid in the team members being able to take on any task required. Build on the communication by connecting people to build relationships and improve communication.

Improve everything – A system is a success until it is not, the best we can do is delay failure – a system has to change to be able to keep up and delay its end. For a system to be changed it has to take into account the current environment the system is in – simply repeating someone else approach to solving a problem will not yield the same results for you as it did for them. Systems can adapted but they also need to explore new ideas as well as anticipate potential shifts – these should be continually being reevaluated to maintain change and prevent failure. The model presented identifies the following steps to improve the system; identify the problem, define the goal of the change, define success metric, identify the improvement, implement the improvement, collect the metric, analyse the results, distill learnings and loop again. This can reach the best peak for this mountain but it might not be the peak of the maintain range – taking radical jumps from one mountain to the next might not land you in the idea place but you can improve from there to get to the top. People naturally don’t like change and sometimes the environment needs to be changed to encourage people to try things. To prevent stagnation it is important for teams to try out new approaches to see if they improve things for them – sometimes even by imposing a little pain for stagnation, this then gets teams to want to improve themselves to reach the next peak. There are three strategies for optimal performance. Changes and improvements to existing practices. When starting new projects try out taking the best solutions others teams are using and see if the combination results in a better result. Increase inter-team communication to spread ideas which teams might then pick up on and use. Some tools for doing this are using retrospectives, improvement backlogs, use catalysts to encourage change, improvement community.

View all my reviews

Book Notes : Sort Your Brain Out

Sort Your Brain Out: Boost Your Performance, Manage Stress and Achieve More
Sort Your Brain Out: Boost Your Performance, Manage Stress and Achieve More by Adrian Webster
My rating: 4 of 5 stars

An interesting book highlighting that the brain is always changing, and that providing it with new challenges and through a healthy lifestyle it can continue to evolve and take on the continuous challenges which we throw at it.

My personal take aways are how rest and sleep are as important to the brain as taking in information and that by continuously stimulating our brain we are actually suppressing the output which it is generating. Not only does this get explained, but some tips are provided on how to actually use this to your advantage if you are trying to tackle a particularly challenging problem.

Additionally the book looks at stress and how it is both a bad but also a good thing – it goes on to explain how managing stress can actually use it to your advantage and that there are ways to reduce the stress levels in your body.

View all my reviews

Bulgaria Web Summit 2016 : Managing for Happiness

This was actually the motivation for me to attend this conference, I am currently reading “Management 3.0” by Jurgen Appelo and so it was quite a surprise when I heard he was coming to Sofia.

With only 45 minutes he tried to cover a lot in a short time.

His executive summary:

  • Run experiments
  • Manage systems not people
  • Focus on progress not happiness

Where does management come from

manage (v.)
1560s, probably from Italian maneggiare “to handle,” especially “to control a horse,” ultimately from Latin noun manus “hand”. Influenced by French manège “horsemanship” (earliest English sense was of handling horses), which also was from Italian. Extended to other objects or business from 1570s.

The way we might have managed in the past might have worked well for people during the industrial revolution.  Now however people are increasingly working in a career with creativity at its core.  As such we need to rethink the way we do things and that is where Management 3.0 comes into play.

He then went on to give some fun example of when he invited some of his team to come round to his house and cook for him – I might try this one in the future when I have a few more people in the Sofia office.  The funny thing for me is it appears that everyone has heard of Jamie Oliver.

Learn about people, getting people to create a personal map of themselves.  This shows what a person is interested in.  But never get the person to speak about themselves, instead get others to ask questions.

He then quickly jumped on to delegation boards and poker.  Where for different things people have different levels of authority.

  1. Tell
  2. Sell
  3. Consult
  4. Agree
  5. Advise
  6. Inquire
  7. Delegate

One example of this would be that for expenses less than €500 an employee might be able to spend the money, but a manager might inquire what they spent it on.  For amount over that the employee must agree the spending with the manager first.  Not everyone might have the same level of authority, e.g. for a new starter they might have to agree on all purchases.

Happy people are more productive people.

12 Steps to Happiness v1.00 - Poster (color)

When your experimenting you are learning – you might fail and you might succeed but either way you will learn something.  As such not only should success be celebrated but so should learning.

learningbyexperiment

Bulgaria Web Summit 2016 : The World Is Our Interface – Design Beyond The Screen

User experience is so key and Danielle Reid presented a couple of things which I found really intriguing.  Firstly the idea of being able to use a device (phone, watch, clock etc) without actually touching it.  There has been some work on this at Google under project Soli.

The possibilities with Soli are really intriguing but how they take the next step is the biggest question for me.  Event, such a click etc are easy to define to be used within an application, how complex gestures can be turned into something similar for developers to work with is going to be tricky to give apps freedom but for users to be able to find them intuitive to use.

Also there was a revisit to something which has been around a long time – text to speech.  Where as before the output of such processes sounded very robotic, increasingly these are sounding more life like.  This combined with the increasing trend where devices have a personality make people think that the person is real – examples such as Siri on iPhone, Cortana on Windows or Alexis for Amazon.  With this there are many possibilities to engage people, such as the idea of a personalised radio station.

Taking this personalisation further where you can interact with a system to get jobs done such as shopping etc is inevitable.  Facebook is known to be working on a digital assistant and so in the future you can just ask for whatever you want and it will turn up to you door, a similar service to Magic+ which used a combinations of humans and intelligent software currently but with time I expect the intelligent software will do more and more of the workload.

Bulgaria Web Summit 2016 : Emerging Technologies

Constantine Spathis CEO of Xogito provided a glimpse into what the future might be like.

The presentation started with current trends, those towards containerised micro services which drives

  • Small loosely coupled services
  • Simple communication (JSON/protobufs/thrift)
  • Containerised for quick deployment
  • Increase use of “full stack” developers
  • Simple database schemas

In the future everything will be thinking and where as before you had to get a number of specialists to be able to develop such software today you can use existing tools:

  • SciKit-learn
  • NumPY
  • Weka
  • Deep Learning
  • NLP
  • And more…

The presentation also a quick jump around different technologies and companies, probably with the most interesting one being Magic Leap

https://www.youtube.com/watch?v=Ln6TZ14xITg