Less noise, more data. Get the biggest data report on software developer careers in South Africa.

Dev Report mobile

Beating Bad Habits that Stunt Your Success

27 February 2019, by Micheal Forbes

"His palms are sweaty, knees weak, arms are heavy." Eminem

I could perfectly relate to the Eminem lyric because this was exactly how I felt transitioning from being a university graduate to a full-time employee. Before I knew it I was dealing with missed deadlines, a stunted learning curve, a crippling defeatist mindset, and the quality of my work even suffered. Here's how I overcame these setbacks, and why my new habits will be helpful, even to the more experienced.

Michael_Bull-Dog-Software-Dev-Juggler_Inner-article-image-02

Since completing my degree in 2016, I've been a full-time employee at Zero One Bespoke Software Development. I'm currently a front-end developer and responsible for the UI and UX on the projects under development. We are constantly facing new and interesting challenges which allows me touch all of the different and exciting aspects of software development,like estimations, working with new frameworks, and languages.

Working full-time, I've learned, and still am currently learning, a lot about the working world. I've had to deal with struggles such as:

  • Missed deadlines: Not being able to cope with the demands and requirements of work life and, as a result, not meeting deadlines due to poor time management.
  • Stunted growth: Since I struggled to learn as quickly as I needed to, I couldn't meet targets that I set for myself to measure growth and progress.
  • Decrease in desire to learn: Struggling to adapt influenced my desire to learn. It affected my thinking and I started adopting a defeatist mindset. I figured: 'I know I'm going to struggle, and potentially fail, so why even try?'
  • Mediocre quality of work: All of the challenges mentioned, as well as others, led to a really mediocre and sub-standard quality of work.

I know that these aren't challenges that are only specific to newbies though. For experienced employees, leaving behind the old and embracing new habits can be vital in re-energising their career and love for their work. Stay seated as I talk about how I overcame these challenges through:

  • Time management,
  • Avoiding distractions,
  • Learning,
  • Embracing software development conventions, and
  • Adapting.

Here's what I mean by these in detail.

Time management

Working remotely for 2 years has taught me the importance of structuring your time correctly, but this is a big one for anyone at any point in their career to remember. Since a certain amount of freedom is afforded to developers, it can become easy to procrastinate and use the catchphrase, "I'll pick this up later". One of the worst learned habits is leaving work to flow over its deadline, and then trying to use the fire-fighting approach to beat back the flames. This always results in an inferior quality of work being produced.

Adopting this behaviour, as easy as it is, is very damaging and can lead to unintended side-effects. For instance, I became a bit lazy, would fall behind with the work allocated to me and my motivation to learn began to wane. With the loss of motivation, I found that I gave into the laziness and the procrastination even more, which negatively impacted my work and even my personal life. I effectively gave up on managing or structuring my time correctly. When I realised that I was letting my co-workers down, and affecting their timelines, I felt ashamed and realised that I would need to change things drastically to get out of my downward spiral.

I decided to set up a schedule that would make my life as ordinary as all the other industry worker bees - specifically in terms of work time: wake up, start work, break, work again, day ends. This surprisingly simple routine gave my day structure and ensured that I spent the right amount of time on specific activities throughout the day. Of course, this requires dedication and a willingness to break an old habit in order to create a new one. Since actively doing this, I've forced myself to become more industrious and my desire to learn has returned.

Tip: Set up a work schedule and challenge yourself to keep to it.

Using these author's practical techniques, you can break and create your own habits.

You can also try to use the Pomodoro technique.

Avoiding distractions

At university, I didn't really encounter a problem with distractions, because there was always a lecturer looking over my shoulder. This meant that I didn't know how disastrous they could be for productivity. My boss, Gabriel, warned me that distractions are a silent killer and that, if I didn't proactively work to prevent them, they could hamper growth and kick-start laziness.

A distraction can be anything from surfing the internet and losing track of time, to taking 10 minutes to learn random things and even playing your favourite instrument. Personally, I would see hours of potential productivity go down a YouTube rabbit hole, so getting rid of as many distractions as possible was a top priority for me.

In a pairing session, Gabriel suggested a blocker app that he was using to ensure that he didn't get distracted by the internet during work hours. This is a very helpful tool for developers - especially since the internet is where we live. I would highly recommend using one of these tools, since they do most of the heavy lifting for you while allowing you to take back your life and time.

Tip: Use a blocker app like SelfControl or Freedom.

Learning

Throughout your schooling career and as a student at university, learning is always done with a curriculum that has objectives and learning outcomes. Classes are structured and you are taught principles for learning as well as a certain way of thinking. This is not true in the workplace though. An "agile" approach to learning is expected and almost demanded: Because the industry moves at such a high pace, employers expect developers to keep up and deliver ahead of schedule.

This was something I knew about, but didn't expect to manifest itself so rapidly and with such persistence. Initially, I felt like a deer caught in the headlights because of:

  • How fast I had to learn, and
  • The sheer amount of information I had to process.

If I had to be quite honest, I haven't yet figured out a magical method or tool that makes learning easier for me. All I can do is point out that this is a challenge that should be kept in mind, and which can be prepared for to some extent.

Making sure that you're constantly learning will ensure that your capacity for learning increases, which makes you better equipped for future learning opportunities. Always anticipating a learning opportunity also aids in being prepared, because an opportunity can become a stumbling block when it is not anticipated. A practical example of this would be to compare yourself to a cricket batsman, and the ball to a learning opportunity. If you correctly anticipate where the ball is going to land, then you have the opportunity to hit a six or a four. But, if you do not correctly anticipate where the ball will be, you're likely to get bowled out.

Tip: Try to learn as much as possible. The more experience you get in fast-paced learning environments, the better you'll be equipped in the future.

Embracing software development conventions

At university, my lecturers did well to instill the importance of software development conventions in their students. As true as this is, I still wasn't quite aware of just how strict companies could be about their conventions, or the consequences they can have on maintenance, onboarding of developers, future development and other company processes. We were taught very important principles like modularity, abstraction, and naming conventions, but not about the nitty gritty like:

  • Indentation,
  • Structuring your code,
  • Constantly refactoring, and
  • Ensuring that code is easier to debug and to read.

These were all challenges I faced, and they were hard because I didn't even know how to approach them. Until a lady by the name of Sihui Huang gave a talk at the RubyFuza conference called, "Ouch, that code hurts my brain" - which I would highly recommend you check out.

She spoke about the importance of clean code and showed me the line between modular code and overkill. This was a real turning point for me because now I could clearly see and understand where the sweet spot was, which in turn allowed me to embrace software development conventions fully. Since I realised this, my work aligns more with the framework or company conventions and I don't waste as much time debugging or getting lost in my code because I don't put code where it doesn't belong.

Tip: Familiarise yourself with the project's framework and company conventions; play with them and test whether it would be easier to use them.

Adapting

In school and university, there tends to be quite a bit of hand-holding. But now, all the responsibility falls on you as an individual to successfully adapt to all the demands of the workplace. So, it's up to you to adapt and leave the university and school mindset behind.

Not many people think that adapting is an important concept to be aware of, but I can assure you that this is a key factor in determining how successful you are in your career. If you can't adapt to ever-changing requirements and deadlines or even learn quickly, unfortunately you'll be left behind to stagnate. When you can't change with your environment you'll become an average button pusher behind a desk. This is because you'll be seen as someone who struggles to grasp concepts and requirements quickly, and you'll never be put on high-stakes projects which are essential for growth.

All the aforementioned concepts, time management, mitigating distractions, learning, and embracing coding conventions, rely on your ability to adapt and change. Since I didn't want to be left behind in the workplace, I had to change my mindset. But more than that, I had to have a desire to change myself for the better. By making it a priority to learn to adapt, I've found that I struggle less when it comes to the daily challenges.

Remember that change is the only constant, and that we shouldn't hold onto old habits just because they're familiar. When deciding if I should adapt I ask myself a few questions:

  • How will my life change if I adopt this change?
  • Will this particular change affect my career path positively?
  • Will I become a better person to work with if I make the change?
  • Why is this new habit better than what I was doing?

Ask yourself these questions, and some of your own as well, to help you evaluate whether you should adapt to an incoming change. This helps you move towards fully accepting the change and making it part of your life.

What you need to succeed: The triangle of success

Okay, so this is an important learning and, if you forget about all the other things in this article, don't forget this! You can even download it here to help you keep it top of mind.

During a second-round interview at KPMG, the interviewer asked me if I had any questions and I asked him, "What do you think I need in order to succeed at this company?". I thought he was stumped because he thought for awhile and then gave me an extremely well thought-out answer. He said that there are three traits you need to have to succeed almost everywhere:

Tool_Triangle-of-Success_Inner-article

1. Attitude: Always make sure that your attitude is one that helps you and others grow

Stay positive and keep focused on your work. Make sure you work hard and exceed expectations. Get rid of ugly character traits and old habits like being rude, lazy, opinionated and unwilling to listen to other people's opinions. Help everyone around you and make sure you're a pleasure to work with. This will change your attitude and mindset, while helping you prepare you for success.

For me, this meant that I started to become more conscious of my responses and actions, because I realised that the way I carry myself can affect the way our team works together.

2. Ability: It is up to you to be willing and able to step up, complete the task and exceed expectations.

This centers around not only intelligence, but also a willingness to learn and grow. This point of the triangle focuses on how competent you are when it comes to completing tasks and assignments.

Embracing new frameworks, languages, and technologies has helped me a great deal with this, because I have had to stay sharp and focused. When you keep yourself mentally sharp, it sets you apart and prepares you for success if your abilities are called into question later in life.

3. Impact: Cultivating healthy character traits determines the impact you have on others once you've left the room.

This point deals with how people feel about you when you've left the room:

  • Have you made a positive or negative impact on the room?
  • Do you leave people wanting to work with you again?
  • Do companies look forward to having you on their team, or do you leave them with a bitter taste in their mouth?

This struck me because it's not something you think about often - nonetheless it is a very important point. In my experience, thinking about my responses while exuding calmness and confidence has helped me grow in a way that allows me to make a genuine impact in my team and company. Being mindful of what character traits I cultivate has also changed the impact that I have on other people, whether it's the first or fifth time that I come into contact with them.

These three points should always stay in perfect balance and, when connected, should form an equilateral triangle. If one point is out of balance, then all of the others are brought into question and are affected. By keeping everything in balance, I am sure that I'm prepared to deal with the challenges that I face in my work life. For example, on the topic of distractions, your attitude will let you know it is a problem, your ability should be at the level to solve the problem and the impact of the solution will affect everyone around you.

I was lucky to learn about the Triangle of Success, and it has been my secret so far. Now, I am fortunate enough to be able share it with everyone, in order to help the community grow and improve. So, there you have it graduates and experienced folk... go thrive!


Micheal Forbes is a software developer at Zero One Bespoke Software Development, based in Johannesburg. His main focus is on front-end development and he believes in collective growth through shared learning and experiences. If you'd like to follow him on twitter, you can check him out here.

Source-banner--1-

Recent posts

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.