Hey, Let’s Code it From Scratch.
Words that kick started a revolutionary and completely custom designed in-house system. TradeIT Core™
It’s no secret that it is astoundingly difficult to design a system that is fool proof. Creating steps that can be accurately and easily followed regardless of outside variables has proven to be one of the greatest challenges we have ever had to face. Looking back on the steps we had to take to get here I am amazed that any of us have any hair left… (Some of us don’t)
When you want to build something you generally need a blue print… So that is exactly what we started with. We built a product flow for every possible I.T Asset intake.. Most of them looked like a spider web. Some of them more a straight line even.
Honestly, It looks very simple in nature and it actually is. But the consideration required for every possible factor of processing a specific asset calculated over hundreds of different categories and sales channels is mind numbing to say the least.
We ensured that with each product flow we knew exactly where a specific item would end up and how it would be handled through each step of our process. This allows our technicians to process I.T assets with speed and unparalleled accuracy in terms of quality assessment and our bottom line sales output.
We had a pretty good understanding of where we wanted a product to go and what we wanted to do with it during each step of our process but now we needed to keep track of this item, record specifically what was done to the asset, if parts were added, if there was anything that needed to be communicated to potential buyers about the asset and more importantly who the asset originally belonged to (so we can provide accurate profit sharing!) Not only that but we needed to ensure that there was no possible way for items to be mixed up EVER.
So I did the obvious, I put together a mini-requirements list with the help of Boris (he’s the process guru) We came up with a list that looked like this:
This list would grow, change and be heavily modified as we worked through everything we now at least had something to base our work on and general principles to follow for the final outcome of the new web application. At this point we had no name for the new system but I really liked the sound of “Core” because this new system would be the core of our business and finally allow us to streamline and automate most things that were originally eating up a lot of our man hours.
I’m not sure if you know this (you probably dont) but we have two whiteboards in our main office. We use them for various notes, projects, information, etc. We often use it to display our mood as well. In this picture (left) I guess we were feeling like working hard. Whenever we start a new project of any kind, I like to write the proposed steps of the project and check them off as they are completed. With Core™ being such a large project for us I had to actually check off each module at a time otherwise we’d be making a few trips out to buy larger white boards.
I started by writing the login system code, This was difficult because it had to be as secure as possible. On top of our SSL supported domain (https) I had to ensure that all user passwords were heavily encrypted especially since we were dealing with some pretty large corporate clients – It was important that no one was going to give away their favorite password and thus put other foreign systems at risk. I chose to go with a modest 256-bit encryption methodology to guarantee password security. Luckily my girlfriend was out of town that weekend because I probably logged at least 30 coding hours on the login system alone over a 2-day span, Otherwise I would have greatly missed out on our typical weekend shenanigans.
After finishing the login/user module I had an array of questions to answer before I could continue. How would we handle user permissions? What content did we want visible? What was the most efficient and transparent way to display our client’s assets to them? There was still a long road ahead.
A Database needed to be generated from scratch. So I did what any good programmer would do, I popped online and started looking around at database structures. I targeted mostly databases that contained information similar to the type that we would be storing (product information, uniquely propagated ID numbers, etc) I actually learned a lot about efficient data storage within SQL and it definitely made think twice about the work people have put in to something even as simple as or triple A websites like Facebook or MySpace even. With efficiency in mind I designed our products database to house only 70 unique columns, two of those being the Product’s Name and its Unique ID Number. We did our best to trim the fat on information we felt didn’t actually need to be stored in regards to assets. Inside our database there are only 18 tables with a total of 360 columns for data storage. Even as I write this we have already stored information for over 560+ products with an average increase of 30+ new assets being created every day!
User Interfaces are hard…..
I have always really enjoyed designing custom user interfaces (UI). It’s kind of like being the master of your own little world – you get to create something and control exactly how a user gets to interact with it. I’ve always been one for adding little Easter eggs in everything I code. Half the fun is wondering if anyone has noticed. Take my announcement generator for example. It basically spits out a random non sense greeting. Not your typical “Hello, <insert name here>” situation. Also you might not have noticed but our logo does a 360 vertical spin if you hover over it! Cool right? There is one other hidden Easter egg but I don’t want to spoil all of the fun so I’m not going to tell you where it is. (Hint: No one ever reads the footer!)
When I’m building a UI I want to make sure that it is intuitively designed, straight forward and most of all easy to use and understand. I don’t want someone to have to spend an hour learning where each button is to perform the action they want, I want it to be right in front of them and as self explanatory as possible. I guess that’s why I went with a basic bootstrap 3 design when I built the Core™ web interface. I truly wanted our clients and staff to look at this and say “Wow, this is easy” which in fact is a principle I feel our entire business model is based on. Ease of use, Complete Transparency and a little bit of fun thrown into the mix.
Built to last……
When we were building Core™ I wanted to be sure that it was something that would last for a really long time, something that could be modified to suit our needs should they ever change. That is why I built the entire web application using interchangeable PHP functions and site wide variables. This means that if we need to add or modify something its really easy to do and would add maybe a few hours of development onto our plate rather than a few days or weeks.
I was hoping that I would be able to shine a little light on the amount of time and effort we have put into building Core™ I’m really excited for what the future holds and I hope that our clients and staff enjoy using this application as much as I did building it.