I’ve been working with this particular client for the better part of a year. During my time there, I’ve gone from 100% IT Pro style to, sometimes grudgingly, to about 75% IT Pro and 25% Custom Development. Previous to this client, my experience in custom development was focused on being the only one that could write code and needing a solution to X, Y, Z business problem. Now that I’ve had time to digest and learn from the masters, I find that my outlook on patterns for programming and the end results are much different.
For starters, as I’ve previously articulated on this blog, USER EXPERIENCE MATTERS. I cannot stand some of the crap that I see out there. <Digressions deleted in review>
Next, coding is hard. What I did before, in my previous life, that was not coding – that was rapid application prototyping that passed for coding. It’s one thing when requirements are always changing (as they tend to do when certain key aspects are missing). It is quite another when solving the problem is JUST PLAIN HARD. That could take the form of – “I don’t know how to proceed” or “Dude, your business process sucks, but I shall write to your specifications (which also suck).” Navigating those waters is a challenge for even the best programmers – and I work with the best programmers on earth. Developing a consistent programming pattern, forcing yourself to do code reviews even when you know what you’ve produced is crap, and relying on your team is essential. Case in point – I’m in a cube with three real programmers who work at the same consultancy as I. They are on a very difficult project with an insane – INSANE delivery date. Day by day I quietly listen – learning more about proper coding than I care to admit just by eavesdropping and I’ve got to say – I am truly humbled and impressed by my colleagues who take really REALLY hard problems, write a massive amount of code, beat their timetables and all the while, make it LOOK gorgeous. It’s awe inspiring.
Finally, it was time once again for me to put my development hat back on after a few month hiatus. It’s nice this time because I’m in at ground level. I’m playing the role of IT Pro, Architect, Designer, Developer and more than a little project management. The nice part about wearing all of those hats is that I get to put my touch on development, the process and the product that lots of people are going to see. The end result?
1. Find out what the customer wants, not just the analyst.
2. Find out what the customer needs, not just what they think they need.
3. Find out what the product can do out of the box.
4. Find out what it takes to bridge the gaps.
5. Design smartly, customize discretely , implement intelligently.
6. Be honest when it comes to what is not working.
By writing code only when it is necessary, keeping that code small and discrete – well, all manner of magic happens, not the least of which is a 60% reduction in code from version 1 to version 2 – with several major new features being added!
Better apps for all!