This is the code presented at my JavaZone 2024 talk "Secrets of Effective Software Development".
Here is a summary of my talk:
"The first principle is that you should not fool yourself, and yourself is the easiest person to fool" - Richard Feynman
For me, the essence of software development is that you're reflecting on two questions continuously:
- What are you doing?
- How is it going?
That is: Insight and feedback. This works at several levels:
- What is the job of our system in the eyes of our users, our organization and the world at large?
- How do the systems that we need to replace or interact with really work in terms of their user interface, their data structures and the code that implement them?
- How is the code we're writing answering these needs of our users and the constraints of the world around it?
The roles I take on to solve these systems are threefold:
- Software ethnographer: I want to visit and spend time with my users in their daily setting
- Software archeologist: I want to learn how use the current systems that my users are using, I want to examine the databases and source code
- Software builder: I learn by trying things out. I learn how well my understanding is mapping the users tasks and expectations and what questions are important for me to answer next
I believe we spend too little time understanding our place in our organization and in the world. Norway has a special dilemma: As a country, we make a lot of money by accelerating the destruction of the climate.
- In 2024 more Norwegian hydrocarbons were burned than any previous year
- 1.5 degree warming is inevitable
- Norway had the highest number of rainy days in 2024 for any recorded year
- This sort of weather is what the climate models predict
We need to assume responsibility for the negative effects of our work. If you contribute to the fossil energy industry, the shitty summer is on you.
Complete slide deck (huge file, hundreds of code screenshots)