I have been a software engineer, both designing and developing, since 1977. I have worked with a variety of 2nd, 3rd and 4th generation languages on a mixture of mainframes, mini- and micro-computers. I have worked with flat files, indexed files, hierarchical databases, network databases and relational databases. The user interfaces have included punched card, paper tape, teletype, block mode, CHUI, GUI and web. I have written code which has been procedural, model-driven, event-driven, component-based and object oriented. I have built software using the 1-tier, 2-tier, 3-tier and Model-View-Controller (MVC) architectures. After working with COBOL for 16 years I switched to UNIFACE in 1993, starting with version 5, then progressing through version 6 to version 7. In the middle of 2002 I decided to teach myself to develop web applications using PHP and MySQL.
I prefer being involved in the complete life cycle of a project - analysis, design, specification and development. My experience as a developer makes me aware of the strengths and weaknesses of the language, and how the various features can be used to best advantage. This gives me the ability to design systems that can actually be built as well as taking an active role in their development.
My particular forte is not just the development of end-user software, it is the creation of development infrastructures with which such software can be built. I did this in 1985 with COBOL, and I have done the same thing with UNIFACE (refer to my Building Blocks in UNIFACE stuff for more details). My library of reusable software includes a flexible Menu and Security (Role Based Access Control or RBAC) system which can be used as the front end to any application. Using this infrastructure I can create working transactions in timescales that can be measured with a watch, not a calendar as I have found with other development environments. Since the release of UNIFACE version 7.2.06 with its ability to handle XML streams I have upgraded my development environment to be totally 3-Tier, with the added flexibility of a separate application model for the presentation layer.
I have subsequently rebuilt my entire development environment as a web application using PHP and MySQL. This I have done using a combination of the 3-Tier and MVC architectures with object-oriented modules in the business and the data access layers, and with all HTML output in the presentation layer being generated via XML and XSL transformations using a small number of reusable XSL stylesheets. My PHP development infrastructure includes a Role Based Access Control system, an Audit Logging facility, an activity based Workflow Engine, a Data Dictionary and facilities for Internationalisation.
The reason that I am still in software development after all these years is because it is what I do best, and it is what I enjoy the most. I enjoy being able to produce high-quality software, and I like being able to share my knowledge and experience with others. My motivation is the pursuit of technical excellence and the satisfaction of a job well done.