Are you often in a frustrated mood? Do you think sometimes that you don't meet the deadlines? Are you worried about not performing well, or getting negative feedback, or that is too big for you? Do you sometimes suffer anxiety or stress?
I've been suffering an anxiety/panic disorder for almost a year. I'm not gonna get into the details, is not a happy story and is somewhat complex, but the point is I've learned a lot on the way. I'm writing this article, both to remind myself and to tell you what have I learnt and found out during this time.
Keep in mind that these are my points, it may work or not for you. Do you have any other you wanna share? 😃
1. Focus on success rather than failure
Programming is an activity that it's about constantly having a problem and solving it. That makes it a very risky activity. How many times did you get stuck at some point? And trying to find the reason of a bug? Probably you get to sleep and other day you solve it quickly, right?
We usually have deadlines, which makes us to come up with a delivery plan. In addition, we expect the software we build to work flawlessly, and the the users of the system we're building to like it.
As you can see, there are many things that can go wrong (and will). So, what can we do about all that?
Well, we can't do anything to prevent this to happen. But instead, we can:
- Don't blame yourself (or others): Remember you do everything the best you can, so just don't punish yourself when you get stuck, don't meet a deadline or whatever goes wrong. Probably the reason was in a bad planning, or short time.
- Instead, congratulate yourself for whatever tiny thing you did or tried. What I usually do is to by the end of the day, I write 4 or 5 things I did in a post-it and stick it somewhere around.
- When something goes wrong, think on what you tried to do instead of the failure itself. Then, you could do a retrospective on yourself or with your team, to see how to do this better for the next time.
2. Build empathy within your team
Development is a team sport. One alone just cannot do much, plus it can get boring. So try to be as much comfortable as you can with the team you're working on. Any social skill you can apply here will be good. Here some are my tips:
- Learn to take/give feedback: Nothing can be more annoying than someone putting down your work. So don't be like that and give constructive feedback. One way is to apply the Sandwich model (good, bad, good) when you must say something unpleasant to someone. It'd be good for you if you can ignore non constructive feedback, or do the sandwich mentally yourself afterwards 😃
- Practise team building activities: It can go from doing sport, going for lunch... anything
- Thank someone everyday: This is a positive thinking technique that could apply to anything in your live. Send a message/email/whatever to a colleague thanking him/her, even for very small things, such as "Hey John! Thanks a lot for helping me finding that bug before!"
3. Manage your time and priorities
Nowadays life goes fast, so fast that we go faster with it. And we end up in a routine where we try to do too many things that we can manage to do. That makes us being really over-demanding on ourselves, leading to frustration and anxiety because of not completing the tasks, or doing it under much pressure for quite some time.
You wanna prepare a talk, attend a meetup, keep your Open Source work, write on your blog, stay healthy practising sport, meet with friends, spend time with your family, run some side-project... and you work full time as well. Be careful, being too ambitious can turn against you.
What can we do to about it?
- Slow down and push the break: Minimize your task queue. Keep in mind it is better to do 2 things well done, than 4 badly/quickly done.
- Enjoy what you do: When you slow down, you have more time to pay attention to what you're doing, making it be more enjoyable. That's what mindfulness stands for.
- Apply a time management technique: Personally I (kind of) use Pomodoro. The point is to enforce breaks to move and distract yourself in order to don't spend hours on a task continuously.
4. Keep up your motivation
I'm not a fan of Steve Jobs, but he said it very well:
"Stay hungry, stay foolish"
There is nothing more wonderful that being motivated on what you're doing. It makes you love your work and spread that to the people of your circle.
Keeping yourself up to date and involved in the community of your technologies is a must for keeping up your motivation. You'll grow, which makes you feel productive. You'll socialize and meet new people. You'll find people you admire and people who admire you, and that is really beautiful.
You could feel like the following tips are against the point Manage your time and priorities, but they are beneficial as long as you make sure you don't overdo, and set a limit for these:
- Do Open Source!: Now is easier than ever, since an open source guide has been created by github itself and lots of experienced OSS devs. I've started doing it and got many good feedback from my projects users! Not to mention the feeling when you're doing something other people find useful
- Go to Meetups and conferences: You'll meet lots of people physically, which opens you a lot of doors and keeps you connected to more communities and its ecosystem. If you're brave enough to speak in one, you'll get a great feeling afterwards, so go and try and see what it feels like 😉.
- Build side projects: It can be anything, such as building dummy apps, organizing events, sharing knowledge, creating libraries, etc. Some things I did is to create this blog, become an Egghead instructor, create Alicante Frontend meetup group with some friends, contributing to Open Source...
There are really a lot of ways to be happier and better as a developer, and they come mostly from the psychology side instead of from being a successful developer. Here I told you some of my tips, I'm looking forward to hear yours!
If you like it, please go and share it! You can follow me on this blog or on twitter as @alexjoverm. Any questions? Shoot!