Writing blog posts is hard, at least for me. What is a good topic to discuss? When can I find the time to write the content? How can I stay focused long enough to finish a post? How do I understand if the post was a hit?
Interestingly enough, the challenges posed by those questions share similarities with those that I’ve faced as a Solutions Engineer, and it’s these challenges and how I’ve approached tackling them that I want to discuss now.
New Role, New Responsibilities
I previously did a lot of technical stuff
When I first became a Solutions Engineer back in July of 2017, I wasn’t sure what I would actually be doing. At IBM, my work revolved around code 100% of the time. I’d written Ruby on Rails applications to provide cloud cluster management and remote desktop integration, contributed several times to Apache Spark, architected and implemented an IPython (now Jupyter) kernel), and worked on a conversational computing platform leveraging Watson technologies.
The new role said 50/50 technical & non-technical
The job description painted the role as 50% coding and 50% non-technical work, but who can really say what that means until you try out the job for yourself. I landed in a team with a focus on both scalability and client engagement, which you would think are opposites given the personal nature of client engagement and the abstract focus that scalability demands.
In actuality, these two focuses are intertwined. By understanding the challenges that clients are facing on the platform and in the industry, we as Solutions Engineers are in the unique position to identify and engage in solutions at a faster pace and with more detailed attention to client needs than any other engineering team. Combining with my team’s need to scale our solutions across (ideally) thousands of advertisers, the solutions we build need to function at a minimum across entire industries like ecommerce or retail with the preferred approach being to create solutions that can span across multiple industries.
Is that breakdown honest?
Switching back to the technical/non-technical breakdown, the 50% split is somewhat accurate, but not from the scope of week-to-week. Rather, I have certain days at a time where 80-100% of my time is spent in meetings, supporting external clients strategically, researching trends in industry, planning out initiatives, and handling other non-technical responsibilities. On the flip side, I’ve had entire days where I’ve done nothing but write code, diving deep into understanding an existing technical stack, building out full-stack applications for internal tools, or adding enhancements to our existing public interfaces.
Each team under Solutions Engineering is a little different with some teams having minimal client interaction while others like mine deal with a large volume of different clients on a weekly basis.
What technologies have I leveraged?
Focusing on the technical, I’ve spent my time building frontends leveraging Flow, React, and variations of Flux (although I’ve also got my eye on ReasonML); designing and implementing backend systems in Hack; creating data pipelines using our internal systems and a mixture of Python; and architecting and building a system leveraging machine learning technologies.
As with the breakdown described earlier, your work can vary depending on which specific team you are on within Solutions Engineering. If you are more heavily involved with gaming, your focus could be more centered around mobile application development and enhancements to our SDKs, while an ecommerce-centric approach would require a lot more web-based development.
Challenges & Solutions
I’ve discussed some of the new responsibilities and differences from a pure technical role, but what I haven’t yet done is talk about the new challenges I’ve faced. In a nutshell, there are five key challenges that I want to explore:
- Lots of responsibilities
- Prioritization is hard
- Tasks are daunting
- Getting distracted
- Maintaining a work/life balance
Each of these is something I’ve faced since becoming a Solutions Engineer. Now I want to dive into each area and how I’ve approached tackling it.
Lots of responsibilities? Make a list.
Having a lot of tasks as a software engineer at IBM was challenging, but I was able to keep my brain wrapped around what I needed to do. Each task was geared towards an overall goal of “implement feature X” or “ship project Y.” As a Solutions Engineer, this changed when my responsibilities broadened to include multiple projects as well as non-technical work.
What should I be doing now? What is on my schedule for this week? What are my goals for the month? I found myself becoming increasingly overwhelmed by the varied expectations, constantly context-switching between writing code for a project, meeting with mixtures of technical and non-technical teams regarding any number of topics, and supporting sales on the frontline of client engagement.
I’ve spent a couple of years rooting methods of organization ranging from physical organizers like Bullet Journal and Panda Planner to instructional videos on methodology like planning your week and tutorials on Kanban Flow. What I’ve learned from all of these is that making a list is one of the most important things you can do to help declutter your brain.
Rather than keeping track of the work you need to do this month. Or this week. Or even this day. The better approach is to jot down the highlights somewhere that you can refer back to throughout the day. For me, this has helped to take the edge off with regard to what I should be doing or if I forgot anything else. If something new pops up throughout the week, I add it to my list to check back on later.
Additionally, providing myself with a list helps me to take a step back and better understand my goals and priorities for the day, week, month, etc. When I go without a list these days, I find myself tackling whatever comes to mind next, rather than what should be my next priority.
Prioritization? Gauge impact.
Even with all of my TODOs in a list, how can I best determine where my time should go? I only have so many hours in the day to get work done, and often the time I have is much less than I expect.
When I joined Facebook, a philosophy I picked up was about focusing on driving impact over motion. In other words, make sure that the work you are doing has purpose and value. When you complete some work, you want to be able to say that you accomplished something, not that you did something.
When I look at my list of tasks, I try to evaluate the impact of each of those tasks. Who is this affecting? What happens if I don’t complete this? Is there something else that is worth more of my time than this task?
Evaluating tasks can be difficult. What am I measuring? Increase in spend on Facebook’s platform if I complete this feature? Improvement in sales efficiency if I conduct this training? Often times, I find myself investing a non-inconsequential amount of time evaluating and re-evaluating where my time is going each week; however, keeping myself aligned on the most impactful work I could be doing and understanding why I am spending my time working on project X or conducting training Y is incredibly rewarding and crucial to me completing the right work at the right time.
Tasks overwhelming? Break them up into smaller pieces.
If I had a task to “solve all challenges in the retail industry” and could solve that in one day, I would retire and go home. Unfortunately, I can’t work that fast. In fact, based on that task, I’d have a hard time getting started.
Something I’ve learned from being placed outside my comfort zone, face-to-face with daunting goals, is that I need to take a step back and really understand what I’m trying to accomplish. Is this something that is doable? Can it be done in a couple of days? What can I do today that can contribute towards getting this done eventually?
For those of you that have heard of dynamic programming, this might sound familiar. When I find myself stuck on a problem or task that is too complex, I know that I need to break it up into multiple smaller, more understandable pieces. The smaller and more measurable I can make it, the better.
Rather than thinking that I need to “solve all challenges in the retail industry”, I would instead focus on “what are some of the challenges in the retail industry?” From there, I’d break up the question into a couple of questions:
- who is working in the retail industry (clients)?
- which teammates within Facebook work with that industry (connections)?
- what ongoing work is being done in that industry to address challenges (innovation)?
Just by adjusting the question and breaking it up into smaller pieces, I have some more approachable goals (questions I want answered). From there, I might take “which teammates … work with that industry?” and break it up into a couple of tasks I want to get done this week:
- reach out to teammate X about her work with retailer Y
- read new blog post from Z regarding his analysis of the industry
- talk to my manager about attending an industry conference to meet clients
Each of these items is a tangible thing that I can get done. I can physically check it off of my list once I’ve finished it, and each is doable in one day. These help me figure out how much progress I’m making towards a bigger goal.
Getting distracted? Time box yourself.
Being a Solutions Engineer isn’t an easy job. You’ve got a lot going on and you cannot dedicate a large amount of time to any one task per day. Often, the largest blocks of free time I have available in my calendar are 30 minutes long, which means that I have to quickly decide on something to do and GET. IT. DONE.
And getting something done is hard to do, especially for me. If I only have 30 minutes inbetween meetings, I find myself tempted to read the latest tip in our vim workgroup or skim through random gifs posted throughout the Internet.
To get things done in short timeframes, I need to timebox myself. Without setting a fixed period of time to accomplish a task, I procrastinate. I’d love to deny that I procrastinate, but it’s absolutely true. If I don’t enforce restrictions on my time and provide a “light at the end of the tunnel,” my mind tends to wander on tasks that I find less interesting. At work, you’re always going to have a blend of exciting tasks and “I just need to get this done” tasks. Ensuring that each gets a fair amount of time is crucial to getting my work done.
To do this, I’ve tried a couple of different techniques, and the one that has worked best for me is the Pomodoro Technique. This revolves around fixed periods dedicated to 25 minutes of work and 5 minutes of rest, repeated. Upon completing your fourth 25 minute “pomodoro,” you get a 15 minute break.
There are a variety of digital tools that provide a pomodoro timer in combination with task management, etc. and my personal favorite is Kanban Flow, which enables you to keep track of your completed pomodori (the plural of pomodoro) for each task. This has helped me slowly improve my own judgment of how long a task will take by comparing it to the amount of pomodori needed to complete similar tasks in the past.
Whatever you choose to use and do, providing scoped amounts of time to work a single task with no interrupts can be a great help to boost productivity. Rather than having your mind bounce from A to B to C over the span of the 30 minutes you have free, being able to dedicate your entire focus to just task A means you can complete it faster and with less frustration than splitting your attention across multiple tasks at the same time.
Work creeping into your off hours? Plan out your day.
I’ve been guilty of working into the wee hours of the morning and I wouldn’t be surprised if you have as well. It’s one of those occurrences that seems to happen to everyone where you leave your physical workspace but don’t truly leave work behind.
Whether it be answering a quick question that a colleague sent over chat at 8 PM or cranking out that last-minute feature to make a project just a little bit more special, having your work creep into your everyday life can be taxing. I’d think to myself, “I need to get this done. It has to be done now. I’ve got so much to do!”
But does something really need to be done at 3 AM? And would I even produce good work at that time of day?
After reading a couple of studies and watching videos on how others have dealt with this phenomenon, I’ve tried to approach this proactively by planning out what I want to accomplish each day, trying to make it as reasonable as possible. Whenever I complete a task, I check it off my list, which gives me a small boost in self satisfaction as well as slight relief in that I’m getting things done.
At the end of the day, I can look back at all of the work I’ve finished and not only convince myself that I’ve “done enough” but also that I’m doing a great job and making great progress. No longer do I feel the pressure to always continue working to “catch up” on what I need to get done.
With all of this said, where do I stand now?
Overall, work is going really well! Any stress I may have had with regard to volume of responsibilities has been replaced with excitement for the variety of opportunities I have to grow as a Solutions Engineer and explore all that the role has to offer.
These days, I use a combination of a physical organizer (Panda Planner) and a digital TODO list and timer (Kanban Flow) to plan out the activities of my day and week. The Pomodoro Technique has been my preferred way to buckle down and knock out a bit of programming or writing when I’m short on time or have a lot to get done in a day.
I’ve also been pursuing Inbox Zero as a means to keep my email as organized as my schedule, but that’ll be a talk for another time.
I’m very grateful for being given the chance to pursue such a unique blend of engineering and entrepreneurial-like experience at a company with as impressive a history as Facebook, and certainly look forward to what the future holds for me!