If you just need the essential facts, here they are.
Rationale and background below!
CTO for Cognician, a digital coaching SaaS platform, going into its 9th year.
5 years' production experience with Clojure, ClojureScript and Datomic.
20 years' overall software development experience.
Hire me to consult with your team via Zoom.
I can happily cover any of these technical topics: The Clojure Way.
I can advise you on everything from overall system architecture
down to structured Lisp editing, and everything in between.
I take great interest in the social side of software, and would love to share my learnings there too - on leading a team, working with stakeholders, etc.
USD 250/hour. Prepay 5 hours for USD 1000 (20% discount).
60 to 90 minute sessions.
Evenings and weekends in UTC+2 (I live in South Africa). Compare timezones.
I have 20 years’ software development experience. 5 of those with Clojure.
I consider the first 12 of those years - as employee in a “new media” agency, or freelance coder for hire - to be practice for the subsequent 8 years I’ve spent at Cognician as CTO.
At Cognician, we have forged a fascinating path through the steps it takes to build a technology business, and I’ve been responsible for just about all of the technical decision-making - if not directly in the code I write, as leader to others who do so. And there’s no sign of slowing down!
Over the last 5 years, we have built the ‘Version 2’ of our business (the version that comes after proving the concept) with the Clojure stack. We embrace it throughout: Clojure on the server, ClojureScript in the browser, and Datomic as our primary database.
Some of the code that we wrote at the beginning of this is still providing essential value today. Many pieces have been rewritten several times, and many pieces have since been discarded entirely.
I feel it’s safe to say at this point that I have some experience “fixing engine while driving the car” with this stack. I'm probably more of a Mender than a Maker, but by a very narrow margin!
Also, we've dealt with many of the issues facing modern digital businesses today - things like security, privacy, data protection laws - and we've successfully worked through many compliance and security testing processes with various partners.
Some facts about this past half-decade:
I've learned so much about using the Clojure stack 'in anger' solving real business challenges.
I have long since lost count of the number of ways in which the use of Clojure contributed to Cognician's success - from keeping the overall system complexity down, to being able to adapt to changing circumstances rapidly.
I am utterly convinced - and I am living the proof of this - that Clojure reduces business risk. In so many ways. From fast greenfield development to sane legacy code, from quickly skilling up new hires to adapting to the environment around us, Clojure has played a key part in allowing us to do what we needed as we needed.
So, one of my big 'whys' is: I'd like to share these hard-won lessons with you!
One of the most rewarding experiences I can have is in creating an 'aha' moment for someone. It's one of the primary reasons I lead a team, and also why I love working in the learning business.
Another of my big 'whys' is: I'm in it for your 'aha' moment!
Another key part of the learning process is rather meta: what you learn as the teacher, while teaching the student.
Once I discovered Carol Dweck's Mindsets model, I was able to give a name to the way that I found I prefered to act - the "growth mindset" - which essentially favours curiosity before identity.
As a consequence, I try learn from just about everything I do - consciously, on purpose. By working with you on your problem, I get to do this in some of my most favorite ways at the same time: with real business challenges, with Clojure, and with interesting, smart people who have different perspectives to share.
The third of my big 'whys' is: I'm in it for my 'aha' moment!
Whether it's a technical challenge, that perhaps requires fine-grained knowledge of multiple Clojure-y components, or a social challenge, that perhaps has to do with working to convince key people in your team to try it out, or to demonstrate how risks can be overcome, then I can help you.
How I help you is up to YOU to decide. Here's a sampling of the sort of thing I can do with your team.
This is one of the core skills I have as CTO, and I use it continuously. I love conceptual frameworks and mental models, and in this instance, the Spine Model is an absolute gem. Once I understand what you're working to accomplish, and what principles and practices surround that, I can work with you to evaluate the tradeoffs of the options available to you in the Clojure ecosystem.
It is true that the best code is no code at all, because while a suitable system is an asset, the code in that system is a liability. The more of it you have, the greater your cognitive load, and the greater your surface area is for complexity and defects. And therefore, the greater your cost of development and maintenance. If you can produce a suitable system with 1000 lines of code, the cost of ownership is going to be substantially less than a system that uses 10,000 lines - no matter what technology you use.
One of my favourite things to do as an engineer, is to delete code that no longer provides enough value. Over time, this has helped me to develop a finely-tuned intuition for deciding when to prevent code being written at all - and as a consequence, to know that when we will write code, to be sure that the value to doing so is really there.
"One of my most productive days was throwing away 1000 lines of code." - Ken Thompson— Programming Wisdom (@CodeWisdom) September 25, 2017
So, my approach is to become crystal clear on the need, and to work to find the technical solution to meet that need that considers not just the initial development cost, but the operational cost over time.
I work to organise, disambiguate, clarify, and tease things apart. If we're lucky, this tends to allow a solution to emerge on its own, but if it doesn't, it sets the necessary constraints for finding a viable solution - and for assessing its value in the future.
On the more practical side of things, I can teach your team the principles that underpin the Clojure ecosystem. We could take a real example from your project, and I could show, step by step, how I would tackle solving it.
In summary, I have a lot of experience in using the Clojure stack to solve real problems, with full awareness of the cost of those solutions, and the relationship of that cost to the value it'll bring. I can bring that experience into your project, and - by example, based on your project - teach you to do the same.
One of my favourite sayings is: the worst thing that can happen is that you learn something.
Some folks in the community think I have value to offer, and kindly said so publically - so here are some testimonials.
We'll use Zoom, and I can record our sessions and share them with you. I am also happy to write summaries of our conversations, so that their value can be more easily shared in your team.
I have 6 hours a week available, which can happen in 60-90 minute blocks in the weekday evenings (one session a day) or any time on the weekend (where we can do up to two sessions in a day). I’m in UTC+2, so this aligns nicely with the USA West Coast morning, and USA East Coast afternoon. See a timezone comparison on WorldTimeBuddy here.
I bill at USD 250/hour. I also offer a 5 hour package for USD 1000 (20% discount).
If it turns out that I'm not a good fit for you, I'd be happy to try to connect you with others in the community that may work out better for you.
To write your code for you. I admit, a lot can be done with Clojure in 6 hours a week, but I prefer to remain consultative.
To do your Clojure homework for you :-)
Also, so it’s clear: I am not looking for a new gig. I am very happy at Cognician!