Full disclosure before you read any further: I am one of “those” people …the productivity obsessed. I am constantly trying to improve my output and overall workflow – both professionally and personally. I am by no means the most productive person in the world, but I’m constantly trying to work toward some unatainable level of expert efficiency. I’ve read 7 Habits of Highly Effective People and Atomic Habits (which I HIGHLY recommend). I’ve read every Lifehacker “How I Work” post. I’ve gone from vim to emacs back to vim – currently with highly-customized vimrc file. And, I’m currently in the process of trying to reset my sleep schedule to wake up at 4:00am, to reach the pinnacle of productivity!
Take everything below with a grain of salt – there are probably much more scientific and accurate explanations for the information I provide herein. But, to quote the prophet Adam Sandler in his critically acclaimed philosophical sonnet “Wedding Singer”:
I am the one with the Microphone!
As network engineers, developers, devops practictioners, and overall technologists, we have become accustomed to working in teams. These teams are often organized into functional or cross-functional groups that work together to accomplish a certain set of tasks – deliver an application; design, implement, maintain, augment the infrastructure that supports an application; rinse & repeat. As such, there are many methodologies that define how teams work together to accomplish their set of tasks. A non-exhaustive list would include:
Agile
Kanban
Waterfall
Scrum (which, I think is Agile?)
Lean
Extreme Programming
GTD
And many…many…more (so many more)
These methodologies, for better or worse, define how a project is managed. They establish a set of standards and working cadence that facilitates a few expected outcomes: delivery, collaboration, acceptance criteria, estimation, and scheduling. When utilized correctly, these methodolgies can be powerful tools to manage a team toward an efficent and euphoric high-functioning juggernaut!
The question that can often get overlooked, even on these high-functioning championship teams is: How do I manage MY time? How do I prioritize and maximize MY productivity?
With that question in mind, we will take a look at a method of personal productivity management that can be beneficial for anyone working in an engineering/application/devops capacity.
Priority vs Productivity
In all my research, tweaks, failures, and successes, I’ve identified that there is a big distinction to be made between priority and productivity. They work hand in hand, and are equally important toward an efficient workflow. Priorty identifies what to do at a given moment; Productivity is how you do it. Being proficient at both is the key to maximizing our time and potential as engineers.
More often that not, external factors have much influence on prioritization. Deadlines, dependencies, budget contraints, outages, threats, public shamings, etc… can all impact which tasks get pulled into our “hot list”. Often times this is out of our control.
Prioritization can be summed up by using the common computer science analogy of the Stack vs Heap.
In this analogy, “the Stack” involves things that are done quickly, with very little congitive load. This could involve answering an email, documenting a new feature, commenting on a pull-request, reviewing a pull-request (sometimes), and other “quick” tasks. The key here is the cognitive load. A coworker of mine is an all-time champ at answering questions on the Network to Code Slack channel. During downtime he can engage with someone, diagnose their issue, and respond, almost asyncronously from his other tasks. He’ll do this if he has 5 minutes between meetings, waiting on a response from one of his employees, etc… He is able to do this based on experience and muscle memory – most questions require very little research for him. If a question does require additional research or investigation, he may refrain from responding or file it away for a later time …when he has time for “the Heap”.
“The Heap” in computer science refers to operations requiring memory allocations of a non-finite size. As such, it is more flexible, but more expensive than operations involving “the Stack”. As technologists, examples of using “The Heap” could include: reviwing documentation, writing code, debugging, troubleshooting, researching a new topic, reviewing a design request, and code review.
The Stack vs Heap analogy highlights the importance of properly identifying a task or request’s scope, and what is involved in fulfilling/resolving it. A good question to ask is: “Will this take me more than 5 minutes?” If so, it is normally left for an allocated time of focus, where the task can be given the attention it needs. Otherwise, it can be handled immediately, or during a time requiring less focus. Some answer emails and handle other “quick” tasks at pre-allocated times during the day (more on this later); others handle these tasks as they come in, but only for a short period of time, before returning to a more involved task (this is often the case for those in an operations role).
Proper Prioritization Prevents Poor Performance
The biggest takeaway from the Productivity vs Priority distinction is that it is imperitive that we identify our priorities and make a plan to execute on them. Conversely, it is important that we identify secondary responsiblities and potential distractions that can negatively impact our priorities.
If our main job responsibility is to deliver a feature by the end of a sprint, will our team care how many emails we have answered if the release is late? If we are asked to resolve tickets quickly to improve our team’s MTTR, does researching new features contribute to, or detract from that goal?
Though those questions may sound bleak, the good news is that we normally have more time for productivity that we think. This is especially true if we work in an environment with reasonable deadlines and efficient estimation – e.g., Network to Code (shameless plug). Normally, we have time to deliver on our primary, and additional responsiblities and look for ways to improve efficiency – if we improve our productivity.
Pomodoro Technique – Embrace the Tomato
The method I have personally found to be most productive FOR MYSELF is called “Pomodoro”. I have found great success utilizing this method because it forces you to allocate both focused and unfocused time, along with breaks. In short, the Pomodoro Technique consists of the following:
A “Pomodoro” is a CONSECUTIVE unit of focused time – normally 25 minutes
Each pomodoro is followed by a short (3-5 minute) or long (15-30 minute) break
Breaks increase in length as successful pomodoros are completed
Tasks are handled in a First In First Out method
If a tasks takes longer than 25 minutes, it can be completed after a break during the next pomodoro
If a task takes less than 25 minutes the remaining time can be left for unfocused (“Stack”) activities
WRITE EVERYTHING DOWN!! Take notes on tasks, successful/failed pomodoros, timing, etc…
It also promotes good prioritization, planning, estimation, and self-reflection. At the end of a day, week, or sprint, it is easy to identify where time was spent, and what optimizations are needed.
Here are some things I’ve done to utilize the pomodoro technique effectively:
Assign every task a due date as you receive it
At the beginning of the week define the week’s goals and the total time you’re allocating to work (time available minus meetings, appts, personal time, PTO)
At the beginning of the day write down Things To Do, keeping in mind the time available for that day
Identify which tasks are most difficult, and/or least desireable, and stagger them with more desireable/easy tasks
Always start with a desireable/easy task to build momentum
Schedule long breaks, lunches, and personal time, by adding these things to your calendar
Mute Slack, email, and other notifications (if possible). Move your phone to another room, or away from your reach
Have fun & execute
With all of these productivity “tips”, it is important to remember that “to err is human”. Some days I am a productivity machine. Some days I can barely type my own name. However, I can personally attest to the success of the pomodoro method. When I use it effectively, at the end of each day, week, sprint, my output is optimal, and I feel great about it. When everything is “on fire”, time seems to fly by, with little impact.
Conclusion
Is the Pomodoro Technique the “silver bullet” for productivity? Surely – just like Agile, DevOps, and Kubernetes solve everything. This technique may not be the best for you. But, the principles of Prioritization and Productivity can help to contribute to an improved workflow, and hopefully make us all more effective and efficient. The most important thing is to be more deliberate with our time, and to pick a technique, method, and workflow, that works for each of us individually. Increasing productivity is the closest we can get to building a time machine, in that it can help us waste less of it. Maybe that justifies my obsession?
Does this all sound amazing? Want to know more about how Network to Code can help you do this, reach out to our sales team. If you want to help make this a reality for our clients, check out our careers page.
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. In case of sale of your personal information, you may opt out by using the link Do not sell my personal information. Privacy | Cookies
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
__hssc
30 minutes
HubSpot sets this cookie to keep track of sessions and to determine if HubSpot should increment the session number and timestamps in the __hstc cookie.
__hssrc
session
This cookie is set by Hubspot whenever it changes the session cookie. The __hssrc cookie set to 1 indicates that the user has restarted the browser, and if the cookie does not exist, it is assumed to be a new session.
cookielawinfo-checkbox-advertisement
1 year
Set by the GDPR Cookie Consent plugin, this cookie records the user consent for the cookies in the "Advertisement" category.
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
CookieLawInfoConsent
1 year
CookieYes sets this cookie to record the default button state of the corresponding category and the status of CCPA. It works only in coordination with the primary cookie.
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Cookie
Duration
Description
__cf_bm
30 minutes
Cloudflare set the cookie to support Cloudflare Bot Management.
li_gc
5 months 27 days
Linkedin set this cookie for storing visitor's consent regarding using cookies for non-essential purposes.
lidc
1 day
LinkedIn sets the lidc cookie to facilitate data center selection.
UserMatchHistory
1 month
LinkedIn sets this cookie for LinkedIn Ads ID syncing.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Cookie
Duration
Description
__hstc
5 months 27 days
Hubspot set this main cookie for tracking visitors. It contains the domain, initial timestamp (first visit), last timestamp (last visit), current timestamp (this visit), and session number (increments for each subsequent session).
_ga
1 year 1 month 4 days
Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors.
_gat_gtag_UA_*
1 minute
Google Analytics sets this cookie to store a unique user ID.
_gid
1 day
Google Analytics sets this cookie to store information on how visitors use a website while also creating an analytics report of the website's performance. Some of the collected data includes the number of visitors, their source, and the pages they visit anonymously.
AnalyticsSyncHistory
1 month
Linkedin set this cookie to store information about the time a sync took place with the lms_analytics cookie.
CONSENT
2 years
YouTube sets this cookie via embedded YouTube videos and registers anonymous statistical data.
hubspotutk
5 months 27 days
HubSpot sets this cookie to keep track of the visitors to the website. This cookie is passed to HubSpot on form submission and used when deduplicating contacts.
ln_or
1 day
Linkedin sets this cookie to registers statistical data on users' behaviour on the website for internal analytics.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Cookie
Duration
Description
bcookie
1 year
LinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognize browser IDs.
bscookie
1 year
LinkedIn sets this cookie to store performed actions on the website.
li_sugr
3 months
LinkedIn sets this cookie to collect user behaviour data to optimise the website and make advertisements on the website more relevant.
VISITOR_INFO1_LIVE
5 months 27 days
YouTube sets this cookie to measure bandwidth, determining whether the user gets the new or old player interface.
YSC
session
Youtube sets this cookie to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
yt-remote-device-id
never
YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
yt.innertube::nextId
never
YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
yt.innertube::requests
never
YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.