views:

638

answers:

13

College courses are obviously very helpful, but I hear all the time about great programmers that just "taught themselves," and I wonder how the hell they did it. Online tutorials are nice - online support, even better - but learning with nothing but online resources is difficult to say the least, and I don't know anybody that's experienced enough to help me learn. Even if I did, they probably wouldn't have the time for it.

Any advice is greatly appreciated. Becoming an application/game designer is something I've wanted to achieve for a long, long time, even if I never use it for a career, and it does mean alot to me. However, I'm constantly thwarted by lack of motivation, or perhaps confidence. Though I've found some good tutorials online, sometimes I feel it just isn't enough to really get me somewhere, and my limited knowledge of computers (and any other technology) in general is hardly reassuring. I'm constantly getting the feeling that maybe it isn't "in me."

Well, guess that's it. I just don't want to join the legions of aspiring techies that just gave up.

+23  A: 

I hate to be negative, but the fact that you are asking this and claim it is something you have wanted to do for a long time pretty much tells me it will not happen for you.

For many it is more like a passion or something they are driven/attracted to - the motivation, time and priorities are there. You have to spend time in front of a computer coding.

That's the bottom line. To become good at something you have to spend (a lot of) time doing it

Don't let my comment(s) or anyone else's comments stop you from trying though.

the best advice I can give is to find a problem/challenge/etc that interests you and write the code for solving/addressing it.

If you are not interested in it you won't follow through.

Tim
I totally agree. "passion" is the magic word.
Holli
+1 agree with you. Important fact
bastianneu
+2  A: 

Learn by doing it.

I taught myself 3D programming by working on a small game project with a 3D artist friend. I bought a C++ programming book as a reference and use Google to find out how to do certain things.

Reading books is certainly helpful but programming is one of those things that you just can't become an expert by just reading about it.

oykuo
+3  A: 

As cliche as it sounds, the best way to get good at programming is to... program! Work on projects, read programming books and blogs, and become a regular on Stack Overflow. Most of all though, be sure to push yourself. You can't better yourself without delving into unknown territory.

Evan Meagher
+8  A: 

"The creative mind plays with the objects it loves." -- Carl Jung

Shmoopty
+3  A: 

You can master anything by practise ;-)

How did you learn maths? By doing it.. similarly You can master programming only by doing. Learn through videos. Learn from blogs. Dont cop paste to test it out. Write yourself. Do lots of hobby projects.

Shoban
+6  A: 

I learn by doing. It's just about the only way I can get it to "stick."

I also read other people's code, and I read enough books to help me understand "structure." Things like Linq and lamba expressions have to be studied awhile before I can grok them.

I read a lot of blogs to understand how things work in the real world, and I listen to podcasts to help me sort out the different technologies that are available, and how and where they're used.

Today is a very exciting time to be learning software development. There are many new and excellent technologies out there to solve problems, and the methodologies are finally maturing. Some of the best ideas that are becoming popular tools are also some of the oldest, like functional programming and model-view-controller.

Robert Harvey
+1  A: 

Well, I began with reverse engineering using olly debugger,which is disassembly.I didn't know much,I didn't even know the Winapi,therefore I began with Delphi.My first program in that language was a calculator to get used to its syntax.Then I moved on using google and I learnt small part of the winapi.Lately I realized I couldn't fit my needs in that language so I started over with C#(Over really means over,because the winapi is rarely used and I had to learn the framework,which I still do today).

I'm not a guru,but I did taught all that by myself using google and SO(Check how many questions I have - around 110).The only book I have is C# in Depth,which I bought only ,because I like Jon Skeet.

John
+1  A: 

I had a bare minimum of programming in college (it was the '70s, my major [and MS] was EE, my dream and passion was to design integrated circuits and systems around them), and gradually during the '80s found myself drifting more and more to SW because it was a must to make the prototype systems and chips I was designing actually useful to users.

Eventually I realized I had become a programmer, mostly "learning by doing", as many others are saying (and by reference manuals -- not much "online" resources back then).

The rock-solid grounding in maths (abstract algebra, &c) that you couldn't avoid getting with an Engineering MS back there and then also boosted my learning speed enormously though (I regularly found myself easily absorbing then-new but mathematically sound ideas like relational algebras and functional programming much faster than experienced developers with totally "procedural" background but shaky maths).

Alex Martelli
+2  A: 

I was certain I wanted to write code for a living, so I went door-to-door at every local computer-related company I could find until I came across a tiny startup which which was willing to take a flier on a kid who wanted to write code.

I then worked as a maintenance coder, in customer support, as QA, and finally full-time on the development team. I had some fantastic mentors, but really I think it was the exposure to many aspects of life in a real-world software company very early in my career to which I credit much of my perspective and subsequent success. The "how" really is a lot of time-at-keyboard and time discussing software with people more experienced than you.

At the end of the day, though, I think coding is like anything -- if you really want to be a great coder, you'll naturally live/eat/breathe/dream it. If you aren't "that guy" then I doubt you'll have a very fulfilling career (let alone a stellar career) as a developer and should probably look elsewhere for a vocation.

DarkSquid
+4  A: 

In his book Outliers, Malcom Gladwell refers to what he calls the 10,000 hour rule: to achieve real mastery of some skill you have to put in at least 10,000 hours of practice. This is just a popular book about human behavior, so don't take this too seriously, but in my experience it's about the right order of magnitude. To get really good at programming you have to have some talent, some education, and you'll have to write programs 6 hours a day for four or five years.

Charles E. Grant
A: 

By throwing away all bad coding practices and starting over to learn again. No more RAD, no more imperative garbage - and most importantly - NO MORE COPY AND PASTE.

Oh, and GoF helps a lot as well.

stormianrootsolver
+1  A: 

Copying code out of Spectrum User magazine into my ZX Spectrum 128K+2 (ooh, how posh!) and then trying to work out how to change it to do what I wanted. Bar quite a lot of university education, it's been that process but using the internet and new languages. You have to love it.

brainwipe
A: 

Becoming a programming guru takes a more than just programming 6+ hours a day for 5, 10, or 20 years. I've programmed between 6 and 16 hours a day as a job and a hobby for over 20 years, and while I may be good I am not a guru, and that looks unlikely to change.

As well as programming you also have to read other programmers books and blogs, and keep up to date with the latest thinking and technology, and you also have to remember it. The gurus I know have a superb memory.

If you just want to be competent then doing will probably get you most of the way, though you still need to read plenty of good stuff.

David Sykes