When asked what PYGIO does, and why we’re different, we always highlight two key points: 1) we provide access to world-class talent, and 2) we operate at the confluence of software engineering and data science. I’ve been thinking about the latter point and wanted to write some of my thoughts on what this means, and how it applies to our work at PYGIO.
First, a primer on Software 1.0
Software 1.0 speaks to the paradigm of traditional software engineering: programmers write explicit instructions in their language of choice, instructing computers to execute set tasks with some desirable behaviour.
This paradigm has been at the forefront of modern computer science, and has given us all of the great software products and services we use today: Operating Systems, Apps, Online Games and even powers your coffee machine. I don’t need to explain the impact this has had on the world – software 1.0 has truly eaten it up.
There is, however, a new paradigm of software development that has grown over the past 10 years – Software 2.0 – which speaks to a new way of programming machines to solve problems. I’ve written before about why it has exploded recently, but I wanted to give a different perspective into why it’s important to our thesis at PYGIO.
Software 2.0 (originally framed by Andrej Karpathy) works by specifying the kinds of behaviours and goals we want to achieve, through real-world examples found in data. We then get a model (mathematical functions applied over and over and over again) to learn the rules required to achieve the desired behaviour/goals. No human programmers are involved in writing these rules explicitly, rather they are learnt in an abstract, generalizable way which works surprisingly well in reality.
Why is this important?
Getting back to my original point: Software 1.0 systems have delivered immense value, and will continue to do so, however the problems they can solve are limited. Software 2.0, by contrast, gives us a toolkit to tackle a new set of problems, from drug discovery, self-driving cars, to even (yes) getting you your next girlfriend.
To make this point more concrete, imagine hand-crafting a set of rules for identifying whether a joke is funny or not. Creating these rules would involve capturing cultural references, wordplay, and timing, which are incredibly subjective and varied.
Or imagine writing rules that try classifying whether a cat or a dog is present in an image. Would you start with the fur texture? Shape? Colour? While hand-crafting rules for every possible scenario is impossible, it is possible to teach machines to learn them.
At PYGIO, we specialise in leveraging these technologies to solve new problems in our clients’ businesses. In the enterprise case, machine learning will form the basis from which companies begin understanding and engaging with their customers. Companies will be able to capture and model every detail of who you are, your preferences and intents to further personalise your experiences. We can all intuitively tell how Big Tech has gotten this right – through our hyper-personalised social feeds – but it is only a matter of time before the rest of the enterprise world catches up.Â
For example, your bank will be able to analyse your transactional data and predict, through purchases related to wedding planning (payments to wedding venues, jewellers, or travel agencies for honeymoon bookings) that you’ve recently gotten married. With this insight, they can offer you a home loan, tailored to your life stage and financial needs. In the Software 1.0 paradigm, this would have necessitated manually crafting intricate rules and continuously updating them to account for various scenarios and exceptions. Not to mention most likely requiring a human in the loop (👀 financial advisors👀 ) to keep track of your statements. What a POPI nightmare.
This is a simple example, but illustrates the point. Looking forward, these models will become more powerful, with the ability to be multi-modal, taking in different sources and formats of data with the understanding of how they interact.
Where to from here
This all sounds very promising, but many of these technologies are still maturing, with their implementation best practices still being developed. Software 1.0 has a very well-defined set of standards around development, testing, deployment, and continuous integration/continuous delivery (CI/CD). This ensures that software is reliable, maintainable, and scalable. Software 2.0 is still getting there; we need to establish similarly robust frameworks and best practices for developing these systems. Most importantly, we need to focus on integrating these processes into existing Software 1.0 development cycles to ensure consistent and reliable performance across real-world, business-as-usual applications.
That last sentence brings me back to the key theme of this blog: At PYGIO, we specialise in merging these two worlds together – operating at their confluence.
I’ve spoken mostly (of course biasedly) about Software 2.0, but to put things into perspective, if you had to look at any enterprise codebase with some kind of machine learning service in them, the ML code typically makes up less than 5% of the total repo!
It’s therefore imperative to have established software engineering fundamentals in place when working with and integrating these new technologies. Not to mention the processes required when working with large teams on multi-month development cycles – that’s a post for another day.
Wrapping up
We’re super excited about the future of software, both the tried-and-true as well as the new and exciting. At PYGIO, we’ve made it our mission to merge the reliability of Software 1.0 with the innovation of Software 2.0, because when they work together seamlessly, they create experiences nothing short of magic. Looking forward to having you all join us on this journey!
Illustrations credit: https://storyset.com