Let me start off by a little background. I am currently a 3rd year pursuing a BS in Computer Science at a small Christian school in San Diego. I have take a good chunk of the courses offered to me, and have received an A/B in every class so far without too much stress.

Now, I want to expand my learning a little more, so I have come to communities like this to learn new things. Here is the problem. I glance over all the questions asked here, and become extremely discouraged. Sad to say, but I don't even understand a majority of the questions posed here.

I guess my question to you (Stack Overflow community) is:

  1. Did it start like this for you?
  2. If so, how did you conquer it?
  3. Is this normal?

Thanks

share|improve this question
28  
I will share some of the best advice that I got one time. It was given to me by a physics prof regarding physics but it is true for any speciality really. "Physics is like music. You have to just listen to it for a while before you can start to understand it." –  EBGreen Feb 25 '09 at 19:50
15  
Ugh, the reputation people get for these questions is absurd, even if it is marked community wiki. It makes you feel like "why bother asking good questions and providing good answers, when I could just ask a culture question and rocket my way to admin privileges" –  m4bwav Feb 25 '09 at 21:01
1  
Because, you weren't really helping anyone with a programming related problem. I mean why should someone get the reputation and status of a programming expert, if there expertise is really in programming culture. –  m4bwav Feb 25 '09 at 21:51
5  
High rep does not give you the ability to answer harder programming questions. It gives you the ability to participate with the community in different ways. –  EBGreen Feb 25 '09 at 22:13
show 58 more comments

migrated from stackoverflow.com Aug 4 '09 at 23:00

This question came from our site for professional and enthusiast programmers.

71 Answers

The secret to happiness as a developer is not to know everything, but to be prepared to learn a lot about a particular niche. I don't know the answers to 90% of the questions here, but I do pretty well with the ones I do know. (And I've been a developer for 25+ years)

And then some day, you'll be like me, nearly 50 years old, and looking at all these questions and think "am I too old to learn all this new stuff?" In my case, I snap out of that funk by assigning myself a new side project involving a new technology. Last time I felt this way, I learned Perl and built some web sites using Fast::CGI. This time I'm doing an iPhone application.

share|improve this answer
37  
and as soon as you see a question that falls into those 10%, snipe it like there's no tomorrow! –  grapefrukt Feb 25 '09 at 20:20
4  
@grapefrukt - you've noticed my method for getting 17K rep, have you? –  Paul Tomblin Feb 25 '09 at 20:24
55  
"I don't know the answers to 90% of the questions here". Wow! You know the answer to 1 out of 10 questions!!!!! I haven't even heard the words in 9 out of 10 questions before! :-) –  danbystrom Feb 26 '09 at 18:41
show 27 more comments

Don't be discouraged. Just be willing to learn, one little chunk at a time. To answer your questions:

Is this normal?

Yes.

Did it start like this for you?

Most definitely so. It turns out that computer science (or programming or software engineering) requires a lot of nitty gritty know-how e.g. knowing your way around the command prompt. And on top, it also requires solid fundamentals e.g. understanding big-Oh and how your algorithms perform. School tends to focus heavily on the latter, which is a lot of hard work and thus it can be overwhelming to find out that you still lack all the nitty gritty knowledge after all that. This definitely happened to me as I was finishing school.

If so, how did you conquer it?

I'm not sure that I have conquered it. You never stop learning. The thing to get good at is knowing how to read documentation, learning tools, libraries, etc and being methodical about this. Oftentimes it is really tempting (specially with SO around) to just search for how to do something and not understand what you are doing: drop that habit if you have it (I did/do). Always look into things until you understand them fully. If you don't know how to begin, it is probably an indication that you're also lacking some fundamentals knowledge -- find a book and read it from the beginning. This whole thing will be very time consuming at first, but as you build up your knowledge-base it'll become less so.

share|improve this answer
8  
+1 "You never stop learning" - true. –  Hamish Smith Feb 25 '09 at 20:29
add comment

The questions on SO represent practically every aspect of professional software development. Languages, frameworks, tools, techniques, algorithms, specific products, patterns, UI design, and best practices are just the tip of the iceberg for discussion here. Then you add in the somewhat-offtopic stuff pertaining to IT, system administration, and personal approaches.

So I'd say don't get discouraged because what you want to do will bear itself out. If you want to be a Windows developer using C#, then that's what you'll be, and the questions about Erlang or Grails will be of no consequence to you. In other words, you'll create your own filters.

Even our beloved Jon Skeet doesn't work in every tag. :)

share|improve this answer
7  
If Jon Skeet hasn't worked in some tags, it's only because they're not yet strong enough to withstand the awesome power of his mind. (sorry, couldn't resist) –  David Z Apr 26 '10 at 2:36
show 2 more comments

Yes, this is normal. Unless you are Jon Skeet, you probably aren't an expert in every tag.

If you love programming, keep going. If you don't get out.

Believe me, they don't teach you everything in college. You'll just have to learn the rest of the stuff in the real world.

share|improve this answer
1  
I'd amend that to say "they don't teach much in college". I've yet to hear of a college that did more than get your feet wet (though I'm sure it seems like a lot more when you're learning it, it really is just the tip of the iceberg). +1 –  rmeador Feb 25 '09 at 19:55
7  
even Jon Skeet aint there in 'every' tag :-). so we can all be happpy. –  M.N Feb 27 '09 at 5:59
2  
@rmeador, you're completely right, college just teaches some of the basics and how to learn. I think SO should be a part of any college now. –  Nathan Koop Jul 31 '09 at 17:31
add comment
  1. YES.
  2. Read, then try.
  3. Yes.

Medicine, Law, and Programming all have one thing in common: DO NOT consider University the place where you Learn, and the workplace where you Do. University is the beginning of your career, which must always include learning. The nice thing about programming is that no one dies or gets sued while you experiment, which is by far the best way to learn ;)

share|improve this answer
4  
Look up "Therac-25". It may be a rare exception, but there definitely are areas (and increasingly not just in medicine) where a software error can kill people. And getting sued is not that unlikely at all if you do it professionally. –  Michael Borgwardt Feb 26 '09 at 10:31
2  
I guess the difference is that you can experiment directly with programming without worrying about death or lawsuit... I would hope that no "experimental" code would go into "production" in life-or-death situations ;) –  Dave Feb 26 '09 at 14:22
1  
Come on. For every version that goes to live production I make 10 that even fail to compile. –  Tadeusz A. Kadłubowski May 24 '10 at 18:44
show 4 more comments

It's funny, but I remember way back when I was still a beginner, and I would read programming magazines or hear REAL programmers talking, and I would be intimidated too. So, yes, it started like that for me as well.

How I handled it was just being patient. Over time I realized that many of the concepts and stuff weren't really that difficult, once you understood them. I just made it a habit that whenever I felt intimidated by something, I would go out and learn as much as I could and master whatever it was. For instance, at one point in time C pointers really threw me for a loop. That's when all my experience was in BASIC on TRS-80s. Nowadays I find them easy to comprehend.

I think it's pretty normal, and you just have to keep plugging away. Just remember that ignorance does not equal stupidity. Just because you don't understand something NOW doesn't mean that you're incapable of understanding it.

share|improve this answer
2  
+1 for the TRS-80 Basic reference. Good times, gooood times. Excuse me, I have to get back to my rocking chair on the porch of the old-folks home. –  Kelly S. French Aug 31 '09 at 14:37
show 1 more comment

I've been coding for 20 years and see some questions that I have no idea what they are about. And that's simply because there is such a wide range of topics.

For example, I was never a Python programmer, so if a question comes up that has terminology that is specific to Python, I think to myself, "huh?"

So yes, it's perfectly normal.

share|improve this answer
add comment

No, you shouldn't be discouraged at all. Nobody knows everything.

You'll start out in a career and it will be a rough and rocky but soon you'll be amazed at how much you learned in the last year, month, week, day, hour, minute, etc.

share|improve this answer
add comment
  1. Yes. Somebody who's just coming out of college is very frequently woefully unprepared for some of the very important aspects of software engineering these days. That's not to say your education is fail; it's just to say that CS courses don't do enough on some of the things that are important for writing software professionally. I think there really needs to be more Software Engineering focus in a CS degree.

  2. The Internet is a really, really great place (for more than just Porn!). The best software engineers these days are autodidactic. Trawl the blogs. Spend time here on SO. In fact -- don't be afraid to research an answer to a question you don't understand. That's a great way to learn. Remember: things change a lot in our field.

  3. Yes, these feelings are perfectly normal. For more than just CS majors, really; everybody getting close to graduation has those "Am I doing the right thing here?" moments. It's worth investigating before you go off into a career, but don't dwell on it too much. A CS degree is often good for more than just a programming career.

share|improve this answer
show 7 more comments

I would not be discouraged! Stack Overflow contains an odd-odd mix of many many topics. Yes, you start out with your mind swimming.

If you're in a Bible College, I would read Ecclesiastes 4 and 5, find what you love in computers, and love doing it. You'll drift toward your niche in the industry and work form there.

If it's any encouragement, I came out of school w/ an MS, started doing QA work, moved to IT, moved to SysAdmin, and landed finally in Java Development.

As a Christian, you have more promises than the average bear to lean on. :)

share|improve this answer
add comment

SO usually covers a lot of language-specific problems rather than the general problem-solving skills one learns in school, so I would say do not be discouraged by SO. Look at the more language-agnostic questions and see if you understand them. If you do, you're on the right track.

share|improve this answer
add comment

Sad to say, but I don't even understand a majority of the questions posed here

I have a university degree, My job title is "Senior Software Engineer", and I've been programming professionally for over 6 years, and I don't understand the majority of questions here, and to put it bluntly, I'm not supposed to.

One of the stated goals of Stack Overflow is to recognize that there are so many niche areas of programming, and that the only way to possibly find an answer to most questions is to have as wide an audience as possible.

In a nutshell this means: The only way to find the 3 people on the planet who know how to solve your specific exact problem is to make sure we have an audience of all 200 million possible people. Don't worry if you're not one of the 3 people with an answer to a particular question... sooner or later something will come along that you will be an expert on, and then you'll be able to show all of us that :-)

share|improve this answer
add comment

Try to answer a single question on a new technology you are learning every day. You may not initially know the answer, but research/test/play around until you find the answer. Do this and you will gradually improve.

share|improve this answer
add comment

Excellent questions... The answer is Yes to all three. :-)

Of course, when I started, there was no Stack Overflow but there were many forums and newsgroups that I visited. I became very overwhelmed with trying to understand the questions.

I found the best way to overcome it is to just get in there and start developing. As I come across challenges that I don't know, I search Google, blogs, and ask at forums and now Stack Overflow.

One way to do that is to look at places like CodeProject (http://www.codeproject.com/) where you have a large repository of code samples, tutorials, and such-like. You can download the source code presented in many of the articles, build it, step through it with a debugger, and see how it works. Then try to modify the code in a way that would interest you and see what you can do.

And of course trying to come up with your own "pet" projects is a good way to learn and be challenged, so that questions will arise and you will have an opportunity to look for the answer or ask it in the community (online or your associates).

Best of luck, and I do know what you mean. Sometimes we forget once we've been around things for a while how it is to start out and just the quantity of information is overwhelming. Don't give up!

share|improve this answer
show 1 more comment

Don't worry about that. There are so many different technologies in IT that it is impossible to understand or even be aware of all of them.

I know how you feel though, because I had the same feeling a couple of years ago. Just keep on studying and programming and you will naturally get interested in a couple of technologies that really matter for your job and which you will enjoy using.

share|improve this answer
add comment

Did it start like this for you?

I had learned some programming while in high school and had written a couple of small programs. Then I wanted to improve one of my programs and begun redesigning it, but I hit a wall in trying to manage the complexity. Writing small programs was OK (1000-2000 lines of Java), but I did know how to go about writing larger programs.

If so, how did you conquer it?

In university I got the skills for designing larger programs, and the basic information on how things work (databases, networking, operating systems, algorithms, data structures, assembly code, concurrency, project management etc.). None of the things in themselves were hard to learn. It just takes time to learn them one by one. You also need to practice what you learn. While studying, it's good to have some hobby projects or part-time programming work, so that you can put to practice the theory that they teach at university (but don't work so much that it slows down the studies).

Is this normal?

In programming, you need to be learning new stuff all the time. And the more you learn, the more things you will see in the horizon about which you don't know that much. Then depending on what your needs are and how much time you have, you need to decide what learning that will benefit you the most, and leave the rest for some other time, or ask someone else to do the work which requires knowing those things.

share|improve this answer
add comment

Let me channel The Sphinx (Mystery Men) here for a second: There is more to computer science than software development, and more to software development than computer science.

Also, let me try and recall / paraphrase what one of my professors said: The reason to study computer science instead of just learning the current hot technology is that the technologies you'll spend most of your career working with haven't been invented yet.

share|improve this answer
add comment

NOBODY understands most of the questions posted here!

We're all in the same boat. Programming is a huge field now - you simply can't know it all anymore. Fortunately, we all know a bit, so and can help each other out.

There is nothing better in life than doing something that you enjoy.

share|improve this answer
add comment

1. Did it start like this for you? Ten years of programming and it still is like "this" for me.

2. If so, how did you conquer it? It's not necessary to "conquer it", realize that most of the posts here are related to programmers getting stuck while doing something looking for a quick answer to that problem. It's a bit like asking your neighbor how s/he fixed that problem yesterday, since it would save time, and would generate an interesting discussion too.

3. Is this normal? Yes.

My advice: spend time with a good programming book, many if possible. It was much easier to do that back when bandwidth wasn't so cheap. So many more distractions now.

share|improve this answer
add comment

On the cover, in large friendly letters, are the words "Don't Panic".

I'll admit, I'm a newb (I've been programming since June 2007 and I don't have ANY technical background at all), so perhaps I am completely unqualified to answer this, but here goes.

The reason I am not intimidated by most of this stuff is that a lot of it is completely unrelated to anything I need to do right now. I work predominantly on web stuff (and specifically on Flash and Flex), I use PHP, JS, HTML, CSS... Most of the questions here are completely beyond my scope. I view this as, "They know that, I know my field."

The thing that really gets me is that I don't know what I am supposed to be trying to learn half the time. I have never even heard a professor even say Olog2n, and I don't even own a textbook which describes "best practices" for OOP. I'm more or less forced to figure out all of this stuff on my own and I make a lot of mistakes because I have no idea what I am doing. I also really want to know C and C++ (and somewhere along the way master Java, Perl, and Python) but I don't even have a good place to start...

But, I'm not miffed. If anything, the very fact that I don't know any of this means that I am more likely to look at something new. If it looks like Greek, then my mouth drops and I center-click the tab. Otherwise it is a fascinating trip.

I also have in my favor a particular stubbornness, but mostly this is built on a knowledge that, in computer programming, "if you bang your head against a wall for long enough, the wall will move"

share|improve this answer
show 2 more comments

I'm guessing that most of the questions you are reading that are making your head spin are the ones that are specific to a technology, vendor product, or tool.

They make my head spin, too, because:

  • No matter what anyone tells you, you cannot possible ever know everything about everything. You will eventually develop specializations, so that you will eventually understand all the questions about some things and some of the questions about all things.
  • The vendors, tools and products will change. Today's detailed questions about them will morph into questions about other details. But the underlying principles that you are learning now will help you understand which parts of which answers apply to the new questions.
  • The education you are getting now should help you understand what the "real" questions and answers are. Those who are experts in only the syntax of the current tools will go through life getting their heads spun every 6 months or so.
  • Formal education, especially that in Computer Science, is typically less "applied" than some other offerings. CS grads are supposed to bring more foundational knowledge to a team. Sure, some people will applied degrees will know a bit more right out of school, but they will have to work harder on the foundational issues than you will...and vice versa.

Don't worry. The worst possible thing that could happen in the future is that you spend some night reading through thousands of questions and you start thinking "Geez, why aren't there any new questions these days?" That would mean that you have nothing left to learn.

share|improve this answer
add comment

It is normal. Stackoverflow covers the entire range of development technologies. That is a huge range of knowledge, and nobody understands it all. You can't learn it fast enough to keep up with all the new stuff that is being added unless you specialize in a narrow niche. So get used to it. For the rest of your life you will go to sites like this and and wonder what all these guys are talking about. They will continue to invent new languages and new concepts and to give them strange new names.

But the best response is not to be discouraged any more than you should be discouraged when you walk into a library and realize you haven't read all the books. Stand in awe! Here is virtually limitless variety and opportunity for you. Take off your shoes --- in its own way, this is holy ground.

As you rise into management jobs in your career, however, you will have to make decisions to severely limit the variety within your organization so that you can build and maintain code cost effectively. Welcome to the real world!

It didn't start like this for me. I started writing Basic on an Apple IIe (found only in museums today). That was technology that a single human being could master. Ever since then I have watched the real world speed on past me. It has been a great life with wonderful people, and I am honored to have stood on the shoulders of so many giants who have built this stuff.

share|improve this answer
add comment

Most of these questions are very specific and about tools. Who cares about tools? Work on your fundamentals and use/learn the tools that you have available. I probably don't know 99% of the questions asked here, and I'm not afraid to admit that. It doesn't keep me from being kickass at what I do.

share|improve this answer
add comment

First off, let me tell you that I am primarily self-taught. I went to a community college and got a cert in programming (C primarily and some VB with SQL and database stuff tossed in). My day job is not programming (I'm a tech editor). I do, however, create web sites for friends and write games and tests for my children.

That said

  1. Did it start like this for you?

Yes. The wealth of information here and elsewhere can be totally overwhelming and discouraging.

  1. If so, how did you conquer it?

You never have to change what you see, only the way you see it. I look at it as a vast treasure. I just dive in and try new things. Recently, I started using Perl for the first time ever. I was like a kid with a new tub of Legos. As for this site, take a look around at subjects you've studied or just touched upon and go from there. That's what I do. That way you'll have a comfort level while still being challenged and learning.

  1. Is this normal?

Totally. Even all the wise experts who have already responded have said so. You're in good company.

share|improve this answer
add comment

Think of this site differently. Rather than a place where the answer is always known, it's a place where for every. single. answer. someone was as completely dumbfounded as you. They just didn't hesitate to ask. Great question.

share|improve this answer
add comment

I definitely understand your situation. I'm a CS undergrad (senior year), I poke around on this site from time to time, and I've done so much on Code Review SE for the six months I've been on there, but SO still intimidates me greatly.

My lack of practical experience isn't the only reason, though. It's mostly because this place is so full of experts, and I feel very very small compared to them. I'd like to answer a question or two sometime, but I would most likely get beat with a better answer first. As for asking questions, I now only do that as a last resort. My previous experience with that has been so-so, and I would just find myself making excuses for not asking a question on here. If I need help with something, I'll just look for an existing question and then upvote accordingly to express my thanks. Nowadays, upvoting is the only thing I bother to do here.

But, on Code Review SE, I do everything: ask questions, answer questions, flag, vote (up, down, close, reopen), make edits, review edits, and participate on Meta (I'm even helping with introducing a new site policy). I've learned so much over there, and that's just where my heart is. Unfortunately, as that site is still in beta, it is still prone to shutdown. If that were to happen, my overall activity on SE would plummet, and it may even affect my enthusiasm of programming (hopefully not).

share|improve this answer
2  
I'm with you on the question asking front, in that I've never asked a question on SO simply because most of them had been asked and answered for me. Don't hesitate to answer though. Yes, plenty of my answers were surpassed by far better answers of more knowledgeable people. But that should not get you down. You should see it as a learning experience. The next time you come across a similar problem, you'll be far more able to answer it based on the experience you gained. –  Bart Sep 7 '13 at 9:20
show 5 more comments

When I look at things on SO, I probably don't comprehend much more than you do. And I've been coding professionally for 20+ years. The difference is that rather than being discouraged my experience tells me that most of these questions are so specific to a combination of tools that you'd almost have to work where that person works to have an answer ;-)

Further, by the time you graduate and begin working, many of these tools will either not exist or not be in widespread use!

Keep looking at SO, but focus more on the larger questions rather than the ones trying to put a square peg from tool X into a round hole in tool Y.

share|improve this answer
add comment

I'm a fourth year student at a school in SD as well. I'm also pursuing BS in computer science.

I totally feel what you are feeling. I have finished numerous courses;however, they do not really let me answer 99% of the questions on Stackoverflow. This doesn't mean that I should be discouraged, but become more passionate about the field I'm involved with. "THERE ARE A LOT TO LEARN!" If a field has a opportunity to learn, then means that field has potential to growth.

What I'm trying to get out of school is how to approach a real world problem. For example, if you want to build an application for a customer who wants a simple web application for his business, how would I investigate, design, implement, and test the application.

It's like learning your first computer language. Once you learn C, Java is not too hard. Once you know Java, C++ is not too hard. Once you know C, Java, and C++, C# is not too hard to pick up.

So, I suggest you to do the same.

Don't be discouraged. Rather, become passionate about where you are right now (WE ARE HOT ASSETS). Try to learn how to approach a real world problem and how to solve. Also, try not to be intimidated by overwhelming amount of technologies.

share|improve this answer
add comment

CS programs teach a lot of important fundamentals about software such as algorithms, but don't usually teach many practical, real world skills, unless there is a Software Engineering course. Most questions on SO relate to professional software development. Writing software in the real world is a lot different than CS courses would lead you to believe.

If you have the opportunity, do an internship so you can get some hands-on experience, and you will see how many of the questions asked here apply to professional software development.

share|improve this answer
add comment

I've been a fiberglass sailboat repairman, dog-sled guide, industrial welder, sawyer at my own sawmill, labourer and student but no job has ever held my attention by being constantly challenging like programming.

Don't despair, have some fun with the culture and the lore by reading the Jargon File.

If stuff like the The Meaning of ‘Hack’ doesn't make you happy then you might be headed in the wrong direction. In that case find a way to use computers to do something that you want to do.

share|improve this answer
add comment

You must log in to answer this question.