views:

129

answers:

6

What should I study in order to be a programmer. (except programming languages :) )

I know some C/C++ and some Java(, but I don't have the thinking of a programmer. I probably need to study some algorithms. What is your opinion?

+6  A: 

You need to study a vast variety of things to become a programmer. These include:

  • Some programming languages
  • Theory of algorithms and complexity
  • Design patterns
  • Application design
  • System design
  • Integration
  • Database theory
  • Software quality
  • Testing strategy
  • Using source control
  • Organizing work in teams
  • Being a pragmatic programmer, learn to focus on the results not on the process
  • User-centered design, how to listen to users
  • Usability
  • User psychology
  • Acessibility (for various devices and also for disabled people)
  • etc.

The thing is that you need to take a small step at a time. Now you know a couple of programming languages, good, learn something about databases, read about algorithms. Then go, apply it in practice. This will give you experience to think about. This thinking will take yoy to the next stage, you get deeper into algorithms, you learn more about languages features. After some time you start to think of global issues like application architecture. An so it will go on, one iteration after the other you will be getting better and better.

Imaging a field of old dry grass. You need to have it burnt. What will you do? To make it more effective you ignite the field for several sides, then it will burn evenly. You watch it, where it goes out you ignite again. There it goes. Always watch out where in your knowledge you have white spaces and focus efforts on there when you have the time and wish (or need).

Developer Art
no idea why someone would down vote, but this reply is more accurate than just saying learn to write code. As a developer with 10 years experience, i would say theory and practical knowledge both contribute to being a developer.
Andrew Keith
The downvote (not mine) was for the original version of this post, which simply read "coming soon....".
Chuck
oh lol .. comming soon ....
Andrew Keith
+3  A: 

My advice (and also what I did) is to start programming right away. After programming continuosly for 5 years, you can call yourself a programmer :) Also it helps to read theory as you go (various books and blogs on algorithms, design, good practices...), but practise is the foundation :)

Roman Plášil
True enough, but I fear downplaying knowledge of the actual science will get you a bunch of cowboy coders writing awful, buggy software.
Chuck
Everything I learned about good practices in writing softwares (to avoid bugs) was based on my own interest which appeared as a result of suffering with my own buggy code ;) And I didn't learn it at the university (I did learn some cool algorithms there though).
Roman Plášil
+1  A: 

Since programs are built out of algorithms, yes, it would be good to know that. Look at your average CS curriculum and it will be a decent rundown of skills that are useful for a programmer. The specific skills you need depend somewhat on your specialization, but basic computer science will serve you well anywhere.

Chuck
+1  A: 

The most important thing, as far as I"m concerned, is to choose a project and build it yourself, from scratch. This doesn't have to be a huge project, in fact, something small is probably better to start with.

During the course of building your project, you're going to come across all sorts of things you need to do and don't know. Then, and only then, go and read about them until you can solve them. Eventually, you should be able to finish the project.

Not only is this how most programmer get started, but as far as I see, being a programmer at its most basic means being able to program anything. After finishing a few of these projects, you'll be able to program anything (even if you don't know anything necessary, you'll know how to learn as you go, the #1 skill).

Edan Maor
+1  A: 

Experience for a few years.

grigy
A: 

Programmer is who writing programs. To become him - start writing programs. That's all.

Andrew Dashin