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 mentor a
team through a couple of 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 almost 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 my first chance to use it, more than 10
years ago. And it has delivered to my expectations 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.