Focus and avoid context switching

My day job as a software engineer requires a great deal of focus and organization. Writing code is one of the last steps you do in software development. Writing code only comes after gathering enough information and understanding what changes or features we need in an application.

Focusing on one task, but more importantly, one project at a time is critical. When working on more than one project at a time, there is a lot of context switching, which is terrible for you and your productivity.

Focusing on one task also allows you to fully immerse into the details of the project, expand your domain knowledge about the work area, and as a result, be thoughtful about the way you approach the project, its problems, and the solutions.

Context switching while doing any work that requires concentration decreases the project’s opportunity to succeed and your productivity as well. The result is a net negative, and I don’t see any reason to do it. The only reason we do it might be due to our inability to focus on one task or the constant interruptions that are common in the workplace.

Focusing today is more challenging than ever. We have many tools around us that trick us and push us to pursue distractions. The handheld devices we all have are the number one reason for this, in my opinion. These devices are the window into a lot of addictive content out there, and trying to stay focus while having these devices next to us requires a lot of discipline.

It’s not all our fault. We are the victims of advanced algorithms that know us well and learn how to get our attention. It takes a lot to turn off notifications and not open our favorite apps to see the latest micro-piece of content. But, it’s a very effective drug that works against us.

Of course, there are simple ways to minimize this. I, for example, have most of my notifications off. The only place where I turn notifications on is on my family chat. Other than that, I never get pulled in by an app since I don’t get notified about anything. So that works, but just a little.

There are other things I do to keep myself focused and stick to one task at a time. For example, I set up specific times (timeboxing) to do the other distracting tasks such as checking email, social media, the news, etc. I timebox these tasks and try hard not to allow myself to break that rule.

Timeboxing helps a lot. In the past, I spent a lot of time checking, reading, and replying to emails. Nowadays, I check email maybe once a day, and I do not respond to emails unless strictly necessary. I do the same for social media apps, and if you use an iPhone, the Screen Time feature can help you a lot with this.

For non-digital distractions, you can also use the concept of timeboxing. For example, at work, I set up “focus time” in my calendar to make sure people know when I will be available to join a meeting and when I am not. Setting focus time in your calendar sets the expectations of other people around you. It will make it easier for them to know when you might be free to talk, have a meeting, or help with some other task.

I break my workday into four areas, the first block of time, 7-9 am is OK for meetings and open tasks, from 9-12, my time is blocked for deep/focused work, lunch from 12-1 pm, and finally from 1-4 pm I have open it up for meetings and time to reply to email and other office messaging apps.

I started doing this more than a year ago, and it works very well. I get very few if any distractions during my “focus time,” which is enough to make me productive and more relaxed. Before doing that, I checked email constantly, responded as soon as possible to any message, and accepted all meetings at any time. Unfortunately, that caused my productivity to drop considerably and, with it, my motivation and energy.

Context switching is tough for tasks that require concentration. You cannot concentrate with the endless amount of notifications coming from our devices, from people around us, and from our lacking ability to concentrate. We have to set clear boundaries with ourselves and be assertive and disciplined to make sure we and others around us respect them.

Setting limits and structures around my life is not something I often do. I prefer to live the moment, be casual with what I do in life, and allow myself to do unexpected things. However, when it comes to working, whether it is personal or professional, setting boundaries and allowing yourself to focus on tasks is a game-changer.

This advice is not only about being more productive. Focusing on tasks is also less stressful and much more enjoyable once you learn how to do it. I hope this is helpful for you, and please, if you have any other suggestions, questions, or any feedback, please let me know here in the comments. Cheers.

Enabling software engineering teams for success.

Software development is hard, and it isn’t always the programming language or the framework you use, it’s the people who work on it.

People are an essential part of a team; everything can be easily changed and fixed, but to achieve effective communication and a great culture, you need to make sure people work well together. In my software development career of over 20 years, the critical difference between successful software projects and failed ones has been the way engineering teams are created and how they are allowed to function overtime.

Enabling software engineering teams for success.

How to find great developers.

In response to those companies, hiring managers, interviewers who keep asking the same question:

Where can I find great developers?

A developer becomes a “great developer” when the company, team, resources, projects, recognition, etc., are compatible with that person. Under that logic, I believe any programmer can be great if they desire to do so and find the environment and motivation to thrive.

Most technical interviews fail to find the right people because interviewers and hiring managers usually go at it with an “idea” of what a “great developer” looks like to them. In most cases, everyone ends up hiring people who don’t work out and miss out on people who could have become the “great developers” there were looking for in the first place.

An introduction to Single Responsibility principle (SRP)

This is the fifth and last article describing SOLID principles. This article is about the Single Responsibility principle. Hopefully it will help you understand what the principle is all about and why it’s important to keep it in mind when designing and writing your code.

What is the Single Responsibility principle?

Here is the definition from Wikipedia: The term was introduced by Robert C. Martin in an article by the same name as part of his Principles of Object Oriented Design, made popular by his book Agile Software Development, Principles, Patterns, and Practices. Martin described it as being based on the principle of cohesion, as described by Tom DeMarco in his book Structured Analysis and Systems Specification. An introduction to Single Responsibility principle (SRP)

How to become a software developer

OnTechies

How to become a developerA person looking to become a professional software developer would ideally have a bachelor’s degree in computer science or engineering. If that is you, then you can go ahead and skip to the next section below. However, if you don’t have such a degree and getting one is not feasible then you need to learn about programming and other related skills on your own. This is now easier than it was before due to the increase of online courses, programming bootcamps and coding schools which have made it easier to become a software developer today. While none of these approaches teaches you as much as a regular computer science curriculum, it does teaches you the necessary skills to get started by focusing strictly on what you need to learn to start coding efficiently. Some of these code school programs and online courses will go as far as helping you get a job by referring you to…

View original post 865 more words