
Getting better at programming? - principia1
I just started grad school in Physics a month ago, but I have recently considered quitting since I have gained an interest in the entrepreneur/startup world. Or I could just try to work as a programmer for a non-startup<p>The main problems at the moment are that I have poor programming skills and only know the basics and a little OOP(To give you an idea of my current skill level, the most recent concept I learned in C++ was Vectors a few months ago.). My only programming experience consists of taking a C++ class 5 years ago, using C++ for a physics research project, and using Matlab a bit for HW problems<p>I have interviewed for a few programmer positions in the past, but I failed all of them. How can I get better at programming? Should I try working through O'Reilly's book? The only programming book I have with me is a "Learn C++ in 30 days" or something like that. Should I just try to work through the exercises in it?
======
cjfont
From my own experience, the fastest way to learn is to think of some project
you can be passionate about and start getting your feet wet. Start with
something simple, and don't worry if it's already been done, go and do it your
own way.

When you have a vision of how you want something to work, that becomes the
driving force you need to go out and find the resources you need to get it
done, rather than stumbling through exercises with no end result. To me the
difference is like riding my bike outside on a nice day to get a workout, and
riding a stationary bike indoors.

------
xdev1010
Programming is just one aspect of being a software developer, You already are
touching on design by your mention of OOP, the syntax, data structures, etc
should come fairly naturally after some experience but learning proper design
patterns is also very important to progressing as a developer. Also, I'd
recommend really delving into some projects on your own, if you are applying
to programming jobs and haven't spend (at minimum) hundreds of hours
programming on your own projects you can't expect to succeed in the interview.
When I decided to pursue dev as a full-time career I spent about 3 months
doing nothing but writing code all day, for my own projects, they were just
stupid things I thought would be cool at the time but it taught me a lot and
led to getting hired.

Also, in my work experience, the ability to just get things done (or elegantly
explain why something is not possible given current constraints) is what
matters. Get the basics down, get some self-projects under your belt and then
go into a job with the mindset that you are going to get things done, even if
you have to go home and spend extra time at first, its worth it as you will
keep learning and progressing. Overall, its not about knowing every possible
aspect of a language or having everything memorized, its being able to take
resources you have available (which includes search engines) and finding a
solution to a problem. Even experienced developers (people I work with who
have 10, 15 years exp) still spend plenty of time doing research on given
topics, in software development its expected that you can do research
productively to learn to solve a particular problem, if you haven't already
encountered it, no one would, or at least should, expect you to have every
possible solution memorized.

------
palish
The advice is: "just make something"; so of course your question is then,
"what shall I make?"

[http://shawnpresser.blogspot.com/2010/10/how-to-become-
game-...](http://shawnpresser.blogspot.com/2010/10/how-to-become-game-
programmer.html)

^ That's an ordered list of projects, sorted by increasing difficulty.
Basically, start with "guess the number".

------
tobylane
Knowing physics and C++ would open a lot of opportunities, as it is a pretty
important pairing. Only move away if you are bored of being very good at both
together and separately.

------
nycs
just start making something.

~~~
5hoom
Seriously, this.

It sounds like glib advice, but you don't know what you don't know until faced
with a real problem that has to be solved.

Good programmers aren't the ones who know everything already. Good programmers
_solve problems_.

Trying to learn to code without a problem to solve will feel slow, painful &
forced (like boring homework with no practical application). Set a goal, and
suddenly there is a point to all this crazy stuff. You will research
programming techniques because _you need them right now to make this thing
work_.

As for the specifics sure work through the relevant exercises in the book.
Then go online & find some tutorials & work through them.

Just remember that you don't need to master C++ (or any language, for that
matter) before you can make something useful with it, so don't be intimidated
if there's lots that goes over your head.

Look for what you need, note the stuff you don't understand & move on.

Best of Luck :)

------
suivix
You get better by working on projects. You don't get good at making sand
castles unless you make them.

