The organisation was absolutely flawless. There was even a vegetarian and vegan lunch option which was actually very tasty:
Here are my takeaways.
Living the good life - Ted Neward
How do you motivate people? A lot of companies are looking for passionate developers but passion fades over time.
If you hire the passionate developer and the passion fades, now you just have a developer.
So how do you motivate people? A good book on the subject is Why motivating people doesn't work and what does by Susan Fowler.
There are two kinds of motiviation: intrinsic motivation which comes from the inside and extrinsic motivation which comes from the outside. Extrinsic motivation is a bonus that you get when meeting a specific goal or completing a certain task on time. Extrinsic motivation is like junk food and it doesn't last. An experiment using the candle problem has proven that an incentivized group actually goes slower and takes longer than a group without incentive. Intrinsic motivation is far more effective.
So intrinsic motivation is the motivation we have to aim for. But how do people get intrinsically motivated. This is described in the self-determination theory. There are 3 basic psychological needs for a person to be intrinsically motivated:
- Autonomy: Having a sense of free will
- Relatedness: Be connected to the goal and the people
- Competence: Control the environment and the outcome
But what about the good life, how do you get from being intrinsically motivated to living a good life? The first thing to ask your self: what is your purpose? Why are you here? You can have multiple purposes. The Ryff model is a model for the good life. It defines six factors for psychological well-being:
- Personal growth
- Purpose in life
- Environmental mastery
- Positive relations with others
Some remarkable quotes:
All science finds its roots in Aristoteles
In a company where everything is decided in agreement the biggest asshole always wins
There's a sense of power in disagreement
Shaving the golden yak - Jessica Kerr
Any seemingly pointless activity which is actually necessary to solve a problem which solves a problem which, several levels of recursion later, solves the real problem you're working on.
Although it doesn't look like it, shaving yaks is important for a project. Defeating yaks can help make a project go smooth in the long run. On the opposite is yak racing. Skipping over yaks to get your own task done. This keeps the rest of the team slower. You have to be watchful, sometimes you're not shaving the yak but combing the hairs in a different direction. Although this is fine to get to know the system.
What is the golden yak? Fixing something tedious or hard in the project in a way that it is now easy.
Some advice about yaks:
- Proven usefulness
On programming: The art of programming is not in the syntax. A language is just a way to express yourself.
On Microservices & monorepositories: Prefer monolithic repositories over a repository per microservice. An interesting talk on the subject is: Don't build a distributed monolith by Ben Christensen.
Stories every developer should know by Neal Ford
Legacy is why we can't have nice things: Once you've built it then you own it. Unfortunately good developers are maintaining software instead of adding value.
Knight Capital Group: A story every developer should read is about the Knigth Capital Group. It's a financial services company which went bankrupt in 45 minutes due to a wrong deploy.
The more reusable something is, the less usable it is: SAP is the perfect example of this. No SAP installation is every complete, they just stop working on it.
A good book on the subject is Dreaming in code.
Remember the next time you're replacing Angular with React without a business driver. This is like painting the Golden Gate Bridge, it is busy work. There is no value added to the project.
Mob programming by LLewellyn Falco
Using mob programming to solve programming problems. In mob programming one person is the driver, he is actually nothing more then a typist and does no thinking. Then there is the navigator who does the thinking. In the beginning this is 1 person, when the team is familiar with mob programming the entire team becomes the navigator.
It's important to do a retrospective once every session, normally at the end of each day. This way the team can look back on what has been accomplished and what can go better. How many people do you need? If everybody is either contributing or learning, you have enough people.
Important when practicing mob programming:
What if you have 2 ideas and there is no consensus on an idea? Split up into 2 mobs and try out both ideas.
One of the advantages of mob programming: the best of the whole team makes it into the work.
The joy of stochastic gradient descent by Carin Meier
Researchers succeeded to decode neural signals from a monkey into expressions on a face. Quite a breakthrough!