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.

This question already has an answer here:

I'm a self-taught programmer. No sort of formal CS courses, just someone that read a book about programming and now does that thing for some fun.

However, I don't know much. I've learnt too much from reading Programmers that I'm worried that if I got a job one day, I'd be useless at it, but not because I lack programming skills. I think it'd be because I don't know how to program with a group of people and/or professionally. I can't prove myself right or wrong, as I'm not going to get a job out of nowhere.

So, what is some of the most important things I should learn?

share|improve this question

marked as duplicate by MichaelT, BЈовић, Bart van Ingen Schenau, GlenH7, gnat Jul 27 '13 at 20:36

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

learn how to ace the interview –  Dan Pichelman Jul 26 '13 at 18:59
@newStackExchangeInstance I'd start by understanding that there's an awful lot of CS stuff that you do actually need in a job, or at the very least that CS is not to be dismissed so easily as you have. I say this as someone without a formal background in CS, lest anyone claim bias. –  jcmeloni Jul 26 '13 at 19:15
Seems like one of the things I need to learn is how to ask a question here :( –  It'sNotALie. Jul 26 '13 at 23:20
You need to know CS.. not that you cannot know it by reading books. But you need to know theoretical CS. –  Jit B Jul 27 '13 at 5:43

3 Answers 3

Once you manage to get a job by learning how to ace the interview, (as commented), to be successful on the job in your position, you need learn these qualities:

  • Humility: Self explanatory, but actually includes the others in this list.
  • A good work ethic: Be diligent in your work; take responsibility for it; accept every challenge; don't complain when you get assigned 'grunt work'.
  • Eagerness to learn from others: Make it known that you know you are newbie and want to learn from all. Don't come with an attitude.
  • Show due respect to your seniors: In the workplace at large, and on your team.

If you have talent and you follow these suggestions, your success is all but guaranteed.

share|improve this answer

The most important things in general are to learn how to:

  • Have the arrogance to insist that you are right
  • Have the humility to accept that you are wrong

You need both of these at the same time. If you won't stand up for your own ideas, you will never persuade anyone to actually pay for you to put effort into making those ideas a reality, yet if you only ever accept your own ideas instead of acknowledging that other people have expertise as well, either in areas that you don't know or in areas that you do, you won't keep being employed.

share|improve this answer
Getting a CS degree doesn't help much with either of these, if the students I've taught are anything to go by. –  Donal Fellows Jul 27 '13 at 10:57
It's a failure if you need to admit you're wrong. Good programmers avoid failures and thus never admit being wrong. –  tp1 Jul 27 '13 at 13:37
Fantastic answer that I will remember as it pretty much sums up 30 years of experience. Also in the last year, the best compliments I had were on a) sticking by my guns BUT being nice and polite and humble while doing it b) my openness to change when I'm wrong. –  Michael Durrant Jul 27 '13 at 16:04
@tp1 : Disagree. "Someone who says they never made a mistake never tried anything new". A. Einstein. –  Vector Jul 27 '13 at 21:08
@tp1 You don't need to admit errors to others if you listen well to what they say first and adapt fast enough. Or you can push on with what you think is right (“arrogance” principle) and accept that you'll have to change things later (“humility” principle). Often, getting on with it and getting the job done lets you persuade others that you are right… but not always. ;-) –  Donal Fellows Jul 28 '13 at 15:22

So, what is some of the most important things I should learn?

As a developer without a degree, the most important thing I learned is that most professional programmers are horrible. I worried tons about learning to program well, picking up theoretical CS stuff I missed, how would I work in a team...

It turns out, most of that stuff isn't really important once you have the job.

Most professionals can't program well at all. My hobby coding forced me to do more coding and more design than most professionals who sit in meetings and write a few lines to maintain an old app or plumb some data together.

Most professionals have either forgotten their theoretical CS education, or went to some podunk college that didn't teach it to them effectively in the first place.

And working in a team is pretty much like working with others doing anything else - don't be an asshat and you'll do fine.

"once you have the job" is the key problem though. If you have no degree (even in a non-CS field) it will be hard to get interviews, and harder to set yourself ahead of other candidates enough for someone to take the risk on you. Interpersonal networking is key here. If you know someone who can go to bat for you, or can verify that you're a good programmer that is your best approach. ...though it also helps to actually be a good programmer, so keep practicing hobby programming and don't worry too much about it being somehow inadequate.

share|improve this answer

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