The Most Important Thing in Software Engineering
When reading and talking about software development, there is a lot of emphasis on code. It’s all about writing fast, fancy or clever code. Now, don’t get me wrong, I love programming and I appreciate writing code. However, it’s a trap to think about software development as just coding. There is a lot more involved here, especially when you are doing it for a living.
Imagine your car is broken. One day, you want to go on a trip with your family, but the engine refuses to start. Knowing very little about cars, you call your car dealer and tell them about your problem. You say your car is broken. A mechanic comes by and picks up your car. He says, they will take care of it and call you when it’s all done. Then, you talk to your family and postpone your trip to a different date.
A few days later, your car dealer calls. He says, it’s all good, and you can come over to pick up the car. Once you are there, someone takes you to a parking lot and shows you a shiny new sports car. Mildly irritated, you ask why they are showing you this new fancy sports car. The man tells you, this is now your new car. He hands you a bunch of papers showing a price of 100 000 $. At first, you were surprised, now you are angry: “What was the issue with the old car that you could not fix it?” The man says: “I have no idea, you said your car was broken, so we got you a new one. It runs perfectly fine and much faster than the old one. Please sign here…” You look at the car: It has only two seats, not enough for your family. It’s consuming more gas than your entire neighborhood combined and of course, the sticker price is completely mind-blowing.
You might think this story is crazy, but it’s not unusual in software development. The car dealer assumed your car was completely broken and took your word for it. After all, he likes selling new cars better than fixing old ones. For him, it’s all about selling cars.
Bottom line: Find out what is actually needed and build the right thing.
- Talk to the customer and understand his needs first.
- Make sure, you really understand the requirements by asking a lot of questions and challenging assumptions.
- Keep talking to the client in the process of problem-solving. If possible, show intermediate results and establish a feedback loop.
What has been your experience with “building the right thing”?
Note: You can also find this episode on YouTube and Spotify.