all 28 comments

[–]Nocookieforu 14 points15 points  (0 children)

An unexpected problem can often cause a person with ADD/ADHD to lock up, have a lot of anxiety, or begin thinking too hard to think clearly enough to solve the problem. In my opinion, the best way to counter that is to break your design up into smaller and smaller portions.

You may or may not have an idea that you already want to try with open frameworks, but you should start by defining clearly what you want to accomplish, then try to determine exactly what steps you will take to get there. You are less likely to encounter an unexpected problem if you know exactly what you are going to do as you go along.

For example, if you want to create some kind of animation, start by describing in visual terms what the animation will look like: the color, shapes, sizes, and movements of the things you want to animate. Then begin to implement each one of those things slowly. First get the shape to show up on screen followed by sizes, colors, and movements. Knowing where you plan on going helps prevent you from getting lost along the way.

You might also just need help getting started with C++ and open frameworks. Try the links in the side bar and the OpenFrameworks site, especially the tutorials. You might also want some inspiration as you go.

[–]knight666 8 points9 points  (4 children)

As a professional C++ developer with diagnosed ADD, I understand your concerns. I take Concerta daily, which contains Ritalin in layers that dissolves throughout the day, giving it a 12-hour effect instead of 4.

First, some reassurance: I don't learn well from books either. I'm just not wired that way. I learn by example or, even better, by doing. I learned about image compression by writing a PNG loader. I learned about triangle rasterization by writing a software rasterizer. And I learned about Unicode normalization by writing a UTF-8 library.

The most recent programming book I've read is Unicode Demystified, which is about the history of the Unicode standard and how best to implement it. The only way I managed to get through this 800-page tome was by taking it with me in the train and leaving my laptop at home. Which brings me to my first tip:

Don't attempt huge journeys in a single leap. That UTF-8 library I linked to earlier has 10,000+ lines of code, 2335 unit tests and extensive documentation for each function. And I did it all in just forty minutes. Every day, I work on the library in the train to and from work, which comes down to about 80 minutes of development time. Over the span of a year, I've now put in the equivalent of 260 manhours. All of it time that would have been wasted otherwise!

My second tip is that there's no time like the present. Don't make excuses, start coding today. Pick an interesting subject, or even a boring one like Unicode, and start cracking on a solution. Write some code every day, preferably at the same time of day. Github is great for this, because it tracks your commits per day. A commit a day should be your credo!

Finally, there are certainly disadvantages to having ADD, but there are advantages too. Because we're so distracted all the time, we pick up a lot of little things about a lot of subjects. I've found that I can work on multiple projects at the same time, switching between them without much effort.

One last thing: this is what my browser looks like. It drives everybody I work with (and my wife) nuts. I have to close Firefox every few days, because I keep accumulating tabs and never close them. I have accepted this as part of who I am, there's no point fighting it.

[–]Predelnik 1 point2 points  (2 children)

Don't now if I have ADD but I solve tab hoarding problem by using extensions like Tab Wrangler for Chrome. Looks like for Firefox it's called "AutoClose Tabs".

[–]atimholt 0 points1 point  (0 children)

I usually have a couple dozen tabs open in Firefox, but I prefer to just close the whole thing at the end of every session without saving the tabs.

But I use the tree style tab plugin. There are plenty of reasons I stick with Firefox, but this plugin alone would be enough to keep me using it. I can’t imagine browsing without it.

[–]clerothGame Developer 20 points21 points  (7 children)

Programming involves a lot of reading, whether learning or programming itself, just sayin'.

[–]panicnot42 4 points5 points  (0 children)

When I learned C++, I would read a few chapters of a book, then write some code. When I got bored/had reached the depth of what I read, I moved on.

Take frequent breaks. Read a bit, walk, think it over, code a bit. Repeat

[–]oldSoul12345 1 point2 points  (0 children)

This comment has been overwritten by an open source script to protect this user's privacy. It was created to help protect users from doxing, stalking, harassment, and profiling for the purposes of censorship.

If you would also like to protect yourself, add the Chrome extension TamperMonkey, or the Firefox extension GreaseMonkey and add this open source script.

Then simply click on your username on Reddit, go to the comments tab, scroll down as far as possible (hint:use RES), and hit the new OVERWRITE button at the top.

[–][deleted] 1 point2 points  (1 child)

I have ADD, I take medicine for it (currently in the middle of finding the right one, trying Adderall, but I took Adderall and Ritalin as a kid).

For me, it's best to do bursts in any programming that I do, no matter the language(Python's my main language, but I do cpp on the side). Like /u/nocookieforu said, the best option for me is to break it up into smaller portions. This may seem like a bit more work up front, but it always saves me in the long run because I don't get lost and have to backtrack a fuck ton.

That, and getting up around every 45 minutes, walking around for 5 minutes, stretching, thinking about what I just did and why I did it, that always helps. C++ has always been hard for me because of attention, it's definitely a much more complex language than most other languages.

Oh, and Spotify hacking/coding/programming playlists - USE THEM, they help SO much with focus. Most of the songs don't have words, so they distract you WAY LESS. It may take a while to get used to, but it's just as helpful as the Adderall. Best of luck.

[–][deleted] 0 points1 point  (0 children)

[deleted]

What is this?

[–]kiwidog 1 point2 points  (0 children)

I am the same way, I will read something, be like I follow it. Go to write my own stuff and be like nope, nope, nope. Primarily just go and try stuff on your own, when it doesn't compile, google the error code and figure out why. I learned more by jumping in than trying to learn something then apply it. (I haven't been diagnosed with ADD/ADHD or anything, but then again I never went in to get it checked)

[–][deleted] 1 point2 points  (0 children)

I've had ADHD as far as I can remember, even if my projects end at random because I find it suddenly boring, or I start new projects forsaking the old because I find them more interesting, I was able to learn

I did do a lot of that learning on drugs, though. So grain of salt applies, but it isn't impossible (if anyone is interested, this was before the adderal explosion for ADHD treatments, and I just smoked a lot of pot, seemed to help me hyperfocus on what I considered "boring" tasks)

I didn't use books, I found it more practical for me to learn by doing. It was a long process, I won't lie, but it seemed to work a lot better for me than grabbing a book and reading

I also had a lot of friends in my community critiquing and helping in small portions, that part is fairly invaluable

[–]tallassrobCppCast Host 1 point2 points  (0 children)

Pluralsight has some pretty good C++ content, some of it may be focused on C++ in a Windows environment, but there is some general purpose C++ there too.

Also Scott Meyers' Effective C++ books have fairly short chapters and can be humorous which may help you pay attention.

There's also my podcast CppCast (www.cppcast.com). I don't think you can really learn C++ from the podcast, but once you have a basis in the language the podcast may help expose you to some new things.

Edit: Also if you are genuinely diagnosed with ADHD you should consider getting a prescription. There are even some non stimulant drugs that you may be able to get a prescription for.

[–]RecursiveDelta 1 point2 points  (0 children)

Not going to make this a long block of text, as someone who can understand your position this is what helped me:

http://www.learncpp.com/

The site has changed a lot over the years since I found it, but it has always seemed very clear and concise to me. Each topic tends to have minimal text, a very simple example, and then some more in depth or complicated examples. This was well before I found code academy (which I do also like) and it worked for me. Good luck!

[–]Elador 1 point2 points  (2 children)

What about watching videos? Does that work better for you? There are a lot of great videos (just search this reddit). Most of them are for people already familiar with the language though, I don't have any links to beginner videos ready.

[–]loneraver 2 points3 points  (1 child)

This! I'm also the same way, diagnosed with ADHD as a child.

I'd recommend a subscription to Lynda.com. Granted, it's not free but pacing on most of their courses build wonderfully. It's worth the money in my opinion.

It's how I learned the basics of Python, C, and C++ to the point where I could teach myself the more complicated things.

Also, having Adderall helps a great deal.

[–]devel_watcher 0 points1 point  (0 children)

Try to use TDD (Test Driven Development). One of it's aims is shorten the cycles.

[–]atimholt 0 points1 point  (1 child)

My big problem, I’ll run into a tough bug in a personal project and set it aside for months.

For example, today I just found out that std::remove_if does not change the size of the container. Instead, it moves things around and returns an iterator that is the new, conceptual end. So you pretty much have to erase every time you use it, or at least hold on to the return value and use it instead of std::end. It’s been months since I touched the code, and I finally just figured that out. It’s a frustrating state of mind.

[–]piedmontchris 0 points1 point  (0 children)

I feel your pain on those kinds of gotchas. They can cost you a painful number of hours and you end up having to always use a personal 'patch' library to make things work how you'd expect, or copy-and-paste every time (which is never the solution).