Accidental Admin to Deliberate Developer — Part 1
This is the first part of the tale of how I discovered Salesforce and turned it into a career. Not everyone will follow this path, but it’s the how I got here. My imposter syndrome thinks nobody cares about this stuff — Salesforce Amy will just tell me to Own It anyway…
Once upon a time in the Eighties
Computers are my passion. Many people I know in IT just kind of fell into it, but for me, it’s a calling. I got my first home computer in 1982 — the mighty(!) Sord M5. I’m not expecting you to have heard of it, not many people have, but straight out of the gates, I devoured the manual (technology came with manuals in those days and they actually contained useful information) and started writing my own BASIC programs.
Within a year, I’d made tentative forays into assembly language for the machine’s Z80 processor. It ran at a speed of 3.58 megahertz (by comparison, the laptop I’m typing this on is currently running at 3.2 gigahertz) and the possibilities seemed unlimited.
With a brief diversion via the Amstrad CPC464, during which time I discovered the demoscene (more on that in a future post…), I arrived at the machine that I would fall in love with for the rest of my life — the Atari ST. It has floppy disks instead of tape! It has a huge ½ megabyte of memory! It can display 16 colours (yes, with a “u”, I’m British) at the same time! It was the door to my most productive period as a hobbyist programmer and I still have three of them today in active use
Doing it for a living turns out to be quite different
I was master of the megahertz, king of the clock cycles, the Picasso of pixels and the Beethoven of blip-blop. I was at one with my machine and considered myself an adept programmer.
After a few non-IT jobs in my youth to pay my way, I applied for my first IT job, interviewing on my 23rd birthday. What I lacked in industry experience, I made up in self-conviction and hunger to follow my calling and secured a role as a Developer within the Department for Employment.
Then reality struck, as it has an awful habit of doing. Being a Microsoft Access 2.0 developer was unlike any kind of coding I’d ever done before. It didn’t have the dazzling effects and swirling colours of demos and games. Other people called the shots on features and most of them were dumb. Nevertheless, the work was easy, the pay was good for a 20-something and I still did “fun” coding in my spare time
Stepping up my game
After climbing the version upgrade ladderr for a while (Access 95, 97, 2000), I started expanding my horizons into the murky world of Visual Basic 6.0. I learned some lightweight Object-Orientated programming, such as was available in VB6, which would stand me in good stead for Apex development much later, but we’re getting ahead of ourselves.
It was at this time that I took my first foray into contracting/consulting. By virtue of sheer dumb luck rather than strategic intent, this transition happened in the second half of 1999 — just in time to tap the lucrative Y2K panic for all it was worth. I made more money that I’d ever done before (still in my 20s), toured the US, bought a house. I had enough free time left over to even make a commercial product for the Access community (Y2K Wizard, an automated tool for inspecting and fixing Access databases that had Y2K issues) and sell it through a partner. A forerunner of AppExchange perhaps?
The trouble with contracting
For the benefit of readers that are unfamiliar with contracting, it’s basically self-employment. It requires you to effectively run a business, with taxes, payroll, annual filing of accounts — all of which require a level of discipline and diligence that I lacked. The technical wizard side was all well and good, but the admin side was dragging me down. I’d had enough and wanted the safety net of going back to being an employee.
Object orientation 101
At this point, we’re going to skip ahead, dear reader, to keep things on focus. A few jobs down the line, I found myself part of a development team about to take on their first project in the brand new platform from Microsoft — the .Net Framework. With it came a new programming language, C#, and a much more structured, object-orientated approach to development. Similar to my VB6 days and yet somehow light-years away. Classes, inheritance and curly braces, oh my!
I was fortunate to have a very good teacher in our Lead Developer (now one of the co-founders of Red Badger, a highly successful software consultancy in London), who drummed OO best practise into me until it stuck.
Fast-forward the future (don’t worry, this is where Salesforce appears)
More time-hopping now — by this point, I’ve flipped back and forth between development and application support roles, including some team leadership positions. I’m back contracting (the money called to me…), but now have my first child to think about. I start a new contract role as a Application Support Specialist (i.e., multi system generalist) for a large international music company and on my very first day, comes the conversation that will change everything — the moment I became an accidental admin :-
New boss : So, here’s the thing. We could only get budget for a contractor if we told the CIO we were hiring a Salesforce expert, so if anyone asks, you’re a Salesforce expert.
Me : Erm, ok, sure. What’s Salesforce?
Not being much of an expert himself, he was at least able to login and show me what they had so far. A custom app someone had developed for managing purchase orders. To be fair, whoever did it hadn’t done to bad a job of it. It was all standard page layouts and custom objects, but it worked. My job was to learn how it was put together so I could support it.
Wow — this was very different. Someone had built a system that did a real world job and didn’t need to write code. Drag and drop development, this is easy, why did they need to hire someone to look at this.
A small custom app with declarative development is a gateway drug though. That’s how it starts, but before long you’re extending record types, page layouts, workflows. You install addons from AppExchange (our first was Conga Composer) to meet business needs. You’re hooked.
Enlightenment comes at Dreamforce 2011
Salesforce was an enabler for delivering success — it made me look awesome at being the can-do coder. My personal stock was riding high within the company and with this collection of kudos behind me, I approached our CIO (to whom I reported directly by this point) about the possibility of them sending me to my first Dreamforce.
To put this in context for our US based Salesforce Ohana, this is a big ask — time out of the office, the cost of the Dreamforce tickets, the cost of accomodation, the cost of flights to San Francisco and back. It all adds up to a whole lot more when you’re coming from the UK. Additionally, Dreamforce happens in the third quarter of the year, when most travel budgets have long since been used up and locked down.
I wrote a business case justifying the trip. I drew upon every drop of success we’d had with the platform and painted a vision of a bright future where, armed with the knowledge and experience I’d gain at Dreamforce, we could tackle any challenge imaginable.
It worked — I was off to Dreamforce 2011!
It all seems so long ago now, but the biggest takeaway from that trip was, ironically, not even related to the Salesforce platform. It was Heroku, which was introduced to me, along with Play! Framework 1.0, by a developer evangelist (James Ward).
Wait, what? You just went from zero to database-driven, cloud-based, java-written production application in 5 mins? Sign me up!
The Heroku era
Back from Dreamforce, I was determined to throw Heroku at the first challenge I met. Quite likely not the best way to deliver it (tip : pick the right tool for the job, not your favourite tool. Unconscious bias alert!), but I had to prove the gamble on sending me to San Francisco would pay off. It didn’t take me long to find a nail that needed hammering.
The company I worked at deployed a lot of company mobile phones to it’s staff. That added up to a whole heap of bills from our telco provider, but splitting it out by department and employee was a challenge. We could get a monolithic CSV file from the provider, but it was a dump of everything and way too big for Excel to handle.
Our CIO had identified an off the shelf product that did most of what we wanted to achieve, but not quite and we’d have to bend it to our will. Oh, and that’ll be a cool $80k a year in licensing costs, thank you.
“I could do that in Heroku, custom to exactly what we want, for next to no cost other than my time”, said I.
Outlining my plan, the CIO agreed to let me do a proof-of-concept application, as long as it didn’t detract from my regular day job too much. The gauntlet had been thrown down.
Over the next few days, I mapped out the data model in POJO classes, built out controllers and views and even a UI for importing the CSV files. It was all built on Heroku’s free tier with only a $9/month spend for additional database storage capacity.
Success breeds success
With the success of the first Heroku app, which became one of those classic tales of a proof-of-concept becoming the de facto production system, many other Heroku applications followed in all corners of the business. I was in nerd nirvana — the power of the cloud, with the flexibility and creativity of hand-coded applications that I was used to. I’d found the perfect match and as my “portfolio” of systems grew, so did my responsibilities. I’d been elevated to management, and was responsible for not only Salesforce and Heroku, but a growing number of other SaaS and PaaS systems too — Zendesk, Amazon Web Services, Okta and Box, to name but a few.
But as the saying goes, be careful what you wish for. Management isn’t all it’s cracked up to be. You end up drifting away from the very thing that got you there and trade it in for endless meetings, reports, staffing and budgeting. You wake up and realise you’re starting to forget how to do things in Salesforce, while you’re team members are picking up new skills in each subsequent release. So you stop, and you reboot.
To be continued… (cos it’s getting kinda long and probably needs splitting)