Things I wish I knew when started to code
Many people read about workforce productivity a lot nowadays, maybe even tried something, but barely you can find what really works. So I tested a bunch of different stuff and wrote my experience down below..
What you can find here is my best code-learning practices.
Not so long time ago I started to work at my first company — Weblab Technology — as a frontend developer and almost immediately I understood that people have different styles and tips during working process. I was almost a total newbie and wanted to grow as fast as possible, like other guys in there. These tips are mostly for abecedarians:) just like me, but maybe even a hundred-years-of-experience-huru can find something useful here.
There are two important things to take care if you want to improve your coding:
- What you do.
- What you think.
Things you do
Most of the stuff that boosted my productivity was not some fancy philosophy but certain habits. You don’t know for sure will it help you or not, just need to try. But when does the moment “i know it’s working” come?
If you go to a gym to lose weight or build some muscles and finally make crush like you, what crucial thing do you need first? An exercise plan. Some of them will fit well to a very particular person like you, but some of them won’t. How would you know that plan’s working? Just follow it. Not a couple days, not a week, not even a month. Three months is the bare minimum. Maybe it won’t get the girl you want, but it’ll definitely push some real progress.
Brain is just like a muscle: you need to wait to be sure that results aren’t random. Otherwise it would be possible to lucky roll the dice.
Well, brain is faster than muscles when it comes to changing. But still, you need to wait a lot. Just follow the stuff below for at least one month.
You know about it, your dog knows about it, everyone does. But what is probably missing: in the minutes of rest you need to change your activity style. If you just finished sitting at desk — get up and do some exercise, let your blood flow. Try the pomotodo app.
Speaking of pomodoro: 5 minutes of meditation while having a rest is a good start for those who never tried it before. Really, give it a go. And may peace be upon you:)
Best practices of problem solving
Just like we have best practices for coding, there are ones for problem solving. Some of the “rules” below may seem trivial, but this guide is for newbies, remember?
- “Reject your believes”: you can’t understand why your code isn’t working, even if everything went fine? Some library isn’t working as it should? Why? If something doesn’t work — doubt everything, even yourself. There are no “O.K.” pieces of code and no magic under the cut.
- “Locate the problem first”: before jumping into some conclusions about solution to your problem, go check it first. You need to fully understand a nature of the problem, like where does it go and why.
- “1 thing = 10 min”: everything can be sliced into abstractions. For example, we need to log something in the console. To do so, we should know what logging and console means and what data to log. So there are three abstractions: logging, console and data. If you think about one abstraction more than ten minutes your thoughts start to stagnate. Go rest for a minute and return fresh.
- “Slice your task”: even big tasks seem less complicated if you slice them to smaller pieces which are much easier to solve.
People were not made to sit behind their desks all day. So maybe they supposed to stand? Helps a lot to concentrate.
Boring and important stuff
Eat healthy, sleep enough, exercise. And you must try a cod liver oil!
Music is a great tool to enter the flow state, but not all of it’s great for coding. Lyrically songs are distractive. What you need is a rap beats or electronic music to synchronize your thoughts with a rhythm. Also try something more abstract. White noise is also a good option. Go on, find what sounds best for you.
Thinking that you’re an amateur
Don’t be a newbie, even if you are. No matter how little you know you still can be a professional. Try to solve the puzzle by yourself first. You’ll see that you can do a hell of a lot more than you’re thinking. But how much time you should spend trying to beat that hard task? Take at least 15 minutes and if you’ll see no progress — ask for help or go rest for a minute or two. Act, instead of just sitting there, thinking that you can’t do anything. “Do or do not, there is no try.”
There are many things to make you more productive, but switching attention between a screen and a keyboard is totally not one of them. Also typing without looking is a great joy. I prefer klava.org for that purpose.
Hobbies beside programming
Pick one or two hobbies that you’ll be serious at. If you have much experience in completely different fields it’ll help you to look at your work from another angle and bring some fresh ideas. Also makes your live fascinating.
Follow your needs
Remember that day when you just didn’t feel like working? Maybe you forced yourself to concentrate on your job, but it still won’t work out anyway? That’s a sign you should get some rest and focus on something else. Often just a simple change of a project or learning a new technology that you’ll need later works pretty well. But beware, ‘cause there is an extremely vague line between “I can’t” and “I don’t want to”. Where you draw that line is completely up to you.
Devil is in the details
“Small is the enemy of big, just like perfect is the enemy of good” — well known aphorism, right? Most of the time relatively insignificant stuff is harder to get done than bigger and priority tasks. So just leave small items for the time you finished with all the serious ones. Don’t waste your time.
Improve your brain memory
You constantly need to remember huge amount of information, so just write down everything is not an option. Mnemonic techniques can help you with that. My favorites are “Fibonacci repeat” and “context making”. That’s what i call ‘em.
- The first thing is when you learn something — repeat it not only when you’ll be in a good mood for that, but on different periods within a timescale. For example: you learned a new pattern. Repeat main points after half an hour, then after an hour again, and after three hours one more. It’s just a natural way for a longer-lasting effect on memory.
- The “content making” is a bit more complicated: need to tie info that you want to keep in mind with something that you remember perfectly. Familiar places are my favorites. For example, we all have ways home or to stores, roads that we all remember fine. Just bind a new info to an old one. “New” data will be for principles of OOP and an old one — our imaginative route from home to the work. “Encapsulation” will be our starting point: our home, a physical building. We walk by the road and get to the post office that we pass by every day — that’ll be an “abstraction”. Then we go to the shop to get some coffee — that’s “inheritance”. And the final destination, our office — will be a “polymorphism”.
Not so hard, ain’t it? You can do this with every kind of information data you need to memorize.
Explain stuff you don’t understand
Explaining things that you’re not good at to someone else it’s a great way to give a fresh look to an old subject. There is no need to seek a victim of your stream of consciousness every time — you can also talk to some puppet or a desk (use only if all the psychiatrists are away).
Turn off all your notifications and hide useless info: you don’t need no ballast.
Don’t work too hard (if there is no critical need)
Think that tomorrow you can just have some extra coffee and be cool? Don’t fool yourself. What you really doing is taking a credit of energy from your future self: you will need to pay it back.
Don’t play guitar like it’s trombone
If you are learning some new technology (a new language, for example) you need to fully understand how it meant to be written. Writing python like it’s C# (and vice versa) is a pretty bad idea. Every tech out there have it’s goal and own ways of achieving it.
Have a good relationships with your colleagues. We’re all humans. It’s just more productive and joyful when y’all like each other.
Things you think
What determines will you overcome the challenge or not — is not the struggle itself but what you think of it. All coders who constantly learn something new may face anxiety, frustration and other mental junk. How you deal with it is how successful you’ll be. Can’t control what you feel, but have to pick correct reaction to that feelings.
Use your impulses and emotions correctly
Your feelings are a big thing: can let you down or pick you up. But most people are just throwing themselves into a dangerous storm of emotions and lose concentration or trying to look aside from what they feel. Both options are not effective in terms of reaching goals as letting your feelings move you forward. Emotions are an energy, a key to your creativity, if facing the right direction. Anger can be transformed into concentration, overwhelming happiness into enthusiasm and so on.
Some people are pushed by happiness, just like in the movies. But there is a lot of folks out there that get really productive because of fear, anxiety or general stress. Find what works best for you.
Keep an eye on yourself
Be aware of your mental and physical states (maybe you need to renew your mana or health?) If your physical and emotional background letting you down — fix them first. Body and mind are your main tools and work can’t be done with them broken.
Let it go
If a deadline or task is paralyzing you with fear and anxiety — let your feelings go. You can’t jump above your head. The best you can do is to stay calm and be concentrated on job, not feelings. What really matters is to do all that you can. How many “bloody important” fails you’ve been through already?
Make the hot water your comfort zone
All people have flaws. Naturally we’re trying to avoid them so we don’t feel bad. Don’t run, face your fear. Admit that progress won’t come easy.
Don’t think of your job as a torture
Many advices here are about saving and managing your energy, but where you find it in the first place? In moments of rest? Maybe. But you also can get energized by work if you think positive. To joy or not to joy is totally up to you. If you can program this complicated machine then, maybe, start program your brain?
Clean up a mess in your life
How can you concentrate on some funky codes if you have a pure chaos instead of life? Start fixing everything that troubles your mind: relationships (especially in family), your environment etc. The problems will not go away the same moment we start to deal with them, but it’s much more simple to concentrate on workflow if you just clean up the mess.
Code is for humans, not machines
Always remind yourself that code you’re writing is meant to be read by someone else. The best code is the one easy to understand.
Stuff above, i wish you found it useful, however, do not over-concentrate on these funky rules and be yourself. Stay frosty!
by Alexey Tumanov, Frontend Developer
Dima Dmytriienko, editor & Marketing Specialist
with help of Oleksandr Knyga, Software Engineer