The toughest part for me coming from a completely non quant/non-cs/non-programming background was learning how to think like a computer. Basically, how to break problems into smaller subsets and solve them. The second toughest part was learning the rules and conventions (i.e. what CAN and CANT you do with the language youre using in the frame of the problem you're solving and eventually what IS and ISNT completely foolish in terms of memory usage/speed).
Good luck if you're on that path! I started out as a "business founder with an idea" and realized how hard it was to get anywhere with that so I learned to build my own ideas out.
My friends all had TI-83 calculators, with data ports. They had all kinds of cool games that they shared back and forth.
I thought one of the games, SNAKEGAME, was really cool, so I figured out how to copy it to my calculator. I opened up the BASIC source code on my friend's TI-83, and manually copied the whole thing, character by character, into my TI-82.
Of course, along the way I made a few typos, and so when I first tried to run SNAKEGAME it blew up with a vague error. I went back through the program, line by line, looking for differences between my version and the original. When I finally got the game running, things were... odd. I hunted down the remaining typos, and in doing so I discovered a few things. I found out that I could just change a number in the source, and the snake would be longer. Or faster. Or he'd do crazy things.
This was basically my enlightenment. I started changing one thing after another to see what it would do, and eventually I became fairly familiar with TI BASIC. I looked at the source for other games, and eventually started making my own. At first, they were ridiculously simple, but eventually I made a couple that were slightly entertaining.
After that, in high school a friend lent me a book about C++, and I struggled through it. I wrote lots and lots of half-assed, totally crappy, unplayable games, and eventually started learning other languages and getting better.
And that's probably far enough past getting started to make a good ending point.
1)want to do something
2)search online tutorial/examples/similar apps
3)TRY TRY TRY TRY TRY TRY TRY TRY
4)back to 1
During my junior year our math teacher decided to start a Visual Basic programming class, which I quickly jumped into that class. Then progressed to reading lotsa books, online tutorials, etc.
100% of the knowledge I use today was all self taught, but those first bits of <HTML> is all it took to get me hooked.
I also did some basic BASIC programing on my TI-82, so I could put all the random math formulas into it so I just needed to enter X and Y and it would tell me what Z was. Being that we were allowed to use the calculators on the tests :)
Being biased towards the web side of things, I think HTML5/CSS3/Javascript is a great (instant gratification) way to start learning programming.
In 7th grade or so I started tinkering with Java on the same 68k mac. I believe I understood and realized the importance of OOP in 8th grade or so, which for me was the "aha" moment when I decided that this was what I wanted to do for the rest of my life.
I type this, now, as an intern at a software company, configuring Team Foundation Build for my little internal project that will go out to the devs on Tuesday. I love my job.
- I learned how to draw a line
- I learned how to turn
- I asked the teacher how to "do things over and over" (loop)
- I taught myself to draw a circle
That was day camp, when I was 7, learning LOGO. After that, it was learning how to load things into high memory writing elaborate menu'd boot batch scripts. Then BASIC, middle school classes with Pascal, taught myself C & C++ from books, and then classes on C++ in college.All self-taught after that - I don't think a single employer I've had has ever paid for a proper training class of any kind.
No language after that truly felt different, besides the differences in syntax and quirks. I picked up the concept of OOP from C++ and thats the end of my story. I've never read a programming book in my life.
It progressed as such for me (mainly due to course progression at school): TI-BASIC >> VB .Net >> C >> PHP >> C# >> Python >> Ruby
i kinda miss dead tree magazines with actual working code ... maybe we should start a github magazine?