By Oscar Waterworth September 23, 2016

Take It on the Chin

We are all aware of the fact that programming can get really tough sometimes. No matter how hard we try—and I believe that most programmers try really hard—an error is always waiting to occur. Just when you think that your work is over, a bug appears that needs your attention.

This can really drive one mad.

Programmers will spend dozens of hours trying to figure out how to solve a single problem. You know that feeling: when everything seems meaningless, the lines of code consume your entire reality and the purpose of it all somehow gets lost in all the work. All of this consumes large amounts of time and requires really high levels of mental toughness.

Managing time can help, but we have to learn how to do it correctly. It is one thing to be a good coder and another to be a successful organizer. But time management is not the coder’s primary job. That’s why, if one is coding for a company, it is best they leave that work to project managers.

There is a plethora of neat apps available to help with our organization of time, and we should utilize them to their full potential. We have to protect our productive time. After all, some of us might want to start our own businesses and will need to know how best to maximize our time.  To be really successful as programmers, we need to preserve our sanity while fixing time-consuming bugs, on what are often unrealistic deadlines. In this post I’m going to explore some effective ways of doing this.

This is Really Bugging Me

Bugs & Bugging Me

Everyone hates bugs, both programmers and users alike. But the users did not spend huge amounts of time building that buggy piece of software. Their annoyance doesn’t match the frustration a programmer experiences when confronting bugs of unknown origin.

When these occur in their software, programmers can often feel lost and defeated. This is when it is best to clear one’s mind and start searching for the solution to the problem. We must look at the potential reasons for the bugs in the first place. From here, we can start to restructure the code, in order to eliminate the error before it starts.

Better Commenting and Variable Naming

One reason bugs might appear is due to a poor commenting practice. Sometimes, we have to divert our attention away from the actual coding to focus on taking notes about what the code does and how it relates to the larger purpose of the program. This can help us greatly in the long run.

Imagine you are working on a piece of software that will ideally be used for a long time after you have finished crafting it. It is likely that somewhere along the road there will be a need to change certain elements of the program, possibly due to consumer or market demand. Having a sort of a roadmap in the form of notes and comments could help address future problems and expansions. Think of it of as helping your future self.

Aside from a poor commenting practice, another thing that can get on your back is poor variable naming. Variable naming is important, and it is especially useful when you inherit someone else's code. If you name your variables correctly, you will save whoever comes after you a great deal of time figuring out what the variables stand for.

To minimize the appearance of bugs, you may need to go beyond standard commenting practices. You might want to think about keeping a journal of the development process in the form of lab notes. Scientists do this regularly to protect their research and also to keep track of their developments. By learning about how to keep lab notes, you will save yourself a great deal of time in the long run.

I understand that code maintenance can get really annoying, but that is why it’s important to head off potential problems early. If you don’t, you’ll have to take it on the chin and deal with it later. To avoid having to deal with bug-related stress, always remember to help your future self and colleagues by correctly formatting your code as you write it.

Be Consistent and Recognize ConsistencyWorking & Consistency

Every programmer has a different style, but your style needs to be consistent. Recognizing consistency in your own and others’ code will help you immensely because as soon as you notice something different than your standard code layout, you will know it is highly likely that there is a bug within that weird-looking section.

To avoid having to deal with unexpected bugs, you also need to focus on error checking. Remember that as much as you might think that your code is unbreakable, users will find ways to destroy it.

To prevent this, you will have to check the result of every single operation in your code. You have to be certain that your code can handle what it is supposed to and that it can deal with an unexpected result in the same way.

Let real people run your code. You will thank yourself for this later on. Testing will ensure that your code remains unbreakable, and what is more, you will avoid the stress of having to fix it.

Maintaining Sanity

A programmer’s life can get tough. You might start feeling lonely due to the amount of time you spend in front of the computer. Even if you talk to your friends about what you do, it is possible that they will not be able to really understand the job’s challenges. Given the hectic work environment some of us might be stuck in, this can drive one mad. Let’s see how we can maintain our sanity in this dynamic line of work.

Working for a big company can be excruciatingly difficult. As a programmer, you are just a cog in the machine and it is extremely easy to lose your sense of purpose. But if you look a bit closer, you will see that every employee has problems they need to work out for themselves.

Focus on Your Piece

If you worry too much about every little detail within the workings of the company, you might experience burnout. My advice is not to stress about everything that you see going wrong. Focus on your part of the puzzle and do what you do best: code.

Many of us got into programming because we thought of it as an art form; we were intrigued and satisfied by it. Many programmers keep files that serve as examples of good code. These examples are perfect in their structure and execution, much like a beautiful painting.

In reality, though, we will rarely be able to focus on creating such perfection. The reason for this is that we are often overworked. You cannot create a piece of art on a tight deadline. This is yet another problem for programmers today—they are working too much.

Set and Negotiate Standards

Address the problem of overwork by setting certain standards for yourself.

Remember, though, your standards may not be the same as those of other programmers. If you inherit a project, make sure to spend as much time as is needed figuring out how it works and figuring out what their standards are.

You’re Always Learning

Learning

Programmers have to constantly learn new things. No matter how many languages, standards, protocols or libraries you are familiar with, there will always be more. Every week you have to learn something new and check for updates to the stuff you have already figured out.

Tech is moving fast and you will have to be able to work under pressure. Programmers are sometimes required to work for hours on someone else's code, under the threat of losing the job. Maintaining sanity in this scenario is only possible if you focus on your goals, and for many these would mainly be getting paid, improving skills, and getting paid more.

The fact is, you cannot change the state of things in the tech world today. The Internet itself is extremely chaotic and serves millions of users on a daily basis. All of those users are unintentionally trying to break your code.

Accept that Maintaining Programs is an Endless Task

For example, social media sites are what is hot right now. Facebook has to work 24/7 to maintain its stability. Since to keep users happy everything has to seem to be running smoothly, the company has programmers working around the clock. They are desperately trying to maintain the app’s stability. The sheer number of users is huge and the task of making everything run smoothly can really make people lose their minds.

The world of programming has gone a little bit crazy by adhering to the rules and abiding by every nonsensical decision made by the executives. You may sometimes feel you have to smoke a pack a day just to stay calm because of the huge amounts of work that pile up on a daily basis—don’t.

Instead, pay attention to your mental health and do not get involved in projects that hurt it in any way. Try focusing on doing literally anything it takes to make your work a bit easier. This is where apps and tools can aid your workflow. Time management is crucial here and can make the difference between being productive despite the chaos or losing your mind.

Where did all the Time Go?

Overwhelmed

We have all experienced that moment when a deadline creeps up on us like a professional assassin. It is the worst feeling in the world, mostly because of the sense of defeat and guilt.

Let’s go through some of the important things to note when it comes to time management and see what can be done to succeed at it.

Setting Expectations

When a manager asks you to give them a timeline for completion, you must not give them just a quick estimate. Most of the time, things will turn out completely differently from what you think will happen. This is why you need to properly analyze each unit of work.

Aside from just estimating the programming time, you have to consider time spent on things like testing, debugging, and documentation. Otherwise, your estimate could be way off. Ask the manager to give you their requirements for estimation at the beginning of the project.

The next step is classifying units of work according to their type, i.e., creating specification work units. This should help you to pinpoint the types of work that need to be done as well as their distribution. A specification unit will require more documentation and meetings and less testing and debugging, but be careful not to overspecify, as this can lead to unnecessary work overload.

Now you should test how much time you need for completing the simple programming tasks. Compare your estimate with the actual time of completion. After you have done this, focus on tasks that are more complex. Break down the units of work for the complex task and then write down estimates for each of the individual units. You will notice that time management is becoming a bit more difficult as you go along, but after all, problem solving is in your blood, so you should be able to allocate the time required to finish the task accordingly.

Run an Example Project

If you really want to test yourself in terms of how much time you need to finish a certain task, it would be wise to start working on an example project first. If you think that this is meaningless, think again. Upon completion, you can even earn some money by selling your example platform. Example projects can include making a calculator, web browser, or an editor.

Working on an example project will enable you to create statistics for the amount of time needed to finish a certain unit of work. You can then compare the estimated time with the actual time of completion. You can use a project management software such as ActiveCollab to keep track and to document the progress of your example project.

Project management should help you immensely with the organization of work and time allocation. You will now notice that different work units have different priorities. Usually, the most important tasks will have the highest priorities.

Monitor and Report Your Progress

You have to permanently monitor your estimate times and report to the management if there are any changing expectations. If you are on a critical path of an important project, make sure to send out reports regularly. You don’t have to do it on a daily basis, but report once every couple of days.

If the lead programmer is not available, you may have to switch priorities and reorganize the schedule. Sometimes there will be priorities within the existing tasks, such as urgent debugging, for example. This is why, if applicable, is best to consult with the project management team beforehand and consistently report on your progress.

Having the Courage to Tackle ProblemsCourage

Hopefully, you now have a few more strategies for maintaining your sanity in the face of annoying bugs and nagging deadlines. However, in the end, it all comes down to this. When disaster strikes, you can act in two different ways. Panic, or try to find the best possible solution in an unfortunate scenario. Yes, there will always be bugs and there will alway be deadlines, but remember, you can handle them.

We are programmers and that’s what we do.

Sometimes, you might feel lost and not on the right track. You might seem to lose the meaning of it all while searching for that missing semicolon, but you are not alone. No matter how tough a job can get, there are also those moments when you’re sure of your vocation as a programmer and certain you would not trade it for anything else in the world.

While time might catch up with you on certain occasions, you will learn how to allocate it correctly. By staying ahead of time, by planning, and by strong project scheduling, you will create the much-needed space to do what you do best—solving difficult problems. So take it on the chin. With a little bit of courage, planning, and determination, you can overcome all the challenges that await.

About the author

    Oscar Waterworth

    Oscar is a writer from Sydney. He enjoys discovering new technologies, testing hardware and reading about the latest developments in the fields of software, IoT, big data, etc. He is also a regular author at bizzmarkblog.com.