This role covers April 2011 till April 2012. Employed as an experienced software developer; I developed clients requirements and created libraries to assist doing this in future. The client work was creation of custom web applications for managing business solutions surrounding FMP. The directors do presentations on applications utilising FMP in the big FMP conferences annually. This is the most visible artefact contract I have held.
With more recent thought; this company could be considered a tech startup. It was structured as an agency, rather than as a reseller. To the best of my knowledge, the company is legally running, but not taking on client work. I do know that at the point of writing, all the employees, and the management team are employed by other companies.
I thought this was a good place to work as the Directors are accredited Agile and Scrum PM professionals. This gave me a “warm start” for doing professional agile, which is often necessary for many lean enterprises. Anyone can read books (I do, and professional websites), but employers tend to rate this type of experience more highly.
Having written that about Agile, in retrospect; my contract mentions testing, which I did quite a lot of. Secondly, I liked this role for the infrastructure I was building. Client requirements held highest priority, but otherwise I was building a proper framework.
- Taking client briefs, and generating software to fulfil them;
- Designing clear UIs to correlate with stated client business process;
- To manage and perform testing for artefacts, supplying known sign-off points along an Agile development process;
- My contract held a specific clause for testing and quality;
- Frequent and efficient communication;
There is a list of client work, but please see mswhw-project a stand-out project I wrote at this employer.
Apparently my larger scale perspective, as a pure software engineer improved the frameworks beyond what I wrote directly. The work I put into infrastructure is architecture focussed. I targeted reducing operating costs as my first objective, and increasing quality. I then ~ to reduce code needed foreach page request ~ added a caching DB layer, which has the side effect of reducing the SQL lookup times. The changes mean the work afterwards is purely the high-value work which Agile proposes is most important. I moved the ad-hoc assembled software towards some algorithms, and increased adaptablity to change.
As software engineering
- Developed widgets for business applications using OOP;
- Re-factored existing code into manageable classes;
- Deployed and managed logging so internal business logic was at a known state, and error emails in case of failure;
- Improved internal information flow across code, reducing coupling;
- Created a clean internal error mechanism with Exceptions;
- Created data-caching schemes, so the limitations of the database which is not designed to run on web-servers; where not affecting the websites;
- Created UI widgets to meet the “beyond RFC HTML” requirement of attractive web applications;
- The response handlers tied to the same widgets where largely automated for simple usecases. Captured data on forms was stored with a few lines of configuration. This let an increased focus on design and small details, improving the clients artefacts;
- Likewise simple rasterisation of tabular data was a few lines of configuration;
- The input aspect of MVC was vastly improved, doing features like date translation automatically;
I have gained commercial experience in the following systems and tools:
- Work as small units, exactly to client requirements;
- OO PHP 5;
- jQuery, AJAX, OO JS;
- HTML4 and CSS;
- FileMakerPro (FMP), client and server;
- Image manipulation, meta data extraction, scaling/ shearing, via gd and Imagemagik;
- SOAP library integration - I had freedom to make this one tidy;
- A XML integration, for non-SOAP XML;
- Did feature and fault analysis for the FMP ODBC driver, but this isn't mature enough to be relevant;
- Framework-structured networking libraries;
- Eclipse tool chain;
- vim textual manipulation;
- Usage of SVN (commandline), automating SVN code updates;
- Apache2, all the configuration and settings for the host;
- Apple Max OSX, Unix tools on this platform;
- Interaction with and responsibility for other peoples code (and raising standards against this);
- XML1.0, XML1.0 with name-spaces, SOAP, XML schema;
- Another implementation for the Email systems and routing: IMAP, MIME;
- syslogd, configuration and management;
I am attempting to diversify my skills base, to improve my perspective and to gain a view of different sectors efficiencies. This role was time spent on jQuery, CSS, Agile and demonstrates I can start using a new tool chain in a managed and controlled fashion. I can't see this being important, but I was using an Apple mac every working-day.
From a software engineering angle, more experience in PHP5. I strongly favour newer editions of this language, and am able to build systems more quickly. I expect every other developer will say the same thing on this point.
From an organisational perspective this is different structure. Again, I take the exposure as learning experience. Working in a more Agile environment, with a better controlled risk process, lets me generate estimates with better confidence.