One of the most important lessons I have learned as a software engineer I learned from my brother, the civil engineer. I come from a line of civil engineers, my dad is a civil engineer and so are my two brothers. When I started working in software development I used to envy their mature process and rigor. Then one evening, as I was traveling home from a difficult client meeting I came to my brothers house for dinner. He is a very experienced civil engineer, his achievements include the Copenhagen Opera House.
As I threw myself on the sofa, completely exhausted, I exclaimed: “How come we in software engineering can’t seem to manage creating complex things in the same way as you in civil engineering. I, mean, you’re so lucky, when you start out you have everything planned and specified in your blue prints. We’re always fumbling with changing requirements and customer needs while you can focus on the implementation.”
And he looked at me the way big brothers look at their little sisters, and said: “Little sis. We don’t know everything before we start. We consider ourselves lucky if we know 80%.”
This took my by surprise: “How can you build something that you don’t know in detail what is? You can’t change things that are set in concrete!”
But he continued to explain that they did their foundation work in detail and then as the building was built they filled in the details as they went along. “And that’s why,” he explained, “you always have the architect and lead engineer on site so that they can address issues as they come up and decide how to handle them.”
Sound familiar? Who are the architect and lead engineer in your project? Get them on board!