I just started grad school in Physics a few weeks ago, but I have recently considered quitting in order to start or join an existing startup, probably related to software. But I am also considering staying in my phD program (maybe leaving with an MS) and just doing research in an area of Physics that uses lots of programming, such as computational condensed matter, as opposed to string theory. I have read a few of Paul Graham's essays, and I think starting a startup would suit me well because I am willing to take the risks involved in it and work the long hours as opposed to taking a low-stress, comfortable good-paying job working in a cubicle. The main problems at the moment are that I have poor programming skills and that I have no friends that are interested in programming or in a startup. But I have been considering joining a club on campus with other grad students that are interested in forming a startup But in the meantime, since I'm not in a Physics research group yet, I would have to self-teach myself programming in my free time. To give you an idea of my current skill level, the most recent concept I learned in C++ was Vectors a few months ago. How should I start getting better? Should I try working through O'Reilly's book? Look at someone's existing code and try to improve it? Come up with my own problem to solve? I was thinking I could also try applying for a job at a startup to see what its like. But would any startups be willing to hire me considering how poor my programming skills are? I suppose I'd be willing to be hired just to perform menial tasks at first, so I'd have to improve my programming skills on the side, but I wouldn't exactly make a great salesman.