My philosophies can be divided into managerial and development philosophies.
For software management, I employ Agile methodologies. Agile allows greater flexibility and higher software quality. At a previous company, I established Agile methodologies. Before I started managing the team, it had significant trouble getting new software into the customers’ hands. There was a critical feature that a programmer implemented. The customers were clamoring for the feature, but it was not released until 6 months after he finished it. After implementing Agile, I reduced the turn around time from 6 months to 2-4 weeks. The team’s morale improved greatly as fixes and features were readily available instead of laden in bureaucracy.
Agile also stresses direct developer involvement with the end customer. I increased the development team’s interaction with the customers. Before I started managing the team, there were several features that did not match the customers’ expectation because there was a barrier to getting feedback between the developers and end customers. After implementing Agile, I increased customer involvement during the development cycle. Customers saw that their feedback was integrated into the product and were shown that the company could address their concerns.
For development, I use Booch Methodology. I think of it as a precursor to a lot of the Agile concepts except on a macro level. Booch Methodology can be simply summarized as: design a little, code a little, test a little and repeat. You are always coding on what you know already works. When an issue arises during development, it is much easier to find where it is because only a few changes were made to the code since the last test.
I make use of design patterns in development. Especially in GUI development, I use MVC (Model View Controller). An improper use of design patterns can make the code worse off than without using a design pattern. I use design patterns pragmatically to make sure they improve the code quality.
My development philosophy is heavily influenced by The Pragmatic Programmer. I highly recommend reading it and have always had my team members read it.
My main focus in coding projects has been developing distributed systems and user experience/user interface development. Though my focus is in certain areas, my projects have been quite varied.
I do both professional and personal projects. Personal projects like the Million Monkeys project went viral and gained international notoriety.
I worked on the web services, Android implementation and website for Dibbs International. I rewrote the web services using Axis2 and Tomcat. Later, I stepped in and finished the Android implementation of the client program. Recently, I led the team adding the client services into a Joomla web site using JQuery.
I designed and implemented a system called BrightClip. BrightClip is a high performance and low latency disk format and client API aimed at the media industry. It is quite successful and is being used at large, well-known companies in the media industry. My role in the project was a manager, developer and liaison to companies who implemented the BrightClip API.
For a longer list of projects, please visit my online resume.