4 Software Engineers Shared Their Top Productivity Tips and the Common Mistakes To Avoid

These pieces of advice go beyond simple time management hacks. They offer a road map to creating programming solutions to be proud of within existing constraints.

Written by Lucas Dean
Published on Jun. 14, 2023
4 Software Engineers Shared Their Top Productivity Tips and the Common Mistakes To Avoid
Brand Studio Logo

Productivity is often seen in economic terms — a means to gauge the relative value of someone’s work. But by tracing the word’s etymology back hundreds of years, different definitions of and perspectives on productivity emerge. 

In the 15th and 16th centuries, ‘produce’ concerned the creation of life, art and fruitful harvest — things that can’t be rushed. Over the next few hundred years, the definition gradually shifted, taking on a meaning more closely related to efficiency, monetary value, manufacturing output, and physical and mental labor. 

Nowadays, productivity remains closely related to economic contributions, but it might be worth reframing mindsets to capture some of its original creation-centered meaning.

For software engineers, productivity may be closely tied to meeting deadlines and checking off tasks. Still, value is driven more by inventive, quality contributions — creative solutions to complex problems and effective, reusable code — than quantifiable outputs. Half-baked, bug-filled code is of use to no one, after all. 

Developers at four Chicago companies offered advice that encompasses a holistic outlook on productivity, in which optimizing one’s skills and processes benefits those around them while also empowering continued personal growth and success. 

Here’s what they had to say on time management, code readability, organization and prioritization of tasks. 

 

Anitha Ranganathan
Principal Software Engineer • CNA

CNA is a commercial property and casualty insurance company that provides standard and specialized insurance products to professionals and businesses.  

 

Share the top productivity tip that improved your ability to deliver high-quality code. Is there a practice you live by? 

It is critical to start any project by comprehending the requirements and challenges associated with the task at hand. That initial analysis ensures that adequate time is allocated to address those needs. This preliminary understanding lays a strong foundation for an effective solution. It is also essential to identify the necessary integrations and dependencies required to provide a seamless and integrated solution. I break down the task into smaller, manageable modules to facilitate effective development. This approach allows for the creation of reusable components, streamlining the development process and promoting consistency and maintainability in the long run. 

Additionally, it is prudent to remain current with the latest trends within and outside the organization. This enables me to explore existing solutions, potentially reducing the overall effort by leveraging reusable resources. Lastly, a key aspect of high-quality code is conducting rigorous unit testing; by subjecting the code to comprehensive challenges, we can ensure robust components that perform optimally. By adhering to these principles, I ensure high productivity and quality deliverables.

 

Strike a balance between perseverance and knowing when to pivot. Avoid giving up prematurely when faced with challenges, but also recognize the importance of asking for help.”

 

What are some mistakes you see newer engineers making when it comes to productivity?

One mistake is not having a plan for the day. Engage in effective planning by structuring your day and prioritizing tasks based on importance and urgency. This strategic approach will help you allocate your time and resources efficiently, enabling you to accomplish your objectives systematically.

Another is not knowing when to raise your hand. It is essential to strike a balance between perseverance and knowing when to pivot. Avoid giving up prematurely when faced with challenges, but also recognize the importance of asking for help when encountering obstacles. Requesting guidance from colleagues, mentors or subject matter experts can offer fresh perspectives, facilitate problem-solving and accelerate progress toward achieving your goals.

Lastly, a common mistake is not recognizing that a healthy body means a healthy mind. Place great emphasis on the significance of quality sleep and regular breaks. Adequate rest and rejuvenation are instrumental in sustaining energy levels and mental and overall well-being. Prioritize self-care by incorporating stretching exercises and a balanced diet into your daily routine.

 

How do you minimize distractions or interruptions and deal with the friction of context switching?

Establish a plan for the day, outlining the tasks and objectives you aim to accomplish. However, remain adaptable and re-prioritize your tasks as the demands evolve. Unexpected circumstances or changing priorities may arise, requiring flexibility in managing your workload. 

Begin your day by tackling the most challenging task on your agenda. By addressing the most demanding assignment right from the start, when your energy levels are typically high, you can effectively overcome potential procrastination and ensure its completion without unnecessary delays.

Organize your day by incorporating focused work periods into your schedule. Designate specific blocks of time during which you can fully concentrate on your tasks without interruptions. During these periods, you should refrain from checking emails or engaging in non-essential activities that may divert your attention. Allocate specific time slots for checking and responding to emails. This approach prevents email-related distractions from disrupting your workflow and enables you to maintain better control over your time.

 

 

Charlotte Smith
Software Engineer II • Beyond Finance

Beyond Finance’s customized financial products provide customers with a simple, transparent tool to overcome debt.  

 

Share the top productivity tip that improved your ability to deliver high-quality code. Is there a practice you live by? 

One of my favorite tips that was shared with me over the past few years was to focus on finishing work before starting new work. It sounds like an obvious statement, and it is, but once I started adhering to this guideline, my work significantly improved. It’s so easy to get pulled into multiple directions while waiting for responses on open projects. So I operate on a rule of three, meaning I have a maximum of three pull requests open at any given time.

These are some of the benefits I’ve noticed: 

  • I’m quicker to follow up on deliverables I need from other team members.
  • The development process from code completion to production takes far less time.
  • Less context switching between different projects.

This method is especially helpful if the pull requests are packed with feedback that requires a lot of back and forth. It fosters a more collaborative approach to projects and lessens the burden of open pull requests, which require time and focus from other team members. Other top mentions would be learning new shortcuts or tips and tricks for your code editor. I learn new things weekly from my research and from other team members, which makes for a better programming experience.

 

What are some mistakes you see newer engineers making when it comes to productivity?

One that comes to mind that I’ve been guilty of in the past is trying to complete a project as fast as possible to prove oneself is productive. Speeding through planning often leaves less room for contemplating the feature’s broader impact. Questions like, “What other areas of the code could this affect?” “Do the naming conventions make sense for not only the reviewer but for another engineer who might end up working on this file?”

While still being mindful of deadlines, I try to slow down enough to really digest what I’m writing and ask myself these questions and more: “Does it make sense to someone with no context? Am I missing potential edge cases? Can I refactor this to be reusable by other code?” Whenever I’ve found myself rushing through a ticket, I usually end up missing key details and, as a result, have to spend additional time reworking it, or worse — having to fix bugs that made their way into production.

This certainly isn’t foolproof as unforeseen issues still do happen, but it helps to prevent doing double work and enhances those planning soft skills.

 

Speeding through planning often leaves less room for contemplating the feature’s broader impact. I try to slow down enough to really digest what I’m writing.”

 

How do you minimize distractions or interruptions and deal with the friction of context switching?

I try to arrive at a meaningful stopping point on a task before responding to an action item. That could be committing a piece of work, finalizing a code review or completing a test run. It’s tempting to jump back and forth with notifications and emails — especially if you know it will be a quick task. However, reducing those distractions saves time you’d otherwise need trying to regain your focus and figure out where you left off. I find this critical during code reviews. If I stop to check out a few Slack notifications and then resume my review later, I’m almost starting over with trying to understand the context and my initial thoughts on the work.

I also like to get a lot of my “deep” work done in the mornings, as I know that’s my most productive time period. If I’m hitting a wall in the afternoon on something, I know it doesn’t make sense to keep hammering away at it, so I’ll attack it instead with a fresh brain the next morning. I’ll use that time to complete other to-dos such as code reviews, research or scheduling meetings. It’s all about being aware of what working style serves you best and keeps you at your most productive.

 

 

Hetal Patel
Senior Software Engineer • Echo Global Logistics

Echo Global Logistics is a technology-enabled provider of transportation and supply chain solutions, offering clients a platform that compiles and analyzes data, provides real-time visibility and simplifies tasks.

 

Share the top productivity tip that improved your ability to deliver high-quality code. Is there a practice you live by? 

There is one key: organization. Up and down the stack, from hard skills to soft skills, from user stories to code reviews, the most important thing any engineer can do is stay organized. 

  • Ensure your backlog is in good order and you fully understand the work that is in flight and coming up — no surprises.
  • Make sure the code that you and your team members write is clear, straightforward and unambiguous. Good code reads on the screen as good prose reads on the page; it flows naturally.
  • Pay attention to the architectural organization. Levels of abstraction are clearly delineated, so it’s obvious to engineers where to make changes in the stack to enable feature work in a sustainable way, with an eye on long-term maintenance needs.
  • Enable effective process organization. Or, the process by which work flows from the backlog into a scheduled sprint and how sprint work items flow from ready to work to ready to deploy.

 

What are some mistakes you see newer engineers making when it comes to productivity?

The biggest mistake I see newer engineers make regarding productivity is not a technical mistake; it’s a time-management mistake. It’s imperative to take control of your own calendar. Whether you are new to a profession or just new to a position or an organization, it’s easy to allow other people to determine your schedule by not taking an active and assertive role in the setting of standard work hours, break times, out-of-office time, and most importantly, meetings. 

Engineers must develop the skills to communicate their needs clearly and effectively to management and balance being a team player against the necessity of uninterrupted heads-down time to do critical engineering work. At the same time, meetings should not be regarded as a burden or merely an obligation to be fulfilled; engineers should be present and engaged so that their input is heard and they can understand what stakeholders are asking for.

 

Engineers must communicate their needs clearly to management and balance being a team player against the necessity of uninterrupted time to do critical engineering work.”

 

How do you minimize distractions or interruptions and deal with the friction of context switching?

As noted previously, engineers should be proactive in scheduling and controlling their time and calendar to minimize the number of context switches during the day and maximize the time they can spend in the “flow” of writing code. Engineers must also develop the skills to quickly prioritize emergent tasks, such as production incidents and impromptu asks from stakeholders. 

Rapidly assessing the impact and urgency of these unplanned tasks is crucial. Maintaining a high level of awareness and readiness concerning critical application functions and metrics will also help engineers avoid surprise complexity and reduce the investigation time required before a response can be provided.

 

 

Essie Kalashnikova
Senior Software Engineer • Snapsheet

Snapsheet creates products that leverage data and technology to enable auto claims processing for insurers.

 

Share the top productivity tip that improved your ability to deliver high-quality code. Is there a practice you live by? 

I’m sure there are many small things that contribute to a person’s productivity. But one that comes to mind first: always think of corner cases and all potential uses of the code you write. This way, you will likely make it more optimized and reusable, saving you time later. Also, it will probably help you avoid bugs and unexpected behaviors in odd cases. 

You can also think of it as looking at your implementation from different angles. Look at it as quality assurance — how can you possibly break it? And then, account for all those cases and make sure it works for them. Then look at it as a user — is it intuitive and easy to use? And then make or suggest any improvements you can think of from that perspective.
 

Always think of corner cases and all potential uses of the code you write. This way, you will likely make it more optimized and reusable, saving you time later.”

 

What are some mistakes you see newer engineers making when it comes to productivity?

Overcommitting. Taking on too many tasks leads to more context switching than manageable, leading to tasks falling off the radar and not being completed or properly attended to.

 

How do you minimize distractions or interruptions and deal with the friction of context switching?

I try to plan my time so that I work on tasks that need the most concentration when there is the least probability of the need for context switching, such as earlier in the day before meetings start and when it’s less likely to get questions on Slack. If I need to do several smaller things — code reviews, follow-up on conversations and so on, I try to group them together and free up a larger chunk of time for a bigger task. If I have questions for someone, I try to accumulate them when possible and schedule a time to have them all answered or discussed to avoid “chasing” and distracting the other person multiple times.

 

Responses have been edited for length and clarity. Images by Shutterstock

Hiring Now
Chamberlain Group
Automotive • Hardware • Internet of Things • Mobile • Software • Design • App development