Haha, I relate with everything in your post! Here are some things that work for me:
The Pomodoro Method is a popular productivity tool among programmers. It’s not for everyone, but I think it’s especially helpful if you have trouble focusing on tasks. I use it everyday when I first sit down to work, and it helps me get started. But after a few hours I get my own rhythm and don’t worry about the timer anymore. While at the beginning of the day I want to take too many breaks, later I don’t take enough breaks it seems! Maybe it will help you.
My addiction is youtube. It’s really bad. My goal right now is not watch any videos during the day, and then after dinner when I usually don’t code anymore I can watch as much as I want, guilt-free. That usually works, but it’s still a struggle. I also find that keeping good coding music playing the whole day helps, because I’d have to turn it off to watch a video. It just makes it annoying enough to keep me from mindlessly navigating to youtube.
I’m also a major perfectionist so I can relate to that. I much prefer working on projects to doing tutorials, but when I’m working on a project it seems to never get finished because there is always something not completely perfect. But I know it’s better to just move on to something else, otherwise I would never learn new things. So just take a chance. Building projects is fun and (I think) the best way to learn. Start small with projects that are 100% within your current ability. Then move up from there with new confidence. This forum will help if you ever get stuck.
Thank you, Thank you, Thank you.
This was very helpful. I will look up the Pomodoro method. I actually have a google home so I can use that to set a timer and play the music. I’m also going to try and not have any expectations on when I want to learn certain languages by. I feel like I get too caught up in I need to learn this in 3 months instead of just focusing on each step and mastering it. Thank you again for these very helpful tips.
Glad to help!
Yeah, don’t worry about how long it takes to learn something. Just make a little progress every day, and you’ll get there.
Also, mastering stuff is important (especially for the fundamentals.) But for us perfectionist-types, it can keep us stuck in one place for too long without moving to new things. A balance is needed, I think.
Anxiety victim here. o/
Start with small amounts of learning every day. If you have a focus problem, try to do 5 lessons daily, and that’s all. If you set huge goals, like 30~40 lessons you can being frustrated with yourself. With time, if you get more interest in the subject, you will improve your pace without having to “force” your mind to do it.
Try to avoid tv and social network as much as you can, because they work like “avoidance” for your brain. If you are interested in self help, I would suggest “The Worry Trick” from David A Carbonell. It’s helping me a lot.
Stay strong and good luck.
Hello @jacobolenick ,
What are some ways some of you cope with distractions and motivation? How do you stay focused on the goal at hand.
I use “deep work”(by Cal Newport). I currently have a non-coding/non-programming job, so I have to start at 5:00 am and finish by 6:30 am.
What I do:
- I keep a journal (work log)
- I plan what to do at least one day ahead
- I have sessions (a group of tasks that must be completed within certain minutes)
- If a session has started: *no distractions are allowed
- one and only one task at a time: no multitasking
The idea is to achieve the state of “flow”:
In positive psychology, a flow state, also known colloquially as being in the zone, is the mental state of operation in which a person performing an activity is fully immersed in a feeling of energized focus, full involvement, and enjoyment in the process of the activity. In essence, flow is characterized by the complete absorption in what one does, and a resulting loss in one’s sense of space and time.
3m earplugs (the orange ones)
What I do outside the deep work sessions:
I do “structural” reading of CS books:
The first stage of analytical reading is concerned with understanding the structure and purpose of the book…
- I draw finite state diagrams:
A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems.
Because sometimes is difficult to focus when I’m uncomfortable.
I can relate to that, one trick I use, is work in something fun:
I’m following this tutorial: https://avikdas.com/build-your-own-raytracer/ , but using APL, a finite state machine and Python.
This is not a project that can be used to get a web developer job: nobody uses APL or SMC (finite state machine) in web development, the Python code surely will be awful etc.
But is fun and relaxing. If you only write code to “get a job” or to “impress a recruiter”, you are probably distracted (and stressed) by that and that can be really tiring.
Coding something fun gives you the opportunity to forget about unemployment, the future and all the things that you cannot control. Also allows you to appreciate that coding is valuable whether you can get a job or not.
Cheers and happy coding
I’ll try to address the two key parts of this post that stand out to me.
As am I!
I’ve tried a few public methods out there (like pomodoro), but found my own usually works best. I consider learning just like getting good sleep. (which I also struggle with, and take steps to set myself up for “success” )
Don’t watch youtube if you find yourself watching a bunch of other stuff, or getting distracted to much by it. If you find it hard to focus on the video at hand, watching videos might not be the best approach.
I personally rarely watch programming videos with any serious intent to learn something. I might watch a short video that overviews a technology I’m trying to learn (like 5 minutes) or listen to a talk while doing something else, but I never dedicate myself to learning through videos.
I also try not to go on twitter, as the entire platform is designed to get you distracted. Its fine to give your mind a break, but take steps to prevent it from “creating breaks”. Turning off notifications, or moving your phone away from where you are will at least give you a sense of how much you reach for it.
As I said I put myself in the best possible position to learn.
- If I want to learn something, I read about it a bit to see if its even worth learning.
- I sit down with a short goal in mind, and setup my tools, workspace the same way I always do. This isn’t to learn these tools, but rather just get a familiar groundwork and “in the mood”. I usually build a github repo, install npm dependencies, tooling, setup my editor, start up some music, close tabs that might distract me, and be physically in a place with minimal distractions
- I dive right in as fast as possible, with the goal of getting as much done as possible in the shortest amount of time before I get distracted or bored. Odds are if I’m learning something new I’m going to run into problems, have issues, and not actually finish everything 100%. Thats ok, that is usually my goal!. This brings me to my next and more important point.
This is not the right attitude when it comes to learning programming, failure is the best way to learn programming, being scared of it will prevent you from learning to the best of your ability.
I have a saying “Failure is a state of mind, not an actual position”. If you ask yourself why are you scared of failing, you usually come up with a version of imposture syndrome or you believe you need to be some kind of genius to be a programmer because its not easy, and that view is just plain wrong. Programming is hard, but I believe anyone can do it once you have three things: time, grit and an internet connection. It might take one more time, and more grit, but that doesn’t mean they can’t do it.
The ultimate failure is if you give up on yourself. Keep bashing your head against the compiler, googling all the errors your getting, debugging your code, and fighting the bugs. That is what experience is made of. You can fail 500 times and learn more than if you succeeded the first time. Failing 500 times means you learned 500 ways to fail.
As long as you can stick with it when the going is getting rough, you will learn programming, heck learning to deal with the “rough” parts is basically what programming is beyond syntax haha.
Go out, build something, stumble, fall, fail, and get back up and figure it out.
Just one more distractible person here. 'bout 40 years ago (BEFORE NIKE) I asked myself “How do people who have self discipline do it?” and recalled that when asked, they would say stuff like “I just do it.”
For me, I realized it meant yes, looking at a clock (now I can use a timer) and … JUST doing IT for 10 minutes. Nothing else. Not getting a snack. Not looking at somethign over there. Not … not anything. BUTT IN CHAIR and GET STARTED. (When it became Nike’s slogan, I laughed…)
Fear of failure … it’s not a competition. Nobody is watching me do this. I just need to know how to do it. I don’t need to be the best. I just need to get reasonably good, and that takes practice and learning.
It took me almost 10+ years to “get it” with this whole motivational and procrastination stuff.
I am exactly the same as you. Always distracted by new things, so I learned a bunch of stuff but never focus on one thing long enough to be exceptional. Then comes procrastination, knowing that I have to do something over again wasn’t thrilling for me and then anxiety, fear of failing all come crashing down.
It was only a few years back that I had to stop this insane cycle of “flash” learning, procrastination, anxiety and failing. By this time, I always had a somewhat a taste of what it is to be successful.
So to get that back, I slowed down and recall what had happened in the past 10 years that made me successful, write them all down and look at it from a larger picture.
1/ Cut off everything that gives you pleasure. Whatever that stuff may be, TV, video games, YouTube, etc.
2/ Dedicate yourself to one craft and learn a little bit each day. If you’re new, you need to count by week.
3/ Forget about the word failing and replace that with something positive. Be it feed back, critique, positive motivation or whatever. Redefine the term failing with something positive.
This was not good enough for me to get back to being successful. So, I dig deeper and further.
4/ Take every opportunities you can get to exercise your muscle and forget about how much money you can make in comparison to what “industry standard” says.
5/ Socialize with people in all area of discipline.
6/ Be patience and don’t rush. If it takes you a 3 months to learn CSS than do so. It is better to have quality understanding of what you’re doing than some vague memories that you can.
That’s what got me through around my first success story.
I use some own technics.
You can divide development into 2 parts: web development and “something you like best” - game development, data parsing, the super project of your dreams, it doesn’t matter.
The first hour, or one and a half every day, do the first part - web development. Then you give yourself a reward - the second part! And the brain will be happy to work more without boredom and distraction, for the sake of a reward. The second part may not be limited in time, but it is better to monitor the condition and not force yourself beyond measure, otherwise desire will disappear.
No need to believe in willpower. Most drop out of engineering because of constant pressure.
If you are very tired or high stress - you can swap parts. At first, pleasant training, then a little ordinary.
I came up with this on the basis of lectures on psychology. Use it.
Here is some stuff that works for me:
- Setting ridiculously low goals (like study for 5min)
- Having a clearly defined to-do list
- Pen and paper next to me so I can write down and random idea and get back to the task at hand
- Blocking websites via browser plugins
I also recommend this article: https://tim.blog/2013/11/03/productivity-hacks/. It’s titled “Productivity” Tricks for the Neurotic, Manic-Depressive, and Crazy (Like Me).
You’re always going to need some productivity habits to be a professional, but it can be as simple as finding a routine that “works for you”. Whether that means assembling a litany of “lifehacks” or just recognizing productive and non-productive behaviors on your own or with assistance, find your own rhythm. If your rhythm is mercurial like mine, with crazy productive weeks and slow “off weeks”, work with it. Find something constructive to do with your ebb and flow, don’t try to box it into a single cleverly optimized routine.
I find Pomodoro is completely ineffective for me, and I just have to accept that it takes me a variable amount of time to “get in the zone”. What keeps me productive ultimately is that I only bill for hours I spend working on the actual problem, not all the tinkering at the edges.