views:

490

answers:

11

Brief History: Just graduated high school, learned a bit of python and C++, have no friends with any helpful computer knowledge at all. Out of anyone i met in my school years I was probably the biggest nerd, but no one really knew. I consider my self to have a vast amount of knowledge on computers and tech then the average person. built/fixed tons of computers, and ability to troubleshoot pretty much any problem I came across.

Now that high school is over, Ive really been thinking about my career. Loving, living computers for the past 13 years of my life I decided to take my ability's and try to learn computer programming, why I didn't start earlier I don't know, seems to be big mistake on my part...

Doing some research I concluded that Python was the first programming language I should learn, since it was high level and easier to understand then C++ and Java. I also knew that to become good at what I did I needed to know more then just 2 or 3 languages, which didn't seem like a big problem considering once I learned the way Python worked, mainly syntax changed, and the rest would come naturally. I watched a couple of youtube videos, downloaded some book pdf's and snooped around from some tutorials here and there to get the hang of what to do.

A two solid weeks had passed of trying to understand the syntax, create small programs that used the basic functions and understanding how it worked, I think i have got the hang of it. It breaks down into what ive been dealing with all this time (although i kinda knew) is that, input,output, loops, functions and other things derived from 0's and 1's storing data and recalling it, ect. (A VERY BASIC IDEA). Ive been able to create small programs, Hangman, file storing, temperature conversion, Caeser Cipher decode/encoding, Fibonacci Sequence and more, which i can create and understand how each work.

Being 2 weeks into this, I have learned alot. Nothing at all compared to what i should be lear ning in the years to come if i get a grip on what I'm doing. While doing these programs I wont stop untill I've done doing a practice problem on a book, which embarresing enough will take me a couple hour depending on the complexity of it. I absolutly will not put aside the challenge until its complete, WHICH CAN BE EXTREMELY DRAINING, ive tried most problems without cheating and reached success, which makes me feel extremely proud of my self after completing something after much trial and error.

After all this I have met the demon, alogrithm's which seem to be key to effiecent code. I cant seem to rap my head around some of the computer codes people put out there using numbers, and sometimes even basic functions, I have been able to understand them after a while but i know there are alot more complex things to come, considering my self smart, functions that require complex codes, actually hurt my brain. NOTHING EVER IN LIFE HURT MY BRAIN....... not even math classes in highschool, trying to understand some of the stuff people put out there makes me feel like i have a mental disadvantage lol... i still walk forward though, crossing my fingers that the understanding will come with time.

Sorry if is this is long i just wish someone takes all these things into consideration when answering my question. even through all these downsides im still pushing through and continuing to try and get good at this, i know reading these tutorials wont make me any good unless i can become creative and make my own, understand other peoples programs, so this leads me to the simple question i could have asked in the beginning.....

WHERE IN THE WORLD DO I START ? Ive been trying to find out how to understand some of the open source projects, how i can work with experianced coders to learn from them and help them, but i dont think thats even possible by the way how far people's knowledge is compared to me, i have no freinds who i can learn from, can someone help me and guide me into the right direction.. i have a huge motivation to get good at coding, anything information would be extremely helpful

A: 

Well the best solution i can think of is just registering on sites like codeguru.com and look for practices or join programmer groups in your area. That way you can acquire both expirance and knowledge that you will need in future.

bigbluedragon
+3  A: 

See my answer to this question

BlueRaja - Danny Pflughoeft
I will definitly check out it out, thanks alot
Panthe
+2  A: 

good for you.

have you considered some college courses? ususally you can take some algorithm type classes there.

i find that a strong math background is very very helpful, both in problem solving, and basic number manipulation skills. Many of the things you do in programming are based on mathematical foundations. The algorithms you will end up using or creating will be drivin by the types of programs you wish to write.

Randy
If programming is such a passion for you, go to college and take CS classes, whether full time or even night classes. Randy is right having a good math background is important, Learning to communicate and taking English classes is also important. Get a degree.
Romain Hippeau
+1  A: 

Open source projects can be hard to understand. Too many architetural decisions were made, probably not the best readable code, and complicated (possibly overcomplicated) algorithms, and usage of advanced language features can be really hard on newcommers.

However, if you can find someone to tutor you, you can overcome this. Several projects will take newcommers and will mentor you in what you need to learn to cope with the project, possibly handling easier tasks.

Look for irc and mailing lists of projects you are insterested in, and be ready to work really hard learning a lot in a few days. Do not be discouraged if you cannot accomplish much in a few weeks. Also, learn testing tools (python has a unittest module), as any serious open source project will do a lot of unit testing (and possibly more complicated forms of testing).

Daniel Ribeiro
Thanks, Now im just on the hunt for the progamming buddies, Joining forums i guess would be the best way
Panthe
A: 

If you want to read some books, I would recommend: How to Solve it by Computer by R.G.Dromey. It is an old book, but might be worth reading.

Another book would be: Programming Pearls by Jon Bentley.

If you had the option of going to college, that would give some structure to your learning and you would have peers and mentors to discuss stuff with.

Moron
+4  A: 
rabidmachine9
Hear, hear. It takes years to get really proficient at a musical instrument. You'll need that to get really proficient at programming as well. You have a whole life in front of you, don't get discouraged if you're not a guru in a month. :-)
Owen S.
+3  A: 
Norman Ramsey
Great book! But is probably better utilized after a little familiarity with the subject.
Moron
A: 

I wont give you many "do-this-do-that" suggestions, but a few things:

  1. You learned Python all by yourself, kudos,esp when nobody around you is doing this.So you have already something to feel good about. Keep leveraging that stuff to grow your knowledge base.

  2. You said you were 13. Python might have books to cater to your level of complexity but definitely not algorithms. Algorithms are serious business. There is a good level of mathematics in and around the domain of algorithms. And there is no way to sugarcoat that. Added to that, books on algorithms are industry wide known as hard to crack books. Ask Bill Gates and Don Knuth.

So I would say, if you want to learn computers because you love learning and yearning for knowledge, then I would suggest, at one side,

You are on the right track, to be frank I dont expect a 13 yr ol kid to know about algos. You are exploring Py, have plans with C,C++ I would say, great!

Strengthen your mathematics. Until unless you want to just implement different kinds of algos, and not scratch deep, you can do it. But algos are not only about that. So if you want to get a hold on it, you need to learn discrete mathematics. Discrete Mathematics wont come to you in 1month, 2months, or even 1 year. Be prepared to wait and bid your time. In the meantime, attack mathematics which is just on the edge of your competency.

Same with algos. Be prepared to visit this domain two or three times in the next five years. Each time you existing knowledge base will better compliment yourpursuit of algorithms.

Till then, Soham

Soham
pretty sure i read 18, not 13...
Nader Shirazie
[i]Now that high school is over, Ive really been thinking about my career. Loving, living computers for the past 13 years of my life[/i]I dont know how to interpret this. He started loving computers right from the moment he was born, or after that. He says, he is past High school so will that make his age to be?I dont know, coz I am not US based
Soham
+2  A: 

The job of laying out a course of study in algorithms - and the other things you need to know to put them to use - especially one that leads to a career in computers, is the job of laying out the syllabus of a university course in Computer Science. Indeed I suspect that some universities provide little value except to lay out the syllabus and assess the students - the students do pretty much everything else for themselves. If at all possible, your goal should be to prepare yourself to get onto a course in Computer Science, whether by full or part time study.

My book recommendation would be "The Practice Of Programming," by Kernighan and Pike, especially if you plan to learn by doing. It doesn't go very deeply into algorithms, but in a few pages it should tell you enough about design and testing that when you practice you will find, fix, and learn from many of your mistakes, and get into the habit of writing programs that other people can look at without grimacing.

mcdowella
A: 

From my experience: problems - will lead you over path you've choosen and languages will help you to look at it from different points of view. If you'll stick to only one or two languages you'll be able to continue, but you'll miss many things on your way, which may help you in future, which may give you some fun etc.
And... There is much more things that you can do besides programming. Don't make "I want to programming" as your primary goal. Use "I want to solve problem ..." and "I want to use programming for doing ...". (i.e. don't make the words be your target)
I think I've choosed this path because it was the easiest thing to do. No need for trainings every day, no need for doing repeatable work, no need to be ready for trip on next day, no need to prepeare bunch of materials and so on. Of course later I found that some of that things can exists even there.

ony
A: 

In my approach to programming I think that the collected writing of Brian Kernighan are the most influential books on how to think like a programmer I've encountered. On the cover of "The Practice of Programming" are the words:

  • Simplicity
  • Clarity
  • Generality

which given your noted interest in Python reads like the short form of PEP 20. Algorithms are a means to an end as are recipes in cooking. While it is true that you cannot make bread without knowing about the care and feeding of yeast, knowing that you want bread in the first place is the goal. Even though Kernighan's books may seem hopelessly outdated, their unifying themes of the craftsman spoken with a elegance that few technical writers even aspire to make for.

Machines are getting so fast that the formal study (e.g. Knuth) of algorithms can indeed make for a competent mechanic - but that's actually the easy part. What the apprentice of today should strive for is the artistry of the field because that is where humans are truly at their best.

msw