Curriculum vitae
Andries J.
Greyling
Senior Developer — backend by nature,
full-stack with AI
congosky.cloud/cv 27 years · Remote-first
Twenty-seven years of production software — retail banking, product SaaS, GIS platforms, APIs and the batch jobs nobody sees until they stop. I am a backend developer by nature: data models, transaction boundaries, integration contracts, and the unglamorous correctness of money arriving in the right account. AI has closed the gap on the front end, so I ship full-stack now — backend instinct, full-stack reach. I am looking for a remote-first senior developer role, and I am open to hybrid in Somerset West, Stellenbosch, or Cape Town.
How I build
Boring is predictable. Predictable is smooth. Smooth is fast.
I choose a safe, boring stack on purpose. Java, PostgreSQL, Python, TypeScript, .NET — technologies with long support horizons, deep hiring pools, and answers that are already written down somewhere. Boring technology has had its bugs found by somebody else already, on their weekend rather than mine. The speed does not come from the tool being clever. It comes from not fighting your own tools, not rewriting last year's decision, and being able to hand the codebase to the next person without a seminar.
AI does the coding, never the stack choices
I use AI every day and I am genuinely good at it — Claude Code is part of my working hands now, not a novelty I tried once. But there is a hard line, and I hold it: AI writes code; AI does not choose architecture. Data modelling, dependency selection, service boundaries, and the decision about what not to build stay human and stay mine. A language model will cheerfully talk you into a fashionable framework that neither of you can maintain in eighteen months, because it is optimising for a plausible answer and I am optimising for the person who carries the pager. Engineering judgement is not a thing I delegate. Typing is.
No bleeding-edge JavaScript
I do not chase the newest JavaScript framework. I have been doing this long enough to watch several of them arrive as the future and leave as a migration project, and I would rather spend that budget on the domain. Give me a stable rendering story and I will put the interesting work where it belongs — in the model, the queries, and the contracts.
Mobile: PWA first, then properly native
My default for mobile is a Progressive Web App. One codebase, updates that ship the moment I push them, no store gatekeeper between a fix and the person who needs it, and it runs on the low-end Android handsets most of this continent is actually holding.
When an app genuinely needs the device — background work, sensors, offline-first storage, platform integration — I go fully native, and separately native: an Android codebase and an iOS codebase, each written in its own native language, deliberately sharing no code. What unifies them is not a cross-platform framework and its permanent abstraction tax. It is the specification: one Domain-Driven Design model of the domain, and one set of BDD scenarios that both codebases implement and both test suites have to satisfy. The spec is the shared artefact; the implementations stay idiomatic on their own platform. Two codebases that agree on behaviour beat one codebase that is second-class on both.
Profile
Senior Developer exiting Mezzanine. Banked experience across high-volume banking systems, product SaaS, GIS-enabled platforms, APIs, automation, and practical AI adoption — plus repeated delivery leadership when the role needed it (Capitec, Worth, Mezzanine product development management). Comfortable in governance-heavy, brownfield, client-facing settings and distributed teams, including four and a half years delivering from the United Kingdom.
I have spent most of my career in regulated environments where being interesting is a liability and being correct is the entire job. Credit decisioning, core banking transactions, batch windows with a hard end time. That shaped how I work: read the existing system before changing it, make the data model carry the invariants, and leave the codebase more obvious than I found it.
Stack: Java, PostgreSQL, Python, TypeScript, and .NET — tools in the belt, not a single-language identity. Two decades on Microsoft and Windows, then a zero-Windows shop pushed me fully Linux-native. I am at home on both, which is rarer than it should be.
Side builds (CongoSky, lucid.rodeo, Arjuna Badger Press) stay on the side — proof of end-to-end ownership, not the job I am applying for.
What I am looking for
- Role: Senior Developer — backend-leaning, full-stack where it helps.
- 1st: Full-time remote.
- 2nd: Hybrid — Somerset West, Stellenbosch, or Cape Town.
- 3rd: Full-time office — Somerset West or Stellenbosch.
- Happiest when: the domain is genuinely hard, the stack is deliberately dull, and somebody cares whether it is still running in five years.
Experience
Senior Software Developer exiting
Architect and develop GIS- and AI-enabled production SaaS: APIs, automation, internal developer tooling, and practical evaluation of both local and hosted LLM workflows — including the unglamorous question of what a model costs you per month when it is wired into a real product.
Built the Helium Rapid DSL tooling as a VS Code / Cursor extension, giving a production domain-specific language the editor support its users had been working without.
A zero-Windows shop. After a career on the Microsoft stack this meant relearning my own habits in Linux-native tooling, and I would not trade it back.
Sabbatical — homesteading
A short, deliberate break between contracts. I grew up on a farm and wanted to test the other life properly rather than romanticise it: microgreens, culinary and medicinal mushroom cultivation, and chickens from coop-build to first eggs — with our homeschooled children learning entrepreneurship and farm-to-fork alongside it.
The honest conclusion is the reason I am a developer and not a farmer: at that scale it was a hobby that cost money rather than a business that made it. I went back to work to fund the next phase instead of pretending the numbers worked.
Technical Lead
Reported to the Head of Software Engineering, leading the development team and owning the technical vision for the project. Kept client stakeholders aligned to that vision, managed third-party relationships, and carried delivery risk across client, team, and vendor.
Supported, guided, and mentored the developers so delivery landed on time and to specification — most of which is regular, unglamorous communication rather than heroics.
Solutions Architect
Owned the cross-cutting and non-functional concerns on SaaS products under enterprise client expectations: security, scalability, maintainability, and architectural direction. Identified technical risk and — the part that actually matters — reported it early enough to be actionable.
Product Development Manager
Managed three Product Owners and eleven developers across the Mezzanine SaaS product portfolio.
Team Lead / Technical Lead
Technical leadership for three teams of architects, analyst developers, and programmers working in C#, Java, and T-SQL. Solutions architecture for high-volume, high-performance online and batch processing in retail banking. Interviewed and hired extensively, for my own teams and others. Spent the final year on DevOps and automation evangelism.
The achievement I actually measure by: I coached and mentored two team leaders whom I had originally hired as developers. If lasting impact is the yardstick, that is the best thing I have done in this industry — the code I wrote in 2011 is gone, and they are still leading.
My last contribution there was a JSON command-line test-data provisioning and automation framework, including ground-up middleware that could execute core banking transactions from the command line to simulate client-triggered activity. Ansible, Puppet, or Chef would have covered most of it — but a Linux server was not on the table, so I built it in C# and it shipped. Choosing the tool that is allowed to exist in your environment is part of the engineering, not a compromise of it.
Systems Architect
Designed, developed, and implemented an automated credit rules engine in C#, T-SQL, SQL Server, and Java — design through to production in a regulated lending context, where a wrong answer is a compliance event and not a bug report.
Senior Software Developer
C# and T-SQL / PL-SQL across WinForms and ASP.NET applications in a global financial-services organisation — formal process, approval gates, and the constraints of a large international corporate.
Technical Analyst
VB6, VBA, T-SQL, and C# in a UK corporate environment. A South African emigrating into a London financial-services delivery culture — my first lesson in working across geographies under someone else's process.
Analyst Developer
VB.NET, T-SQL, and VBA — Microsoft-stack delivery in retail banking, back when Capitec was still small enough that you met the consequences of your own code.
Analyst Programmer
Delphi 5, VB.NET, and T-SQL. Where it started: the bank was Boland PKS when I joined and BoE by the time I left, which turned out to be a useful early lesson in systems outliving the names on the building. Certificate of Service names the role at termination.
Selected evidence
Credit rules engine
C# / SQL Server / Java — design through implementation in a regulated banking context.
Core-banking test automation
C# CLI plus purpose-built middleware simulating client-triggered transactions for safe, repeatable provisioning — built in-stack because Linux was not permitted.
Two team leads
Hired as developers, coached into leadership. Still leading.
Helium Rapid DSL tooling
VS Code / Cursor extension for a production domain-specific language.
/sleep
MIT-licensed agent-memory skill: consolidate a working session into durable facts instead of choosing between context bloat and a hard reset.
CongoSky · Arjuna Badger Press
End-to-end product ownership, from sovereign-cloud routing to a live publishing platform — secondary to employment history, useful as proof of range.
Skills
Long tail, honestly declared: C#, VB.NET, VB6, VBA, Delphi, PL/SQL. Twenty-seven years leaves sediment. I list it because brownfield work is real work, and somebody has to be able to read the 2004 code.
Education
Capitec Leadership Programme for Managers
International Diploma in Computer Studies
Distinction · overall 79.3.
International Diploma in Computer Programming
Credit.
Day Skipper, Category C
Senior Certificate
Languages & availability
- English — native or bilingual
- Afrikaans — native or bilingual
- Fully remote preferred · flexible hours · Western Cape based
- Experienced across UK + South Africa time zones, from both ends
Notice period and start date: happy to discuss directly.
Off the clock
Linux, locally hosted LLMs, virtualisation, and more Raspberry Pis than I will admit to in writing. Overland travel in Africa, which is where the taste for systems that work without a support contract comes from — if it cannot be fixed at the roadside, it is not really working.
I write, too. My debut novel — The African Gold Trilogy · Book I: RESONANCE — is out in
print with the audiobook in production, and Arjuna Badger Press is the creator-owned
publishing platform I built to put it there. It began as an experiment in what an AI co-worker
could sustain over months rather than minutes, and it turned into the thing that taught me most
about agent memory. That lesson became /sleep.
Still keeping chickens. The hydroponics phase is pending a budget review by management.
Public links
CongoSky lucid.rodeo /sleep on GitHub Arjuna Badger Press CV as PDF

