Maintaining a healthy positive mindset as a programmer
Being in a positive frame of mind is so important in any profession, even more so for programmers who undergo daily mental gymnastics! Easier said than done, I know. Not only is writing code hard (whether it be for software development or data science), dealing with people can be harder. Of course I can only speak from my own experience so far, but maybe some of it will relate. This article will go over the main things that cause my positive mindset to turn negative, and how I try to overcome them to get back on track.
You overwork yourself
I wanted to enter the programming world because I found programming to be fun! It’s so good to be able to have an idea and then go ahead and build it. By doing so you can make other people’s lives easier and genuinely provide value. The downside of that, is you might end up working on things for too long. I can find myself finishing the working day, only to start working on my side projects or to study at night. I do it because it’s fun, it’s almost like being paid a good amount for a hobby, which is great. The only problem is it leaves no time to wind down and do other things. This can lead to burn out and stress. These are two things you need to avoid. They will really harm you in the long run and are unsustainable.
Suggested remedy: Always have a start time and an end time for the working day. You value your ‘work’ time and should value your ‘free’ time. Your free time is sacred. I love building things and writing code but there are other things in the world too 😄 You don’t want life to pass you by while coding all hours, no matter how fun it is! On that note, try to go to bed at the same time and get at least eight hours sleep. Always take periodic breaks throughout the day - maybe Pomodoro, or five minute walks every so often (your eyes will thank you for time away from a screen). Sitting for long periods is very bad for you. Drink water throughout the day and use a smaller cup so you have to get up to refill it. Don't skip breakfast or lunch, and try to eat a balanced nutritional diet. I found trying a standing desk helped with taking breaks, easier to move around when you’re already standing right? Might be worth considering. Try to get some frequent exercise in your down time too, it boosts your mood and your health is the most important thing you have.
You must attend scrum rituals
I really gave agile and scrum a chance when I first started in the field. It was new to me so I thought I’ll see what it’s all about. It didn’t really leave a good impression on me (maybe I’ve just been unfortunate). The daily stand ups were way too long and more like a status report to the project manager. Those meetings felt so unnatural, everyone seemed to be justifying their existence, sometimes with what felt like busywork. It started to look like these kinds of things, rather than the agile manifesto I had read. I didn’t get into programming to justify myself daily that’s for sure. It all felt a little belittling and hostile. It doesn't surprise me many others have similar thoughts that agile is fundamentally a good thing, but it's become a hindrance rather than a help. I've sat in my fair share of meetings that looked a little too much like this - containing vague requests and haphazard, irrational plans. Despite always being the voice of reason, by the end of them I had no idea what just happened much like Anderson 😆 I still work in agile teams but I handle it differently now, I’ve come to terms with what agile is and what it’s not. It’s not a silver bullet. The main ingredient in getting anything done is amazing experienced people who are team players and want to improve the product or service they’re building.
Suggested remedy: Remember why you got into programming in the first place. The answer for me is to have fun, get paid for it and build amazing things that help other people. I want to manage deadlines, costs and slackers as much as the next guy, but checking up on people daily is not my idea of trust. Always stay away from the politics, and stand up for yourself if you find yourself up against hostile people who are asking too much. At the end of the day, the doer is the most important person in the room. As a doer you hold a lot of power over the talkers, and if they aren’t nice to you they can either do the work themselves or find someone else who will put up with it right? I let those people who love their meetings and rituals get on with it, I focus on building amazing products that help others and that I’m passionate about. If you want some fun counting the cost of scrum, try running these numbers through our Meeting Cost Calculator.
You find ‘how long do you think that will take’ hard to answer
It’s a question so difficult to answer, yet asked by everyone. Entire books have been written on the subject of giving accurate estimates. The problem is it’s not always taken as an estimate, but as a commitment. I feel unless you’ve done the exact same thing a hundred times before, in a similar setting, the estimate will be wrong. That creates resentment, dysfunction and distrust after ‘missed’ deadlines. It makes people feel bad, they feel responsible because they thought it would be done quicker. They question their own ability to get things done, when it could be something outside of their own control or something unforeseen by everyone. There are many things you know you don’t know and things that surprise us when it’s too late to change course. This can lead to a very negative mood. I watched an interesting talk on no estimates that seems like a great way to work. If you’re building and improving a working product consistently, on time and in budget, why do estimates matter anyway? There is strong evidence that once a task requires even rudimentary cognitive skill, rewards and other motivators (like deadlines) simply don’t work, they actually lead to poorer performance.
Suggested remedy: Honesty is the best policy. If you’ve done something similar, use that as a starting point, and maybe double it. State your plan out loud - this will help to break down the steps and what tasks are involved. Give a range, so something like ‘worst case scenario one week, best case three days’. Don’t try to impress anyone and if you don’t know how long something will take, say so. People don’t like uncertainty, they will press for an estimate, but if you’ve never done something before how can you say how long it will take? Better to ask for time to explore the problem first, or speak to a more experienced colleague, to gauge how much effort is involved in solving it. You’ll feel much better and you won’t be pressured into accepting a timeframe you’re not comfortable with. At the end of the day, be professional, but things take as long as they take. If you ever find yourself in a disagreement, come at it from a business / economics point of view - writing subpar code and cutting corners slows things down in the long run and the costs of that can be massive. Finally, if you want to provide more robust estimates using statistical techniques be sure to check out our Agile Task Estimation Calculator.
You feel like you’re not good enough
This is referred to as ‘imposter syndrome’ and it affects everyone I think. Sometimes you get a negative feeling that you simply don’t know enough to be good. What I’ve seen is that programmers of all types are looked to for guidance. They are seen as the experts, the problem solvers and the clever people in the room. So what happens when the expert is asked a question they don’t know the answer to? Or asked a question others think they should know the answer to? They feel like a fraud or unqualified for their position. These feelings make you doubt and question yourself as to how good you are. This is true of newcomers and veterans alike, I imagine veterans have become better at handling these thoughts, but not always. I think when you arrive at a point where you’ve built some projects that others have used (production code) it helps with those doubts. You have concrete evidence that you can code, you can solve problems, and you can build working products. You might not be an expert at everything, but you know enough to get things done.
Suggested remedy: Remember no one can know everything. Even experts in every field forget or don’t know something from time to time. Work hard at filling gaps in your knowledge - if you don’t understand something, read up on it. If you work alongside someone who knows way more than you do, learn from them. Never stop learning new things whenever you can. Staying inquisitive is better than assuming or pretending you know everything. It is this motivation to learn new things, and find solutions to problems that gives you immense worth, not pre-existing knowledge.
You are no longer learning anything new
At the beginning of a new role, learning is the main activity. You might be learning a new technology stack, a new programming language or a new way of working. This process of initial learning can last up to a year I've found. You pick up small bits of information until eventually, there isn't much that happens which surprises you. You reach a competence level in a role where you know how to solve everything (almost everything). In a good organisation, you'll be encouraged to try new things, learn new technologies and undergo any training that can help you improve professionally. In a bad organisation, you won't. Regardless, both of these situations can still lead to you feeling negative. The reason for that is no matter how much learning and development you do, if you're not using that new-found knowledge on a day-to-day basis, it won't be fully realised. Say you learn about cloud computing services with AWS, but your organisation uses Azure, you won't get to use that new skill. Was it worth learning though? Absolutely. You have a new valuable skill, but to use it day-to-day in a professional setting, it might require you to change organisations. Even worse is the scenario where your organisation doesn't encourage learning new things. I think of this erroding the value of your skills the same way inflation errodes the value of money. You see, whilst you're working for an organisation that offers no time for learning, they're gaining your portfolio of skills, without giving you the time to grow that portfolio. Over time, your portfolio becomes less valuable - new technology emerges, updates are made to existing technology and frameworks, and old skills become rusty. Some may argue the portfolio should be maintained on your own time, I disagree - any organisation you work for should be very interested in the state of your skills portfolio and actively help you to grow it.
Suggested remedy: Always keep your skills portfolio healthy and growing. Continuously learn new things whether it be via online courses on platforms like EdX, Coursera or YouTube, or reading a technical book. The more knowledge you add to your portfolio, the more marketable, valuable and competent you become. Knowledge certainly is power, but it can also improve your mental wellbeing, boosting your self-confidence, self-esteem and giving you new directions and opportunities. If you're in an organisation where you're not encouraged to learn new things or you feel locked into a particular tech stack with no room for growth, consider finding another organisation or another role which does offer that support and a new challenge.
You don’t have anyone around you to turn to for help
Programming is labelled as a job for introverts. However programming is very much a team game. Think about how many times you search Google or Stack Overflow to find insight and guidance - you’re consulting with the community each time. The problems that these places can’t help you with, are the problems very specific to the project or place you’re working at. You might find yourself at a loss when you face these issues, I certainly have done. You have to turn to other members of the team with internal knowledge of the company to solve these problems. On the odd occasion, particularly smaller projects whilst working as a solo developer, there is no one to really turn to. In these circumstances, I’ve had non-technical managers to turn to, but they can’t really help you fix issues within the code base. I think there should always be someone you can go to for technical guidance and support. This is true whether you are beginner, intermediate or advanced. Just because you might be advanced in most areas, doesn’t mean something won’t come up that makes you feel like a total beginner. In most cases, I’ve been fortunate enough to have someone around. On my first real project, I worked alongside an amazing senior developer who could talk the talk and walk the walk, and would always be available to guide me. When that’s not the case, it can leave you feeling isolated, with no one to turn to for support and therefore unable to deliver what’s being asked. It can make you feel like quitting, because without a mentor of any kind to guide and support you to the next level, you lose direction and focus.
Suggested remedy: Remember you can’t do it all by yourself all of the time. As said before, be honest. Let it be known that you need support on something - and if you don’t get it then it then offer two choices. Either the ask is abandoned because you tried but can’t see a way to do it, or you can carry on trying for a little longer with no guarantee you can get it done. Finally, if you feel like you have no mentor to learn from and no support at all for a long period of time, the best thing to do might be to leave and find somewhere that does offer those things.
I hope this article has given you ways to keep your mental and physical health in shape as someone who writes code professionally. There are so many positives to programming, it’s like no other activity, a mixture of art, creativity and science that can bring real joy to those that practice it. Nevertheless, you need watch out for the negatives listed in this article and work to balance your pursuit with your health and life. Code runs the world, and I think the demand for enthusiastic dedicated programmers is only going to keep going up. Not only will they need to learn the technical topics, but also topics such as these. It will hopefully make programmers realise their worth and to prioritise their mental and physical wellbeing. If there are any ways you use to keep a healthy mindset or overcome certain negatives, let me know in the comments below.
Here is a recap of all the suggested mindset remedies mentioned in this article:
- Always have a start and end time to your working day
- Respect your free time
- Do something other than programming in your free time sometimes
- Don’t neglect exercise - your health is the most important thing
- Remember why you got into programming in the first place - for me to have fun, get paid for it, learn new things and build amazing stuff
- Be honest and professional when giving estimates - but admit if you can’t say how long something will take
- Stand up for yourself if you’re being made to accept a timeframe that is unrealistic
- Remember no one can know everything
- Your motivation to find solutions to problems is what gives you worth
- Stay inquisitive and learn new things whenever you can
- Keep your skills portfolio healthy and growing
- Remember you can’t do it all by yourself all of the time
- If you don’t have a mentor or any support, consider moving to a place that provides those things