I have this huge desire to learn programming but its stopped by me not being able to sit down and say “now its studying time” any advice is appreciated.
I don’t have a good answer for the question in the title, but for programming specifically, I’d say try and solve a problem you have instead of studying it. It’s one of those things that’s IMHO much easier to learn by trying things out. Start small. Little things you’d like to automate, annoyances on your computer, things that could be useful for your work, etc.
I find making a simple text based calculator is a good way to test your skills while learning.
Start by adding 2 numbers together and outputting the result.
Then upgrade the calculator by getting the numbers from user input.
Now you get to decide the next upgrade. Does the user want to add 3 numbers? Perhaps they want to subtract instead. Maybe the user wants to start a new calculation immediately after finishing. What about error handling? What should the program do if the user enters something that isn’t a number?Each step provides new challenges and new learning opportunities.
Make sure to test frequently. The more code you write between tests, the harder it becomes to track down bugs.
This is what seems to work for me. I built a website for a small music festival and wanted to have the same headers across all the pages. I found out that I could write the header in JavaScript and just call it on each page, meaning that updates would only have to be done to one file.
I copied the code from an example I found first, then tweaked it to suit my needs, and then played with adding and removing functions to see what they do. I then copied the format for the footer, and found a few other ways of tweaking the site with JavaScript.
I’m still a long way from being proficient, but I understand a lot more than when I started :)
One of the limitations that people with Autism and ADHD often struggle with is that it is harder than average for them to imagine the future. Without that, it is more difficult to have a vision for oneself that is different from the present and consequently difficult to gain motivation to change. It’s a form of mental blindness that is very subtle until you notice it.
Try to find ways to get really clear about the future. Define what your vision/goal is and then at the start of every day remind yourself what that is. You need physical reminders, in multiple places and forms. Objects that represent your goal, displayed in a prominent place in the home, pictures of the goal (or benefits of the achieving the goal) on your desk, a computer desktop background that is a collage of different facets of your future life, and so on.
Make it impossible to forget how awesome your life will be if you make the decision right now to open your IDE and do 5 minutes of study/practice (which will hopefully trigger your hyperfixation and turn into an hour or more). Getting started is the hardest part.
Find a way to hack your brain to make it do what you want.
Body doubling: Have someone sit with you to keep you on task. They don’t need to understand the task, just recognise when you get distracted.
Inspiration: Watch a video of someone doing a similar task. Not a tutorial, but someone having fun and showing off how they code.
Jump in: Open a development environment and start writing something. If you’re still learning, copy a small example and see if you can make it do something else.
Accountability: Tell someone what you are planning to do, and report back to them. Don’t set high goals, just aim for progress.
No distractions: Give your phone to someone else, or put it in an inconvenient place. Mindlessly scrolling is too easy if the phone is within reach.
Not all of these will work for you, but perhaps some of them will.
More difficult advice:
Get enough sleep. Programming is something that takes a lot of focus. If you are tired, you won’t learn as quickly, and you’ll make basic mistakes that are hard to track down and fix.
Every time I’ve done programming while tired, I’ve started the next day by reverting everything I just changed and doing it properly.Don’t start the day with social media. Social media is an instant reward system. When you start the day on your phone, you condition your brain to crave instant rewards. Programming can take quite a while to get the reward feeling, and it’s not as strong as social media rewards.
Let yourself get bored. It hurts. No-one likes being bored. But boredom is often the precursor to creativity. With all the distractions of the internet, boredom can be hard to come by, but it is also the strongest motivator. When you are bored and have no other options, you’ll find that there are many mundane tasks you’d rather be doing.
Don’t worry if you can’t manage any of these. I’ve been trying for years and haven’t managed any of them consistently.
Make it into a structure with a fixed position in your day - like for example every day after dinner, at least 30min. Best combine with a reward after: after the studying is done, you prepare a nice warm goodnight beverage for yourself and enjoy some mindless scrolling.
Also, for everything new we add to our day we will lose this time for other activities. I sometimes have to check back and make sure my planned activities actually fit into the 24h of a day - how is that for you, do have time enough to learn programming? What else do you have to give up on?
And, I’ve found making less of everything really helps. So what, I only knit 1 row a day, write only 1 page, but if I can do that consistently for months in a row it’s a lot better than forcing myself to do several hours of something during two days and then give up.
Ritalin.
I’m afraid that can only be solved by discipline. Even if you stay on your seat doing nothing and fighting your mood, consider that a session of work.
Yeah, making habits is hard.
Get a cool project to build. I do advent of code (it’s a tough one though, so don’t expect to get very far. The first few days are easiest.)
Another project I build that I liked was: Build a green window with a grey square (Bunny in a field) Make the square move around randomly Make dark green squares (plants) If the bunny comes within x distance of a plant it goes there to eat it.
Then I started complicating things with generating random ponds the bunnies couldn’t cross. Creating a fox that ate the bunnies. Bunnies procreate. Etc.
I liked that project and I learned a lot while building it.
I usually just set like a time period that I need to study in, like let’s say 8 hours (with small pauses in between an hour or two).
PS: I’m not autistic, but I do believe I have some spectrum symptoms. I am getting diagnosed in a few months.
I taught myself, but I had to find the right way to learn- it had to be visually stimulating and engaging. I can’t do the Udemy style video courses. I’m not sure if it’s the same as it was, but I super enjoyed Codeacademy. The courses were all interactive and visually showed me what I was doing. They were also in small chunks and built upon each other. Also, know that while most languages appear different, they’re all fundamentally doing the same thing, so try to find one which feels fun for you; once you’re proficient with the basic concepts, you’ll start seeing them in every language!
Don’t study too much, just take a small problem (e.g. interest calculator) and start making it, it’s way easier to learn that way (for me at least). Don’t make the tasks too big and ensure the end goal is clear. You can always add new things later after you’ve finished your original idea.
And another piece of advice: it’s better to finish something small than to get bored and disinterested making something bigger.