Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been thinking about this a lot lately. Right now I work at a little web company, am almost done with school, and have written an iPhone app, but I'm not sure what else I need to focus my learning energies on. I've decided I want to do software programming, so I've been actively reading everything I can get my hands on that deals with Objective-C / C++ (Cocoa, OpenGL, etc). But those are not the things I'm talking about. I know I need to "master" a language or two. What I'm talking about are the other "things". Things such as learning and using source control, design patterns, etc.

What thing (or things, just one per response), would you say I should concurrently be focusing on? You can consider in your answer that I'm wanting to do the aforementioned career path, but you don't have to. I just want a nice list of things to research, and actually use in my career.

NOTE:

I asked this question on Stackoverflow, and after a few good answers, it got closed, and I was told i should move it here.

Here is the original: http://stackoverflow.com/questions/4452857/what-are-the-most-necessary-non-language-specific-things-a-programmer-needs-to-kn

One thing is, a lot of the answers were about people skills, which is fine, and I do agree, but I was looking more for programming specific kind of things, like, i don't know, learning Hexadecimal, or design patterns (maybe specific), etc.

share|improve this question

closed as not constructive by maple_shaft Mar 7 '12 at 13:32

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
How to focus on their job and not spend their day asking questions on SO. :) –  George Dec 15 '10 at 17:37

37 Answers 37

Some general understanding of what makes good code and bad code, plus some idea of the Software Development Life Cycle (SDLC). Have a look at Steve McConnell's 2 books, Code Complete and Rapid Development. He's quite legible and both books are language-agnostic. For developing your skills as a developer, you need to understand software patterns, and you need to understand when you're being mismanaged (more often than not, most likely), and those two books will get you well on the way.

The comments about communications skills and personal skills are certainly not misplaced, either, of course. So many things get botched because of poor communications skills, and because developers don't learn to ask, "what's the problem you're trying to solve," rather than accepting that they're being tasked to build a particular application.

share|improve this answer

Operative System

If you are going to do desktop application then you have to learn the OS and system APIs.

share|improve this answer

Communication

Being able to express your ideas as well as being able to listen to someone else's so that you can express theirs to someone else

share|improve this answer

Creativity does a programmer no harm at all. You will need to be creative and have new ideas to make something big. Of course, the ideas are of little use if you don't know how to implement them.

share|improve this answer

Two essential things that are not teached at school:

  • version control
  • testing
share|improve this answer

Communication is the key and for that I recommend that you learn the principles of Domain-Driven Design (specially the part about the ubiquitous language)

share|improve this answer

As a programmer you must learn how to work in a team.When you will develop some large applications this thing is going to help you the most.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.