You have more knowledge than you know
I was talking to a friend the other day about someone I know that’s considering starting a business as a florist. They said how amazing her flower arrangement were, but more on that another day. During the conversation a view was expressed that “we all have more knowledge than you know”. The funny thing is that over the last two weeks I have come to realise just how true that statement is, whilst getting our latest member of the team up and running!
We have spent 18 months trying to recruit developers " since our move from Devon to Wiltsthire " and grew frustrated, until we considered an apprenticeship. We recruited a developer in 2006, who had no previous experience, but went on to be a real asset to the business. Our only regret is that we had to let him during the fall out from the banking crisis (2008) in the first quarter of 2009. So, when we considered an apprentice this time round we based it on our past experience. Laurence joined the team a couple of weeks ago, having completed his BTEC Level 3 in Information Technology. He has also undertaken work experience with us, shadowing our Managing Director on a couple of workshops as well as creating a website for a local pub as a small project during a weeks works experience in the workplace.
Sorry, I digress …
The point is that whilst getting Laurence off the ground, we have gone through the initial stages of getting a project off the ground. This involved taking the specification and converting it into an application. In this case, it is a sales order processing and stock control system, with a twist. The business gets their manufacturing in the far east, so international shipping , lead times etc all come into play.
The first step of the process is to create a database schema. We use whiteboards in the office to do this, as it allows you to map out the system and come up with the best solution as efficiently as possible.
Before you can start a database schema, you have to have a firm understanding about what the projects objectives are in terms of: "
- The data collection / retrieval.
- The data held within the system and the relationships between the various entities.
- A module of the objects with the system; this can be broken down into classes, etc.,
- The Graphical User Interface (GUI).
- The User eXperience (UX).
- Any integrations with 3rd party system, using Application Programming Interfaces (API).
So, the first task was to guide Laurence through the process of interpreting the specification, so that he could extract the information enabling him to create the database schema itself. During this discussion I found myself explaining some of the following:
- Business growth (stages model).
- Business accounts, including the differences between cash and standard accounting.
- Accounting software " in this case SageLine 50 " that we are integrating with the online database application.
- Purchase / Sales orders
- Purchase / Sales proforma invoices
- Purchase / Sales invoices
- Payments, receipts and credits
- Purchase / Sales ledgers
- International shipping (including customs, etc.)
I am sure there was loads more, but you get the idea; developing software requires far more skills than simply writing source code!
Having completed the database schema, I then asked him to create a project plan; essential a gantt chart that plans the various stages of the project, including the preparation work, development, debugging, stress & penetration testing, User Acceptance Testing (UAT), data migration, integration with 3rd party systems, launch plan, implementation, initial technical support period and much, much more.
This forces the developer to break down the project into bite size chunks and is very much part of our brand " making complex task simple " by simplifying everything down into manageable elements.
I often use an analogy for how we " as programmers " look at the world. The analogy I use is a door, explaining how we look at it as an object, determine the properties, methods and events and then how the object can be extended using Object Orientated Programming (OOP) techniques. I’ll write separate article about that in the next few days, as it warrants one on the subject alone.
Having completed the preparation work, we set Laurence the task of setting up a new project using our code base (framework) as the starting point. Don’t worry, we didn’t just throw him in the deep end, he was under the tutelage of our Managing Director.
Our code base " known as Golem " enables us to develop applications rapidly as it contains all the generic functionality that can then be customised around the specific business requirements and objectives set out within the specification.
It includes all the stuff you would expect and a load more to boot:
- Database functionality (connecting to a database, querying, inserting, editing, deleting, etc).
- Security tier.
- Error trapping, management and reporting tier.
- User authentication with new session expiry warnings. and auto log off functionality to protect your business data.
- User Interface, including responsive Website Design (RWD) to ensure users can access the application using a variety of devices including smartphones, tablets and laptops.
- Exports, using HTML printer friend, Comma Separated Values (*.csv), eXtended Markup Language (XML) and Portable Document Format (PDF) files.
- Integration of common APIs (client and server side), including SagePay and PayPal Payment Gateways, Sage and Quickbooks, JQuery, etc.
It’s a lot for anyone to take on and Laurence will take a while to get up to speed with Golem, but once he does, he’ll be un-leased as a fully fledged Ayrmer Software software developer!
A key advantage to Golem is that it reduces the source code a developer has to write; typically software studios will have 20% of their source code contained within libraries (or frameworks), leaving the remaining 80% to be written. What Golem does is turn this on its head, vastly reducing the programming required to complete an application. Clients often ask if the cost is reduced, because of Golem; the answer is simple no, but the advantage for clients is an application that uses somewhere between 60% " 70% tried and tested source code and enables the developer to focus on the User eXperience (UX), rather than the source code! It also ensure the source code itself beautiful …
Sorry, I digressed again, I just get carried away sometimes …
So, we set-up the project and Laurence is currently working through the user defined lists that will be used throughout the application, having customised the user interfaces and system set-ups and here are the results:
As you can see, the application starts to quickly take shape using Golem, although we have only just started the development work!
I never intended this article to be so lengthy, but it just goes to show just how much knowledge we all take for granted. I have barely touched the surface, but you can see been a software developer involves so much more than been able to write code; you need an understanding of how business work, the ability to analyse, problem solve and be creative! My role within the business is to nurture the team and give them the freedom to explore, create and develop awesome solutions for our clients. This in turn allows our clients to flourish, knowing that they have a competitive edge with their systems, enabling them to make informed decisions and enforce business procedures with a truly scalable platform from which to prosper.
I had a dream 13 years ago and that dream has now become a reality!