Detailed Experience
Oct 2015 – Apr 2024
(Lead Software Engineer and Project Manager) @ Celtis Australis and Bi-Rite Australia
Background
Bi-Rite required a new custom ERP and Point of Sale to replace their existing old one in order to enable growth in their business.
A startup company was set up in Amman, Jordan (where I reside) to try to fulfil the need.
Before I started this role, the only development language and environment I was proficient in was Jade.
I had never delved into web-development.
I knew little to nothing about project management and had to learn everything from the ground up.
I invested in myself, paid for my own courses, books and resources in order to get proficient at the job, and soon surpassed the rest of the team in knowledge and ability.
I invested in my own hardware and tools to enable me to do the job and didn't ask the startup company to pay for it knowing that what I invest, I will see the fruits of.
After a year in the project and some poor project decisions from the then project manager, I was asked to take over the position and effectively needed to rework a lot of the old decisions.
Before I took over the project:
- The decision was to use a MySQL database but turn off foreign key integrity. I reversed this decision and brought back the safety net of DB integrity to the project.
- The project was documented via a single Excel spreadsheet with extremely slim descriptions of the requirements. I overhauled the project management structure and set up Jira and Confluence and went to creating all the requirements for the entire project.
- There were 2 previous attempts to create this custom software that failed for various reasons. I successfully brought the project to a Production ready state.
Project Management
- I set up Jira and Confluence as a self-hosted solution and kept up regular maintenance and upgrades. I also set up the internal project structure, permissions and automatons.
- I managed the entire project effectively from the very start, much of the work done previously was un-usable and had to be re-done or re-documented.
- I managed all the version releases to Production. I set up Major, Minor and Hotfix conventions and processes.
- I used a modified and simplified agile process including some elements of scrum such as sprint management.
- I documented requirements and specifications and explained them to developers, ensuring the solution was developed as desired.
- I lead the project to successfully roll out to 80 stores and migrate them away from their existing systems.
- The product was so successful it attracted other customers, and a new customer (ACL group in New Zealand) recently signed the contract to use the product.
- I was the main interviewer for potential new team members, I had to learn how to conduct interviews and ask the questions we needed as a startup.
- I set up and documented on-boarding documents, welcome letters and followed up with the on-boarding of new team members.
- I was often awake in the latest of hours at night monitoring for service issues or releasing and fixing bugs.
- I made dozens of high quality recordings showcasing the product and explaining how to use the system for customers.
- I made dozens of explanation videos for internal reference for the customers and the team to learn the internal workings of KNAPS.
Technical Team Lead
- I enforced the use of Git for version control where there was previously no version control.
- I created standardised development environments using Vagrant so that team members using Windows or Linux were able to have the same base environment for their development.
- I documented team workflows, updating the documentation whenever processes changed.
- I introduced automated testing to our processes, and encouraged the team to shift their development processes to include automated tests.
- I encouraged best practices and principles such as SOLID. We learned together as a team how best to reduce dependencies and refactor code to be more maintainable.
- I implemented the code review process to increase shared knowledge and quality of code.
DevOps Engineer
- I set up the AWS infrastructure and monitored it and maintained it.
- I had to learn how to also maintain Ubuntu servers and be a Linux server administrator.
- I set up Apache2 to work with Django and debugged all server issues and wrote set up scripts that would allow for documenting all project dependencies.
- Eventually I learned about HCL's Terraform and Packer (infrastructure as code) and created fully functional, complex architecture, using this method to deploy the entire infrastructure.
System Architect and Design
- Played the primary role in designing the entire ERP system
- Database design
- Business functionality
- Complex pricing system
- Integrated modules
- Data integrity
- Effectively interpreted very slim requirements communicated by the customer into fully functional processes and modules
- Added a task scheduling process to enhance the user experience and reduce server load
- Implemented timezones in the system such that stores in different timezones will be able to use the systems effectively in their locations.
- Successfully designed a working (albeit cut down) financial and accounting system that handled tax conversions and
decimal rounding.
- An interview with one of the main stores brought the response "KNAPS (the name of the product) just works"
- Successfully designed and implemented an automated claiming system that triggered based on various complex scenarios.
- Feedback from one of the stores was "I love it when I check my email in the morning and see that I've got free money" alluding to the fact that they didn't need to raise the claims manually.
- The Bi-Rite business structure is unique and required much consideration in order to fulfil their need to centrally manage Suppliers and their models, invoices, credit notes and claims.
- The pricing structure was extremely complex, comprising of various tiers and date-based deals that effected Net Costs and the like. The ability to also schedule sale prices was included.
Business Analyst and Customer Service Support
- Involved in enhancing the product for new customers by understanding their requirements and working with them to get the best solution
- The project scope and feature base evolved greatly over time and I was able to respond to much of the needs and growth.
- Was closely involved in training new customer's stores. Initially I was the main trainer and once we hired a trainer, I taught them all about the system, and still attended all training sessions to ensure any difficult questions were answered.
- I set up a customer service portal that allow stores to email or raise tickets that would then be maintained by the service team.
Aug 2014 – Aug 2015
(Software Developer) @ ALSCO
- The confidence I had built with ALSCO over the many years allowed the expansion into remote development for their distributed systems.
- Developed a sense of efficiency working by contracted hours and time sensitivity being in vastly different time zones from the client (ALSCO).
- Developed a highly integrated solution into their vast Abel based ERP system which was to include freight management, sterilisation reports, barcode/QR code label printing and other complex processes, which were all to flow naturally with the whole system rather than be a separate entity.
- The Freight module required the system to communicate with the Star Track courier web services to retrieve transport costs, create charges, create consignment notes along with details labels, files and reports to be communicated to the Star Track system.
- Understanding and using the ZPL printer code language to print images, barcodes and QR codes on Zebra label printers was a challenge, however Star Track representatives commented that the labels that were produced were better than 95% of their customers.
- Working remotely provided its challenges, however they were met with confidence and many hurdles were overcome to produce consistent solutions for frequent requirement changes and updates. I communicated with managers and ALSCO consultants over Skype, Lync, email and by VOIP. I would ensure I was online at a good time for communication to be effective. Where the time difference was at its longest (9hrs) I would be available from 3am Amman time (12pm Sydney time) in order to catch at least half of the day and work through any outstanding requirements and answer questions. I also made myself available earlier than that in times of need and pressure.
- Provided the client with weekly updates and monthly task reports to allow them to modify any tasks as they see fit in a timely fashion using tools such as toggle.com.
Apr 2005 – Aug 2014
(Software Developer) @ ALSCO
- Joined a Senior Developer in a project consisting in a series of conversions from old IBM AS400 systems in to a new windows server based system coded in the JADE development language.
- The new system (built buy ABEL software) is a powerful ERP (Enterprise Resource Planning) solution complete with accounting and customisable client processes. This system would be implemented in the various ALSCO branches around Australia and New Zealand.
- The Abel system consists of a complex group of classes and relations in an object oriented environment. Among the first of my tasks was to get familiar with the way the code was structured and the conventions used. The structure of the Object Oriented Database also had to be understood as the JADE environment integrates the database with the whole environment.
- Creating application servers for testers to test conversions on was among the many tasks I was involved in. I had also prepared blank servers for live implementations and the development servers where the developers did their testing and code releases.
- Developing the conversion process for the AS400 systems was a shared task among the developers. I was assigned the task of developing a conversion process for the Australian COBOL systems, and an SQL database in Singapore.
- Successful communication with the project managers, as well as the system implementers and testers was a key part of a successful conversion. I aided in analysing old customer databases for anomalies and hence customising conversion processes for the many various system conversions.
- Was responsible for patching test and live systems with code updates until an automated process was released.
- Code updates and upgrades were also the task of developers, bug fixing, debugging, and improving various parts of the system such as reporting (also creating new reports), supplier processing, item maintenance, pricing system, payment processes etc.
- Some of the major tasks that were achieved and accomplished include:
- A major task was an XML export of particular data in the Abel system database for use in a mailing house. It included exporting objects in the database into an XML file and validating through XSD schemas.
- Developing EDI (Electronic Data Interchange) solutions to external suppliers providing them with customer invoice details via various mediums including HTTPS, FTP, SFTP and SOAP web service protocols through Jade while automating the process through scheduled tasks or through user initiation.
- A major project required the use of web services to send a request to a hub system via external SOAP web service protocols from an external workflow tool called K2. The call to the hub system would specify which branch system to retrieve or send data to, and another internal Jade web service was initiated to connect to the distributed system. The project was successfully tested and completed utilising Jade’s ability to interconnect systems via TCP web services and distributing databases and sending data from one system to another.
- Implementing a custom solution for a single branch which included complicated business processes including barcode scanners, label printers, sterilisation certificates, and many other specific requirements.
- Enhancing the system and maintaining code standards across many systems through documented requirements and bug request tracking systems.
- Developing solutions to communicate to specific label printers and creating the ability to printing various languages including Thai and Chinese.
- The implementation teams regularly required reporting and manipulation scripts for the Abel system, and I became affectionately known as the Script Man. I ended up designing an interface for the implementation team to run the scripts they usually required.
- The work that I did with the senior developer was robust and neat. We worked as a good team and I had learned a lot from her as a senior. Our communication was efficient and productive, and our time was organised well. After she had moved on and I took the role of Senior, the Australian division of the company saw no need to hire another developer as I was able to manage the load efficiently and effectively.
- The US division of developers worked on many of the enhancements to the Abel system and weekly update meetings across time zones was managed well and communication channels were always open.
Apr 2004 – Mar 2005
(Parts Interpreter) @ Elite Auto Spares
- Began construction of digital catalogue for parts interpreters using JADE Object Oriented programming language (still in construction phase)
- Building simple internet web page for the company (www.eliteautospares.com.au)
- Designing flyers and business cards and basic propaganda for the store
- Learning the automotive spare parts trade
- Selling and ordering aftermarket spare parts
- Understanding customer requests and providing solutions
- Deliveries (Became efficient in picking parts and delivering them at desired time)
- Managing the store (2 weeks of Christmas was given role of manager)
- Became confident in selling and ordering automotive spare parts after a short time
- (understood majority of what was taught to me informally, and used it to the best of my ability)
The rest?
You might wonder where the rest is, it's probably not relevant but in summary I also worked for:
- A primary school as a volunteer (Computer maintenance guy)
- Tandy Electronics (Salesperson)
- Australian Electrical Electronics (Delivery Boy)
- Burger King (Burger Flipper)