Programming with bad memory and low executive functioning?

Page 1 of 1 [ 15 posts ] 

dynamitetalks
Emu Egg
Emu Egg

Joined: 17 Dec 2017
Age: 33
Gender: Male
Posts: 4

03 Jan 2018, 11:35 am

I've a hard time learning and doing programming, been into it for two years on/off now and I hardly have anything to show for it. I'm a slow learner, bad executive functioning and sh***y memory plus I shift interest in programming every week (this is one issue I've tried to eliminate for the past 14 days and just stick to 1 area and 1 languages)

What are some strategies you use to become good with programming? I take a lot of notes btw! a lot!

If you do have a bad memory how was your process of learning and how good did you become in 1 - 3 - 5 years?


my stragtegy this month is doing a lot of hands on work, small exercises, but get to know the cmake framework by heart.



Aristophanes
Veteran
Veteran

User avatar

Joined: 10 Apr 2014
Age: 43
Gender: Male
Posts: 3,603
Location: USA

03 Jan 2018, 12:06 pm

What it sounds like to me is that you're doing a lot of exercises. I would recommend coming up with a long term project instead. I don't know what languages you know, but come up with a simple program that can be expanded upon over time with new features. If you're having memory issues perhaps that project should be a wrapper library of common programs/functions/etc you have trouble remembering-- that'll allow you to name said commands your own way which should help your memory and thus productivity. For executive function issues: try making a flow chart or diagram of how all the pieces of the program are supposed to fit together, that'll allow you to visually refresh your memory if you get side-tracked and come back later. Also you can set a timer for every 10-20 minutes or so and every time it goes off look at the chart to make sure you're working on the appropriate thing and didn't get side-tracked. Any ideas you come up with that may side-track you just write them down in a notepad document and come back to them when the main tasks are complete.



EzraS
Veteran
Veteran

User avatar

Joined: 24 Sep 2013
Gender: Male
Posts: 27,828
Location: Twin Peaks

03 Jan 2018, 12:17 pm

Well I sympathize. I also am a slow learner, have executive dysfunction and a sh***y memory. The only thing I have ever come up with for memory is making notes. Ofc the executive dysfunction interferes with that. Hope you find some better help good luck.



anti_gone
Sea Gull
Sea Gull

Joined: 18 Jul 2017
Gender: Female
Posts: 237

03 Jan 2018, 4:48 pm

Aristophanes wrote:
What it sounds like to me is that you're doing a lot of exercises. I would recommend coming up with a long term project instead. I don't know what languages you know, but come up with a simple program that can be expanded upon over time with new features. If you're having memory issues perhaps that project should be a wrapper library of common programs/functions/etc you have trouble remembering-- that'll allow you to name said commands your own way which should help your memory and thus productivity. For executive function issues: try making a flow chart or diagram of how all the pieces of the program are supposed to fit together, that'll allow you to visually refresh your memory if you get side-tracked and come back later. Also you can set a timer for every 10-20 minutes or so and every time it goes off look at the chart to make sure you're working on the appropriate thing and didn't get side-tracked. Any ideas you come up with that may side-track you just write them down in a notepad document and come back to them when the main tasks are complete.


That's right. Exercises are only to get started with something. After that, you should always work on projects.

Maybe this site could help you to find useful open-source projects to work on (haven't tried it myself):
https://www.codetriage.com/

Also, programming is not about remembering everything.
First thing: Use a good IDE like the ones from Jetbrains. Good autocomplete helps a lot.

Second thing: You have to know where to look things up. Most of the time, someone's already posed a similar question that you can find on Stackoverflow (I'd say stackoverflow is my number one resource in programming). Being able to read manpages is also very important. If you're doing web development, the w3schools tutorials are very useful.



Ichinin
Veteran
Veteran

User avatar

Joined: 3 Apr 2009
Gender: Male
Posts: 3,653
Location: A cold place with lots of blondes.

03 Jan 2018, 10:50 pm

Cant really understand your situation since i'm neither, i started out learning Basic on the C64 and under 10 years i was writing scrolltexts on the C64 (ASM) and coding on the Amiga (AMOS) then moved onto PC with VB and C++. Lately i've done .NET and Python.

It is important to learn the basics of a language, or rather the different concepts, reading a file requires certain operations regardless of language:

1. You open a file or a handle to the file with a name and mode (read/write/lock/shared)
2. You aim to read a defined size of it, or assign it to a stream and process it.
3. You close the file (or handle)

When you understand these concepts, it is easier to move on to other languages.

I'll reiterate what others have mentioned, do a larger project. If you just do some minor academic exercise, you will never see the big picture on how things relate.

The best thing i can recommend you do is to write lots of comments, either oneliners after the line or a block of text.

Quote:
Function (something) // oneliners can explain what this does


Quote:
/*
Multiple lines can explain
In detail what some functions do
*/
Function (something)


It is generally a good idea to write a description in front of a function to explain what it does, it also helps others to quickly get to know your code. Many programmers lack the ability to do good commenting, if you learn to do that in detail (where it is necessary) you have the possibility to become a better coder, and it also reduces the amount of "memory" required in your head to know what the code does.

You can also break down the program into a class with many functions to reduce complexity instead of having a horribly long function (a.k.a "Spaghetti code") with lots of operations. Even though it is possible to have multiple statements on line line (i.e. C++), it is better to also write clear code with proper indenting using space/tab to get a better overview of the code so less time has to be spent figuring out what it does.

Another way of reducing complexity is to wrap your functions into DLL files that you include as you need, then all you see is the function call with parameters to the DLL which can cut down stress and the size of the code. Once something is compiled into a DLL file, it just works and you don't have to manage or see that code anymore (well...until you find a bug in it).

I wish you good luck with your programming.


_________________
"It is far better to grasp the Universe as it really is than to persist in delusion, however satisfying and reassuring" (Carl Sagan)


dynamitetalks
Emu Egg
Emu Egg

Joined: 17 Dec 2017
Age: 33
Gender: Male
Posts: 4

03 Jan 2018, 11:41 pm

wow thanks everyone, some very good suggestions, I'll answer more in depth tomorrow night.
after reading your comments I've started planning out how to approach my learning better and also projects.
I'll setup a flow chart tomorrow in the day and meanwhile try to figure out a system I can use for me to improve. Sometimes my mind just goes blank, maybe a system will keep me on track.

I've tried learning assembler, c++, c#, arduino (c/c++) and python

I want to program for robotics with ROS and use it for simulation. it's a long learning curve. and I've just started for a few month ago to learn the basics of the framework(ros)
I feel like I have some of the basics down now, and I know the basics of c++, but lack experience and more advance concepts understanding and more important lack of hands on work.

I realize now that I for the past 1.5 - 2 years just have watched tutorials and copy/pasted, like learned nothing from it, it's my fault not to recognize this clearly.

thanks again and I'm looking forward to reply more in depth tomorrow as I'll have more to discuss. so far you've been very helpful and I love your advices.



Ichinin
Veteran
Veteran

User avatar

Joined: 3 Apr 2009
Gender: Male
Posts: 3,653
Location: A cold place with lots of blondes.

04 Jan 2018, 1:57 am

dynamitetalks wrote:
I realize now that I for the past 1.5 - 2 years just have watched tutorials and copy/pasted, like learned nothing from it, it's my fault not to recognize this clearly.


You'd be surprised of how many people make a living that way :lol:

Image


_________________
"It is far better to grasp the Universe as it really is than to persist in delusion, however satisfying and reassuring" (Carl Sagan)


Marybird
Veteran
Veteran

Joined: 26 Apr 2012
Gender: Female
Posts: 1,818

04 Jan 2018, 5:09 am

The way i learned programming was by doing hands on work and playing around with it. That's the only way i could have learned it.
I taught myself how to animate a stick figure using basic. I took a pascal class and did things like predict the outcome of a dart game and the game of life.
I have a terrible memory but programming was just so much fun.
Then i learned some COBOL and actually got a job as a mainframe programmer.



Aristophanes
Veteran
Veteran

User avatar

Joined: 10 Apr 2014
Age: 43
Gender: Male
Posts: 3,603
Location: USA

04 Jan 2018, 7:53 am

dynamitetalks wrote:
wow thanks everyone, some very good suggestions, I'll answer more in depth tomorrow night.
after reading your comments I've started planning out how to approach my learning better and also projects.
I'll setup a flow chart tomorrow in the day and meanwhile try to figure out a system I can use for me to improve. Sometimes my mind just goes blank, maybe a system will keep me on track.

I've tried learning assembler, c++, c#, arduino (c/c++) and python

I want to program for robotics with ROS and use it for simulation. it's a long learning curve. and I've just started for a few month ago to learn the basics of the framework(ros)
I feel like I have some of the basics down now, and I know the basics of c++, but lack experience and more advance concepts understanding and more important lack of hands on work.

I realize now that I for the past 1.5 - 2 years just have watched tutorials and copy/pasted, like learned nothing from it, it's my fault not to recognize this clearly.

thanks again and I'm looking forward to reply more in depth tomorrow as I'll have more to discuss. so far you've been very helpful and I love your advices.

So I just read up on ROS. It says it supports C++, Python, and Lisp as programming languages, I'd highly recommend Python at this point just because the learning curve isn't as steep as C++, and Lisp is about the hardest to learn (or so I've heard, I've never actually looked at it). You say you have experience with both, if you're better at C++ right now stick with that, regardless of what I just said. Whatever you choose, stick with that language going forward: don't pick up another language until you've mastered the first, it will just confuse you. Write a few programs in that language, come back a few days/weeks later and make some improvements on them: that'll get you used to how professional programmers operate in a work environment. It's not about remembering what was in the program, but looking over the code to refresh your memory. Think of it like a computer itself-- you don't need to commit the entire program you wrote to your brain's hard drive, you just need to keep the part you're working on right now in your brain's RAM. A poster above mentioned commenting in the code, and that's a very useful suggestion, that's what will rapidly fill up your brain's 'RAM', reading how it operates in the comments while you're upgrading it. (On a side note, since I don't program professionally anymore, I'm absolutely terrible about commenting).

I'd also recommend not even installing ROS until you've got one of it's supported languages pretty much down. It's the dessert, you need to eat your vegetables first. Again, it will only confuse you if you're trying to learn two different things at once.



AspiePrincess611
Deinonychus
Deinonychus

User avatar

Joined: 5 Jun 2019
Gender: Female
Posts: 354
Location: at the Mountains of Madness

13 Feb 2020, 11:48 am

I also have bad memory and executive functioning. I get annoyed with career tests and personality tests telling me that Computer Programmer is a good career choice for me. I am an Aspie but I am sick of the stereotype that because of my ASD I should be good at programming. I am absolutely horrible at programming and had to change careers because my job wanted me to learn Python and it made no sense. I became so frustrated that I wanted to smash the computer with a sledgehammer and had panic attacks thinking about having to write code. Hate it with a bloody burning passion. I hate math with pretty much equal intensity, but I also have dyscalculia. When I took an IQ test I found out that I have very poor logical reasoning skills. Perhaps this explains it. My verbal skills are extremely high though.



Marybird
Veteran
Veteran

Joined: 26 Apr 2012
Gender: Female
Posts: 1,818

13 Feb 2020, 4:00 pm

I also have a bad memory and as a child never memorized history dates and facts, the times table, or anything that had to be memorized.
My vocabulary is very poor and I forget the meanings of words I don't use often.
My logical reasoning skills are very good and I can program a computer.
But my verbal skills are very bad and it takes a long time to write a post like this.



enz
Veteran
Veteran

Joined: 26 Sep 2015
Gender: Male
Posts: 1,067

13 Feb 2020, 4:40 pm

To remember things fold a post it note and put the question on one side and the answer on the other side and review them



wsmac
Veteran
Veteran

User avatar

Joined: 31 Aug 2007
Age: 64
Gender: Male
Posts: 2,888
Location: Humboldt County California

13 Feb 2020, 5:22 pm

Haha... I started with Fortran back in High School and found it fun and pretty simple.
But then... it wasn't a full blown programming course, and we just wrote short code and printed out pictures.
.
Like you, I've been flipping around several different programming languages and haven't moved very far.
Read parts of several books without a lot to show for it all.
.
Your question prompted me to think about all that, and recall how much I enjoy using OpenSCAD to create 3D printing projects.
It's all about writing code.
There's no GUI to click on a box, stretch it from one corner, on and on....
.
In OpenSCAD, I will do what was suggested earlier... comment!
Commenting is cheap... well... free.... simple, and always there for me to reference if need be.
I will take someone else's script from their 3D project, copy&paste, then play around with the code, watch what happens and hopefully understand what and why things happened or didn't.
.
For Python and the others, it seems to me this could be a good approach as well.
I saw some good suggestions here also.
One comment hit home only because my former wife said practically the same thing about being an M.D. and how she dealt with all the information out there she needed to know.
She just said what counts most... is knowing where to find the information, and getting it when you need it.
.
Back to OpenSCAD... when I was trying to learn iterations, I took the code from the OpenSCAD Wiki, or from someone else's example and stashed it away in a special file for future reference.
.
I have also used Stackoverflow and would recommend it.
.
Maybe your post will spur me on to getting some work done with programming? lol
.
Time management is another issue though... the executive function part.
You have to just keep looking for a tool to help you manage your programming time.
Like others have said... perhaps breaking all tasks up into smaller blocks, giving them short but specific time constraints, then sticking with those, will help.
On my own... I get too distracted by other things, then forget that I was working on learning programming... until the next time I want to start it up again.
It's a matter of me making my programming time a regular thing in my life.
Sort of like work. If I do the same work over-and-over, day-after-day, it gets ingrained in my head.
If someone throws me a task, but either doesn't specify getting it done NOW, or gives me some date in the future... I'll likely forget all about it.
.
Do you know anyone close to you who can prompt you about keeping a daily time/place to do some programming learning?
They don't have to be involved in the learning, just know you want to spend an hour a day, Monday/Wednesday/Friday, working on it (or whatever schedule you like). Then they can be your reminder, until you start remembering and following through on your own.
.
For me... to plan something like this and decide I'm going to do it say... on my lunch break at work... doesn't work.
Too many distractions and possibilities that I may not be able to just stop for lunch and sit down and work on my learning.
.
Perhaps take a look at some things you do regularly without any or much thought. Figure out why you can successfully do these things time-and-again, then see if you can make your programming practice fall into the same sort of routine.

I wish you well!


_________________
fides solus
===============
LIBRARIES... Hardware stores for the mind


JohnInWales
Blue Jay
Blue Jay

Joined: 19 Aug 2015
Age: 68
Gender: Male
Posts: 94
Location: Wales

13 Feb 2020, 6:23 pm

Another fan of OpenSCAD. Writing code is much easier than drawing lines with a mouse! Maybe it's an Aspie thing about things being very clear and black or white! I can tell the computer to put things precisely where I want them. I'm currently working on an Arduino device that uses a touch screen, and that needs everything precisely positioned too.

I taught myself BASIC on a Sinclair ZX81 nearly 40 years ago, and have since used BASIC on a Sinclair Spectrum, BBC B and an early IBM PC. Then I moved on to Visual Basic on a PC (both DOS and Windows), followed by PHP. I'm now slowly getting into C++ on Arduinos, and OpenSCAD. I've also got a Raspberry PI, but haven't done anything with it yet. I'm trying to avoid Python for as long as possible, as it looks confusing, due to a lack of semi-colons at line ends, and uses indents to make it work rather than for my brain to be able to follow it!

And poor memory has plagued me all that time. I remember and understand what I need to do, but the exact syntax eludes me, and I constantly have to look it up. For years I've intended to build up a library of code snippets that I frequently use, but still end up searching the internet for examples to copy. I always seem to be at the learning stage, where I'm not quite expert enough to have a good grasp of any of it. With almost everything I do, I seem to get off to a good start, then hit a ceiling somewhere well above the level of a beginner, but below that of an expert, in some sort of no man's land, where support for learners is too basic, but I'm not nerdy enough to understand the expert support.

Maybe I should just get on with building model railways by hand, rather than designing stuff to 3D print, and developing a radio control system that I'd like to evolve into some level of automation :lol: .



AspiePrincess611
Deinonychus
Deinonychus

User avatar

Joined: 5 Jun 2019
Gender: Female
Posts: 354
Location: at the Mountains of Madness

14 Feb 2020, 11:48 am

Marybird wrote:
I also have a bad memory and as a child never memorized history dates and facts, the times table, or anything that had to be memorized.
My vocabulary is very poor and I forget the meanings of words I don't use often.
My logical reasoning skills are very good and I can program a computer.
But my verbal skills are very bad and it takes a long time to write a post like this.


That's fascinating. It looks like we're pretty much opposites! I am excellent with memorizing facts and vocabulary, but awful with pretty much everything else. People have said I'm a very good writer. I can beat most people I know at Jeopardy and Trivial Pursuit. I was captain of my school's academic team in high school, and some of my girlfriends and I have a bar trivia club and we kick butt.
My working memory/short term memory is what is lacking for me. I think my verbal IQ score was something like 143. Everything else was in the 80's (below average).


_________________
Nolite te bastardes carborundorum "(Don't let the bastards grind you down)"
Margaret Atwood, The Handmaid's Tale
"I might be crazy but I ain't dumb"
Cooter, The Dukes of Hazzard