views:

283

answers:

7

Hello,

There is a question which really grinds my gears. I have just recently studied the documentation "What should every programmer know" and now I am at Primer C++ 4th edition. Reading this great book which hasn't any unneeded information like starting explaining STL or MFC in the beggining. It just focuses on the language. I would like to know what should I read further? Is it better to concentrate on libraries/frameworks books? Or it should be better to learn new language from scratch? Or maybe I should read and educate myself for design patterns and coding style? Which way do you think is better? Also if there is any suggestion could you write down some really useful books achieving that? Thank you in advance!

+3  A: 

Try doing a search on the junior-programmer tag that should give you some good starting points.

For example Personal Development plan for programmers

For books to read check out the question
The Definitive C++ Book Guide and List

MadMurf
+4  A: 

Read Code Complete and The Pragmatic Programmer.

They both cover material which is language/framework independent.

Gilad Naor
The Pragmatic Programmer is one of the best books on programming, ever. It talks about the real art of it, not just learning the newest hot API or language.
kyoryu
+1  A: 

You may also want to start thinking about some target platform, it is one thing learning a programming language but programming involves knowledge of a lot of other things. For instance when you program in Windows you may need to know the Win32 API, the GUI, COM etc to interact with which all have their quirks and gotchas. If you want to stay platform agnostic you may want to concentrate on learning more platform agnostic tools e.g. Qt/vxWidget. It all depends where you want to go so to speak.

Anders K.
+13  A: 

read less, code more - it's extremely difficult to evolve as a programmer without actually programming

Steven A. Lowe
+1 This is very very true! At my current job I just do maintenance. I Rarely get to write code. Mostly I just read code and modify it. It's in my private time when I do personal projects I write code and "somewhat" evolve.
Makach
+1 Often things I've read sound good in theory, but don't work in practice. You'll only really learn by coding.
Tom Dalling
Read more, code more.
Randell
+2  A: 

Read other people's code, especially code written by experts in a language. When you learn a new language, concentrate more on its idioms. Understand the philosophy behind the language design. Talking specifically about C++ - I would suggest two books by Stroustrup:

  1. The C++ Programming Language will teach you idiomatic C++ and introduce you to its standard libraries.
  2. The Design and Evolution of C++ will tell you why C++ is the way it is.

You can find similar books for other languages as well.

Vijay Mathew
+5  A: 

Code as much as you can. Take on a pet project, and work on it as much as you can. If you get bored with it or think it's a waste, move on to something new or take a break. Release open source code, as it gives great pride to see something used, and also gives you the impetus to release your code.

Hang out in IRC chatrooms with developers who know what they are doing if you aren't working directly with someone. Pair programming helps not only yourself and the other programmer, but just plain writes better code. Read as many articles and blogs as you can, especially when using a framework, even just starting out. Start your own blog and ask questions (give answers when you can!).

Ask prominent (or at least experienced) developers in your community about your problems. Smaller communities around frameworks and languages (CakePHP being one of them) tend to have the best support as you can go directly to core developers and they are happy to ask questions. Don't be afraid to ask questions to the Lead Developer of something, though. Linus Torvalds answers things in the User Groups whenever he gets a chance and thinks it would be useful :)

You really need to practice to evolve. I maintain that I don't know any PHP whatsoever. I've been working on CakePHP projects for the past 9 months now, and have 27 github repositories, all containing CakePHP code. I stress that I don't know anything, and I suggest you do the same. Always question what you know and what you've written. Try to make your stuff better, even if its just to see if you can. If you learn something new, don't always implement it without seeing what the benefit in that specific case would be. It's the best way to make sure your code is as good as it can be, even if you don't know the language.

If you have trouble understanding books, I'd suggest grabbing anything from the O'Reilly series. Need pictures? Head for the "Head First" O'Reilly series. Make sure your library contains many books, so you always have something to read. And if you're strapped for cash (I am a poor college student struggling on only 1 chipwiches), borrow books from your school/university/public library. Many teachers/professors can order books FREE from publishers (usually 1-2 a year per publisher), so that's an avenue as well.

Above all, and as has been stressed before, PROGRAM! Write small programs, write huge projects. Find something that piques your interest and work on it. Don't be discouraged if anyone says it is crap, take it in stride and make it uncrap! Write lots of small bits here and there so that you always have something cool and new to work on.

Remember, Programming is an art. Painters don't just sit at an easel, paint something beautiful once, and never do it again. To be truly great you must always exercise your talent.

savant
+2  A: 

I agree fully with Steven A. Lowe that you need to write code but to be honest, read some, code some... experiment with the things you have read and turn them into code, meaning try new things, and new ways of doing things and don't forget to have some fun :)

And lastly, take pride in your work and try to write "bugfree" code.

Johan