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 have been programming for 2 years in python, Java and C#. I have developed two programs that is being used by a IT-company I worked for and use programming/a programmers mind to solve almost every problem I counter.

But still I feel I am missing something in my curriculum (selftaught mostly).

When programming I usally do the most often mistake of never changing my solutions to problems in my code. Because I dont know the lowest principals in programming. I often give up on new projects I start because of this.

I see codes from others and I shiver when I think back to my code afterwards.

What are the basics in programming? How can I learn this? And which principals in programming is the building blocks to actually become a better programmer?

share|improve this question

closed as not a real question by Oded, gnat, ChrisF Mar 2 '12 at 13:10

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.If this question can be reworded to fit the rules in the help center, please edit the question.

    
It is really difficult to tell what you are after here. It is a very broad question and any answer will probably not help you. What basics do you feel you are missing? You have not explained what you feel you miss. –  Oded Mar 2 '12 at 10:11
    
I think there is a good question in here. You just need to focus it and re-word it. –  Sardathrion Mar 2 '12 at 13:23
add comment

5 Answers

Flamewars on the "basics" of programming are still going on. Best way to learn is from your own mistakes. That means keep coding and fix the mistakes you make. Ask questions when you're in doubt. Look over other people's code.

Share your code on a blog or work on some open source project if you want to get on the fast track.

share|improve this answer
add comment

If you are really serious to take up programming as career then you need to look into the following areas:

  1. Procedural/Functional Programming
  2. Object Oriented Programming
  3. Data Structures
  4. Analysis of Algorithms
  5. Design Patterns
  6. Software Engineering

A degree course in Software Engineering would greatly help you to strengthen your skills and to outline your career path for the future but to take up a degree course is not mandatory. If you are passionate and dedicated, then all you have to do it to look into the areas above i have outlined. There are many informative books already available on these subjects.

Specify the area in programming where you find yourself comfortable to work. Essentially speaking there are 2 areas:

  1. System Programming

  2. Application Programming.

And do remember one thing, hands on prcatice is what you need on a regular basis apart from study! Join meetup and startup groups of whatever you language you choose to program. Participate in forums and post your questions, issues and also help others with your suggestions and feedback.

You also have to be commiunicative as well to succeed in your career as programmer. When i say communicative, i meant to be paying attention to detail, coming up with precise requirement facts and then conveying them to your team or transforming them into code effectively. Remember, programming is healthy when it is considered a team activity! You cannot and you should not construct every bit of the software yourself and feel good about it. You have to be critical and appreciate other people's criticism about your code or software and must know that there is no such thing as a perfect software. There is a life cycle that makes your software product evolving at every iteration. And then there is something what we call Software Testing which is crucial for a well creafted software.Being a developer, it is your job to atleast Unit Test your code before you go for final testing.

share|improve this answer
    
In 1,5 years im starting on a 5 year journey to take a bacholer-degree in computer science, but in the time between, I want to prepare. I'll take a look at the subjects over and thanks for your answer, I hope to make games in the future. –  MakkaOleba Mar 5 '12 at 7:04
add comment

3 most essential stuff (and that's it) for you to be a better programmer:

  1. High School Mathematics
  2. Algorithms
  3. Data Structures

& ofcourse Problem Solving/Programming. Most difficult part of programming is to start programming.

share|improve this answer
add comment

I would say you would at least need to take some classes in computer science! Since you are self-taught, if you feel that programming is overwhelming, you probably haven't read enough, or haven't learnt enough.

I find that most software developers are self-taught up to a point (which is probably because they were too eager to get their hands on coding) but after that most of them have taken up computer science classes.

share|improve this answer
add comment

The essentials as I see them (take with large amount of salt) are in no order.

  • Algorithm This is really essential.
  • Optimisation/profiling/hardware/memory This is essential if you want to write efficient code.
  • Mathematics This will tie in to both algorithms and optimisation.
  • Testing This is just best practice. Untested code is broken code.
  • Documentation This is just best practice. Undocumented code is broken code.
  • Different programming paradigms: procedural, object oriented, functional, learn at least one language per paradigm.
  • Code kata: practice makes perfect.
  • Learn from your peers: be they better or worst than yourself, you always have something to learn...
share|improve this answer
add comment

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