Nowadays, we have broad, powerful options when writing software applications. Our choices in design, strategy, architecture and tools is awesome. Successful projects must include people with wide experience in development to make the most of it.
I've gained practical experience through the course a number of projects in a range of industries. I've worked extensively on business applications, either for internal use or as commercial products in hosted web applications. Some of my work also involved design and development of the "plumbing" that runs behind the scenes in application frameworks.
My skills in application development include:
I have experience in various application architectures. I understand the advantages and disadvantages of each, how to work with them, when to avoid them. Over a number of years I've worked on various applications as architect, lead engineer, and team engineer. The tools and environments we used varied. In some we used an application server such as WebLogic as host. In others, a web server acted as a container for a Java application as the back-end. And in other cases we went straight from a fat client to the database.
My work includes the specification, design and implementation of modules and subsystems. I've worked on abstraction of data sources, notification subsystems, personalization, among many others. I've written specifications and designs for handoff to other developers, and have worked from specifications developed by team leads. I can work independently on modules when necessary, work with other subsystem on integration, or lead teams in modular development. And, most importantly, I believe in the principle of design by contract, in using standard toolkits when possible, and providing a clean API for other programers to use in plugging in a module.
It takes all kinds of people to create an application. We need the big vision, we need to write the book, and we need to weld the plates together. This would imply having a large team at hand to take care of all our various needs. But you can reduce the size of your working group, and move more quickly, by hiring experienced generalists. Working with generalists allows you to reallocate resources as the project's requirements change.
My work as "on the line" programmer, analyst, lead, and architect gives me flexibility to work on many project tasks. I have a strong interest in design and in analysis; I love to program and build systems. Whether you need a coder, designer or a lead, I have the experience to dig in and get to work.
Java is the language of choice for most of my mainstream development work. I use various languages, toolkits and such as necessary - such as SQL, web-browser technologies, scripting languages, etc.