Ridiculously Good Software: Agile Development, Project Management & Real Testing
Software is hard. Wait. Let’s be honest. It’s a miracle the stuff works at all.
Now we can bellyache plenty about byte alignment issues, mysterious interrupts, legacy software, wonky update patches, and failed table joins. But these are not the real challenges.
Does your software project represent an actual business case? Do you understand the difference between your users and your customers? Is your project timeline even the slightest bit realistic? Can you make reliable time and budget estimates? Do you have effective testing strategies, or is it just the last step in your Gantt chart? Incidentally, 80 hour weeks are always a bad solution to your problems (and those problems actually started months ago).
Good software process is the machinery of manufacturing quality and value from ambiguity — on time and within budget. I can help. No. Seriously. I can. I’ve done it. Many times. With a whole variety of clients. And let me be very upfront. What it takes to become successful in your software projects is not easy. I’m not going to give you a list of ten pointers and then be on my way. If we’re going to solve your problems, it will require big changes, full investment, some tough love, admission that you might be part of the problem, and a real commitment to the process.
Think of me as your software therapist. Let’s schedule an appointment.
Are you an embedded or systems software developer? Interested in applying good testing techniques to your work? I've got just the thing: Dr. Surly’s School for Mad Scientists: Unit Testing & Other Embedded Software Catalysts.
User Experience + Human Computer Interaction
Ever used a handheld power drill? Really simple design, right? Did you know that the first such device was designed to be steadied with two hands while you pressed against it with your chest? My point is that humans have been using tools for millennia; despite this, we still must work diligently to arrive at good designs for even a drill bit attached to a motor. How much more difficult is it to get digital systems right? Computers as we know them now have existed for a handful of decades. We have a long ways to go to master our own invention.
That's where I come in. I have over a decade of experience in the craft of software as well as interface and user experience design. And, I’ll throw in my Ph.D. studies in the field of Human Computer Interaction at no extra charge. Practical problems? Theoretical issues? Old-skool GUIs or new-fangled gestures… the more challenging the better. Let’s interface.
Mike has been extremely influential in our efforts on the Gentex Software Development Team to build quality into our products. His ability to elicit objectives and penchant for tackling large, difficult problems has been transformative. Mike brings not only an exceptionally-broad set of development skills, but also a sense of responsibility to continuously improve systems and procedures. For these reasons, I continue to call on him for a variety of assignments, knowing each time that it will be completed to a high standard.
—Jason Enyart, Gentex Corporation
I can't say enough good things about Mike. Mike has developed a wide range of software for us. He has been critical in developing DSP products, real-time OS products, and GUI-instrumentation control products while on contract. The software Mike has developed for us has worked without any incident for years. This fact alone is testament to his broad depth of understanding, his strong focus on the customer, and his ability to take less than thorough requirements and develop a completely working software product. Mike has great social skills and can easily communicate his ideas to both technical and non-technical customers.
—Paul Skentzos, InterMet Systems
So, I know this guy, Mike. He’s one of those outgoing guys that you like immediately, and when you get to know him, he's dang snazzy.
He blends his technical skills, creativity, and arsenal of trivia into elegant designs. He's able to grab tiny seeds of ideas and nurture them into wonderful creations of power and simplicity.
Mike is the type that cares about doing things right. A question of “Hey Mike, should we refactor that interface?” will trigger a zen conversation about “listening to the code” and “the code wants to be like so.”
“Hey Mike, how does that work?” You suddenly have a document that makes you want to weep tears of joy, either because of a visceral response to grammatically perfect prose or an emotional connection to the typographical beauty of the piece itself.
Mike can coax the shyest bits of information from their hiding places. Whether it is spelunking through legacy code, reconnoitering the internet landscape, or exploring the library stacks, he’s sure to find the answer.
Unless you have a preference for trained monkeys, you’re going to want to jump at the chance to work with this man. I will accept notes of appreciation once you have done so.
I could tell you lots of things about Mike such as his in-depth knowledge of C, or his ability to work through a lot of Ruby code without breaking a sweat. But that's boring stuff that you'll find on any good resume or recommendation. Mike isn't boring. Even though Mike's technical chops are great, that's not the main reason you want to work with him.
You want to work with Mike because he will make your organization better. Here's why:
- He's a teacher. Do you lack understanding about something he knows? Mike will teach it to you, and teach it well.
- He's a doer. Stuff doesn't do itself, and Mike cleans up loose ends or makes sure people know what those loose ends are.
- He's socially disarming. He can take a tense situation and loosen it up. This is magic and no one can scientifically demonstrate how he does it. Needless to say, it's invaluable when dealing with ego-inflated professionals (like myself) under stress.
- Most importantly, he wants people he works with to succeed — to get it right. It matters to him that people succeed even when he isn't enjoying the work. I think this is because he finds a lot of satisfaction in watching something awesome come together.
Long story short, if Mike wants to work with you, you had best have a really really really good reason not to work with him.
—John Van Enk, Atomic Embedded
Mike provided excellent support and direction when needed. While we had a vision of what we wanted, we had no idea if it could be done. Mike and his group always managed to create what we wanted.
—Thomas Jangula, StartupX