A career can feel like a big old semi-truck at times. There will be periods when you feel like you are driving it, and then others where it is driving you. While this post is about the Azure Durable Function Pattern, it’s also about how you can choose a new course at any given mile marker along your journey.
“When preparing to travel, lay out all your clothes and all your money. Then take half the clothes and twice the money.”Susan Heller
In our professional enterprises, however, replace the idea of money with creativity. If you are doing it for the money, you are missing the point of the whole operation.
Choosing a Direction
I’ve been reading a lot of Brené Brown lately. She talks about fear, shame, and courage as that is the subject of her research foundation. She boils down enormous topics into statements that are easy to apply to our own lives.
“True belonging doesn’t require you to change who you are; it requires you to be who you are.”Brené Brown
My own career started as a series of accidents and discoveries.
I sort of fell out of college where I was studying to become a forest ranger. I was also doing the work of coming out at the time and redefining everything about myself. This is when I stumbled into the wine and beer industry which lead me, by pure chance, into the IT business.
Fast forward to 15 years at a wine & beer company in Dallas. My boss had just presented me with a choice. I’d been working with the LAMP stack for about 6 years at that point and had one year of Java/Spring/WebSphere development under my belt at that stage. I think fondly of these folks who, early on, took the time, and interest, to help challenge myself in ways that would help me to stretch and grow. But yeah. The choice. She is the type of person who scares the Hell out of people. Unpredictable. Biased. Never changes her mind once it’s set. Would cut you down in a heartbeat if you crossed her. It was Texas. I gathered that’s just how it was.
So, she sits me down and asks me if I’d like to work with something called SharePoint and .Net. The caveat, according to her, was that I would never become the front end web developer I was aiming at. The offer was not out of line with my interests in working within a packaged application framework in the collaboration space, automation and front-end components, so I said yes. I mastered workflows, forms, timer jobs, and event receivers along the way. I met authors like Phil Wicklund whose book on SharePoint Workflows crystalized how I work with clients and build solutions for automation projects. From meeting rooms to Visio, I use his principals to this day.
I learned the intricacies, and pitfalls, of the .Net, based SharePoint workflow foundation. Coded, deployed and tooled out various business processes which enabled organizations to standardize disparate processes. From SPS 2010, 2013, 2016 WF in .Net, XML, Nintex and K2 flavors, I did it all.
Regardless of the large numbers of options, it’s all the same idea to solution. Get a group of people together who pass off data between each other to support a larger business process. No one really does the same thing the same way. It’s a wonder that some folks achieve a repeatable outcome at all.
There is an excellent article on Medium by Stan Garfield titled “Workflow Applications” which can go into greater depth on the intricacies of this stack.
There’s a framework from “Managing Oneself” by Peter F Drucker I adopted for self-assessment. Kind of like taking out your compass and triangulating a bearing. Taking a moment to ask yourself the following questions can be a fantastic way to learn from your experience and know yourself better.
- What are my strengths?
- How do I work?
- What are my values?
- Where do I belong?
- What can I contribute?
By doing this I made a couple of other jumps after the wine company. Namely to both consulting, and to a very large, company as a solution architect. I had not done either line of work before and had identified, through self-assessment, that the direction I wanted to head out toward next was in cloud architecture and front-end work.
Before, Texas, while I made a few jumps there, I ended up letting myself get comfortable. Trapped in a dead-end of my own making. I see it every day. People, for whatever reason, allowing themselves to feel bored. That’s one of the biggest warning signs. If you aren’t learning something new every week you are wasting your time… and probably someone else’s too.
“Houses are full of things that gather dust.”Jack Kerouac
I’ve been around long enough to know what it feels like to find yourself in a dead-end. Dallas became that for me after 15 years. And while I learned a ton, I stopped growing at a certain point. Right around the end of that period, however, I got a chance to interview with a nonprofit in San Francisco. The job was, of course, SharePoint, but the mission of the company was cool and, well, San Fran-f***ing-Frisco.
We got to the point of talking salary where I figured out that I’d have to drag my partner and our cats out in a truck only to couch surf with people who were kind enough to lend us space as we could not afford to live there.
It was on the flight back to Texas where I met a guy who changed my life. He was the CEO of a large nationwide health service provider and traveling with his wife. We got to talking and he told me that the best thing you can do is to “repot yourself every three years in order to avoid becoming comfortable.” Mind blown because I saw myself in his statement. Or rather what I needed to do to get back on the road of my career again.
As a result of a thousand tiny choices, I had the opportunity to work with the Azure stack this year. Specifically, the Durable Function pattern. Granted, I was using concepts that I had worked with now for years, but it was from a different angle solving entirely new problems with an awesome group of diverse people.
While they have a sexy association with names like “serverless computing” these days, they are essentially the same types of paradigms we’ve been using for decades. An event triggers the process to run. It runs. Work is done. It goes to sleep until the next trigger fires off. Now the thing about durable functions is that they are stateful. The data is stored in Azure Tables and the orchestrator function keeps track of the outcomes for things like retry and error handling logic.
There is an incredibly thorough post by Tsuyoshi Ushio entitled “Durable Functions 101” which should be anyone’s starting point when deciding to work with this pattern. He gets you through the pattern, storage emulator, determinism, sub orchestrators, the DevOps pipeline and a few other points. Additionally, dependency injection is now supported by the platform as well.
Some gotchas you are going to want to solve for will be around correlation logging between starter, orchestrator and activity functions. Each one of these components is separate entities and you may want to extend the logger to take in extra parameters in order to get a fuller picture for debugging and support purposes. Another hurdle will be seen when trying to do unit testing. “Strategies for testing your code in Azure Functions” is a solid reference on how to approach that subject.
Being Comfortable on the Road
There’s an underlying theme here though. The thing is, along the course of our travels down the road of our professional lives, there are signs to watch out for. Things like living a life out of balance, burnout, demotivation, dead ends, negative cultures that we all see from time to time. I’m no different than any other person. I’ve found myself in all these situations and had to unbox myself.
“As long as possible live free and uncommitted.”Henry David Thoreau
Just like that guy on the plane told me “don’t get comfortable.” We need to hold the steering wheel loosely. Always on the lookout for those roads that become boring or just a little too nice.
There’s a book called “The Drama Free Way” by Jennifer Kern Collins which speaks about the “GRATE-full living” framework. Basically:
- Grieve or Get Out
- Take Action
By sticking with the Texas company as long as I did, I was not doing anybody any favors. I had to get out. My recovery was to jump headfirst into an entirely different industry, one which scared the Hell out me at first. As time went on, I adopted the last three precepts naturally and, ultimately, entered one for the most dynamic phases of my life to date.
You know the weird thing? It’s not just work either. It’s every single aspect of life that you can end up changing. Work time, personal time, family time, friends time, recreation time. All with the simple idea of not getting too comfortable.
So, in closing, Azure Functions are cool. But at the end of the day, it’s just a different way to solve the workflow problem. Fortunately, there is a wealth of technologies out there to draw upon to solve these problems. Things like Logic Apps, Nintex Cloud, IBM BPM, and many others.
With all that behind me now, I think it’s time I go do some front-end development sometime in the near future. Which leads me to my last topic for this post. Never let someone tell you what you are capable of. Go out and find that on your own. One uncomfortable challenge at a time.