Freelance Software Developer
Hi, I’m Keith Mifsud, a full-time freelance software developer with over ten years of professional experience (and a lot more years if we count building calculators and silly games on a Commodore 64 😊). Joking aside, I have been building software and websites since 2002 and in a professional capacity since 2006.
I generally work remotely and rarely ever conduct physical face to face meetings, however, as a team leader myself, I understand that each team member, whether they are the product owner, the client, the project manager or a fellow developer, must get on with each other in both work ethics and character. This page aims to help you to get to know my character and my work ethics so that you can decide if I’m a good fit for your project’s team.
My work as a remote freelance software developer
My preferred work situation is as a remote freelance senior software developer, meaning; I remotely assist teams on software projects. I do this hands-on and I guide by example. I enjoy programming business applications in PHP but most of the time, these applications are integrated with other internal and external ones written in different languages. Thus, I am comfortable coding in a variety of programming and scripting languages, including front-end frameworks such as VueJS.
My main strength lies in my knowledge and understanding of several business models within the manufacturing industry, the insurance and other financial sectors, electrical and mechanical engineering sectors, hospitality and retail industries. Throughout the years, I have built an extensive portfolio of clients and I’m proud to have had the opportunity to work on projects for Renault, Xerox, Hilton Hotels, most of the UK’s insurance advisory firms and many others.
Together with Sesame Bankhall Group, I’ve built the first ever enterprise insurance policy generator software in PHP. Back in 2013, this was a considerable milestone due to the legal implications of using an open source programming language in an enterprise application which must adhere to several legislative requirements.
When I work with a software development company, I bring high value to the team by guiding the team and the business itself to adapt new work-flows which facilitate collaboration, communication and a lot of automation through unit testing, agile methodologies, continuous integration, code reviews and most importantly; adapting to talking in business terms, i.e. a ubiquitous language with unambiguous terms.
What the heck do I mean by that?
With my understanding of a particular and specific business model, I extend this understanding to the team members in a way that we converse and even code using the same terminology. Thus, eliminating ambiguous terms and easily implement this understanding within the code itself.
When appropriate, I implement software design patterns to assist in delivering a real business solution as opposed to a piece of software which the business must adapt to. I am very experienced in Domain Driven Design, Command Query Responsibility Segregation and Event Sourcing.
Further to my coding and team management skills, I have an in depth understanding of distributed systems’ infrastructure, ensuring concurrency between distributions. This is especially useful when working on “sometimes offline” systems.
How I can help you
Whether you work at a software development company or you manage your business’ I.T. requirements, I can be useful to you when you’re building a new or extending an existing software. I can bring value to your project through my own programming, by assisting in your team’s management or more common, in both.
My preferred programming language for web software is PHP and I have extensive experience in using frameworks such as Symfony and Laravel. I am most useful when engaged to build or fine tune a small team of four to six programmers.
If you are a software company, I can help you with crafting and implementing project delivery strategies, including; work-flows, quality assurance policies and efficient internal operations. I can guide the team in creating efficient work flows using version control, test driven development, agile methodologies, continuous integration, automated code file generation, code reviews, distributed deployments, documentation and much more. However, I don’t enjoy being engaged in theoretical management and tutoring. I need to be hands on and coding too. This ensures you get the most value out of me and even more important, ensures that I illustrate solutions to real life problems and not fictitious scenarios. I can also be very useful if you require assistance with interviewing prospective programmers. Further to all of this and given the rise of web accessible enterprise and distributed applications, I can help explaining in theory and in practice, several patterns of enterprise application architecture (PoEAA), including Domain Driven Design, CQRS and Event Sourcing to the team.
Yet, I still cannot ride my bike with no handlebars 😊
On the other hand, if you run or manage a business in the manufacturing, financial, hospitality, retail, electrical or mechanical engineering sector, I can help you with consolidating multiple software packages, integrating with new ones and modernising legacy systems. Whether you need me by myself or you need me to bring in a team, I can be your go to person.
I can help during the initial design and consultancy phases up until the development, release and support stage. To date, I have worked in building new systems from the ground up, including bespoke ERP software and sub modules such as manufacturing testing procedure systems, logistics and distribution systems, customer relations management systems, revenue channels’ management systems, front office software and others. I have also worked on several legacy software modernisation projects and assisted companies in moving to more connected and web accessible software efficiently and without any considerable disruptions to the day to day operations.
I code and teach programming in my free time
Yes, I do. I love coding and take every opportunity to do so. In fact, even when I go out for a beer (which I enjoy), I almost always carry my laptop with me and either code some composer library, write a deployment script to automate my tasks or try on some new framework and tools.
During the last year, I’ve been travelling in South East Asia, living life as a digital nomad. Here, I’ve realised how badly most of these countries need exposure and access to the internet and I.T. in general. Most villagers have never even seen a computer unless they needed go to the main cities for special reasons. So I’ve taken it up on myself to inflict the programming virus to as many people as possible. This is quite hard to accomplish because of either lack of interest, genuine hopelessness and lack of resources. For example, I have a friend in Nepal who regularly sends me photos of his hand written “C” code so that I review it for his college course work. Seriously, handwritten code in “C” because of not having a laptop to run it on.
I am a firm believer that new technology will dramatically reduce manual labour requirements very soon. It is actually already happening all over western countries and gradually coming into South East Asian countries too. I find this extremely interesting and definitely look forward to have more automation in my life. However, this will lead to turbulent social and possibly political times. As I always say “Robots will take over most manual jobs and they will consistently perform better and faster than humans. However, the software developer will always be needed to build and maintain these robots”. This may not be such an issue in western countries due to education and social care. The same cannot be said for countries where education is scarce and governments do not (can’t or won’t) financially aid their citizens. I think we are already too late with the current generation as technology grows faster than the kids but we should at least try for the next one. That’s my aim anyway.
I really enjoy working from these countries and find it easier to find peaceful moments were I can solve complex issues. This is not to mention what a mind opening experience each country brings. Considering the fact that now, even the poorest of the poorest countries have 4G internet connections which is affordable to foreigners. Travelling has also benefited my work since now my schedule allows me to work with clients from allover the world due to the timezone overlapping European, British, American, Asian and Australian working hours. Therefore, fear not, I still have half a day, everyday when our business hours collide wherever you are in world.
The only time I’m not actually programming is when I’m in my apartment in Amsterdam cooking. I really enjoy cooking, but sadly this is hardly ever possible when travelling. So, albeit quite rarely, in order to rest my eyes and mind, I try to do new things, most of which I can never do at home such as, killing and shaving a goat, cutting and bending rice plants and other locally mundane tasks. This gives me the opportunity to open up my binary brain processor into something a little more quantum flavoured 😊