I feel privileged. I get to work with so many bright people in the industry while doing what I love the most – developing software.
Every consulting engagement is unique in its own ways. Whether the task is to create a use case model, implement an architecture, establish a process, or perhaps coach a team through a few iterations, it is always a thrill to see your ideas take root with the team.
Of course, no ideas are mine alone – I steal as much as I can from those great software thinkers out there; but it is my job to weave them together into solutions for my customers.
I have spent more than 25 years in the software industry and I have always tried to stay close to the core software development. After all, that’s what it boils down to: if you don’t get the actual code right, there’s no point in trying with the rest. When Java came along I was thrilled when I got a chance to use it, more than 15 years ago. And it has delivered to my expectations all along, both as a versatile programming language and as a “design tool”.
Of course, albeit being a key piece of the puzzle, programming by itself doesn’t build software systems. I bring a wealth of OOA/D techniques, design patterns, use case modeling, UML modeling and other object-oriented tricks to my customers, to help define their systems.
All well-built systems rest on a well-defined architecture. (however, the opposite is not necessarily true!) This, to me, is key to good software: only well-built architectures allow systems to grow incrementally into their final products. And I don’t mind “getting my hands dirty” with helping the team craft out their architecture.
Now, finally, development itself is not all! No matter how well the team can program, or how well-defined a software architecture there is, without proper orchestration of the whole effort the chances of success are slim. This is where the real challenge lies: to bring all the pieces together into a working project plan and then lead the team through its execution. And this is where my skill set converges: with my long in-the-trenches experience in the field, my focus on architecture, and my expertise in software project and process, I know how to plan and execute a project that ultimately delivers a successful product.