What should I learn?

Dear Tek Team, i am 13 years old and want to learn the most i can about computers and technology. what should i learn about, what programs. Any books on computers you recommend. thanks. 

I am not the Tek team but I can offer some counsel:

Learn HTML&CSS. It is knowledge that can act as a stepping-stone in to wider computing. Not only that but it can earn you money on the side, if somebody is looking to own a website you can make it in an afternoon and charge them fifty bucks.

Once you've mastered that I would recommend looking at Linux, soon it will take over the desktop world and we all need to be prepared for it. Businesses will be looking for people with knowledge in Linux.

The most important thing is that you find out what you like, you need to explore everything that technology has to offer and decide what best suits you. For now it's okay to just mess around though.

Play around with Linux.  

Learn a coding language, Java, Python,  C++, Jquery

Get involved in the forums. This place has alot of good information.  Even if you just lurk around you can learn alot about hardware on software.  It's best if you get involved in the discussion also.  

Take classes.  I assume that you will be moving on to high school soon so check if your school has a web design class, computer science class etc....

Network.  Find a group of people who you have common knowledge with.  Learn from them and they can learn from you. 

Yeah, that's all off the top of my head.  

Programming:

  • Learn Python, then C.
  • Experiment with Linux.

Circuits:

  • Learn what a resistor, capacitor, inductor, diode, transistor and source does.
  • Understand the distinction between current, voltage, power and energy.

Computer Systems:

  • Learn how a CPU works.
  • Understand the distinction between frequencies, timings and latencies in memory.

To expand on his second part, try an app called EveryCircuit it is a fantastic electronics simulator that can show you everything that happens inside of a circuit as it happens

When leaning programming do not focus on a single language, try to see where languages are different and where they are the same. I generally do not recommend starting with C, as there are too many things to remember just about syntax and functions to perform certain tasks. For example, Java is a lot like C, but it doesn't overwhelm you with that.

soon it will take over the desktop

I strongly disagree. I believe that desktop linux in its current state is incapable of becoming a major desktop OS. Linux is powerful tool though and learning to use UNIX command line is actually helpful.

I too was in your situation back in the day. It is important to diversify your knowledge as much as possible, which is somewhat of a mistake I made in middle school. Back then all I focused on was Java and a little bit of HTML and CSS, but now I'm doing my best to expand my knowledge in more coding languages as well as hardware.

Learning how to code is the best advice I can give since that is my strong point:

The first programming book I read, which is very newb and kid friendly, is "Hello World!" by Sande [amazon link]. It is a great introduction to programming in general. The first half of the book teaches the basics of Python, then the last half applies that to the creation of simple games. If the 11 year old me could learn that, so can you! :)  (I'm 16 now btw if you were curious.)

Afterwards I would recommend moving on to Java, which was really easy to learn since I already new programming concepts from Python. Then once you feel comfortable with Java, try out C/C++/C#. In my experience, Java is most similar to C++ so I'd recommend looking at that first. Herbert Schildt writes some amazing programming text books that I'd highly recommend to programmers of any level. [amazon link] (Note, his "beginners guides" are basically the part 1 of his "complete references" so don't buy a "beginners guide" and a "complete reference" because you'll get a lot of the same stuff.) Afterwards, if you're thinking of game programming, look at things like DirectX and OpenGL (both require some of the previously mentioned languages).

Then somewhere along the way you'll want to look at web design/coding, i.e. HTML & CSS. If you want to take that a step further then learn learn about PHP and MySQL (both deal with data/databases). I'd strongly recommend buying a domain and web hosting from someone like HostMonster.com and playing around with those languages. I find that I when making a website I use the free website editor to make the core of my website, then I inject my own code to take it further.

As mentioned before by others, familiarizing yourself with Lunix is another good skill to have (which I don't have yet lol :P ).

Connections. The more people you interact with the more likely you are to find work and learn more about technology. Try to find groups of people like you to commune with, and when you're in high school/college, look for small jobs, even simple ones like making a personal website for your friends step uncle :P

The ultimate goal is to build up your skill set so that when the day comes that you are looking for a job, you can advertise your wide range of abilities. Heck, if you start your own company, having that vast array of knowledge will be priceless!

In no order whatsoever:

 

1. CSS/HTML

2. Adobe suite

3. System building

4. Linux

5. System optimization and repair

6. Java (Maybe some C++, LabView, or Matlab if you ever want to go into the sciences)

7. Networking (servers, switches, bridges, etc...)

8. Advanced Excel (for advanced mathematics and automation of complex templates with lots of user inputs)  

Thanks everybody who commented in will, these helped a lot.

 

body language, social queues, brainwashing

Friggin anarckists always tryin to destroy something  Turn the kid into another justin bieber kardashian. 

so far the best list. Maybe adding php/sql to point 1 would be awesome.