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 don't have many peers who work as a programmer or at least who are social enough to share some parts of their precious knowledge, so I have little to none to compare with.

I tend to learn new things by myself, but each time I started to learn A, it got hooked up with B, which ends up hooked up with X, etc.

In the end, I learn almost nothing but that programming for a newbie is painful. The first part of the learning curve seems insanely steep for a beginner like me which at some point seems to be irrelevant.

Am I a bad programmer to have experienced this?

Or is there a fellow programmer out there who has experienced this and survived, and care enough to share how?

Edit :

Since it marked as duplicate, I checked the question link given. The only thing that is similar between my question and the given one, is we both is quite alone in our programming field.

But what I asked is this, is all programmer going through this steep learning curve? And if they do (which means I am not necessarily a bad programmer), how do they survived through it?

share|improve this question

marked as duplicate by gnat, MichaelT, Robert Harvey, jmo21, GlenH7 Apr 15 '13 at 20:48

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.

re-open. I updated the title based on the actual details and don't feel it is really a dupe. –  Michael Durrant Apr 16 '13 at 15:04
updated question (as of rev 5) is pretty well covered by What have you learnt that has a steep learning curve? and by a question complementary to it, What programming skills have provided you the best return on investment? –  gnat Apr 16 '13 at 15:13

2 Answers 2

up vote 3 down vote accepted

That doesn't make you a bad programmer. That's sort of the inherent nature of programming. It a really big field with many sub-topics. We've all experienced this from time to time.

Perhaps you're trying to learn something that's too broad to start off with. Don't try to make a highly sophisticated piece of software as your first foray into programming -- start by making some simple "Hello World" programs and work your way up.

Any good programming book in your language of choice will help you with this. It should introduce you to those topics one at a time, allowing you to build upon your knowledge with each step. Unfortunately the our industry has been inundated with books like "Learn X in 7 days!", which are usually very bad for all the reasons Peter Norvig describes here -- he also gives some useful tips to students just starting out programming.

In your comments you mentioned you are reading a book on CodeIgniter. In my opinion, this is a bad way to start. CodeIgniter is a very complex framework for high-level application development. If you don't have a firm grasp on the fundamentals of PHP, let alone other elements of web development, this is going to be like taking your first flying lessons in the cockpit of a fighter jet. I suggest you start off with a solid book on PHP first, perhaps one of these or this book, which is now available for free online.

share|improve this answer
Programming book here in my place can be very rubbish, i.e something like how to expert CodeIgniter in 30 minutes or something. It's really hard to find a good book in which I can rely to. I know for a fact that some programmers is born a genius, they requires little to none effort to understand something. What to do when I'm not? Should I look someone as a mentor? Where to find someone kind enough to share his/her knowledge to some newbie programmer? –  Samuel Adam Apr 16 '13 at 2:27
"I know for a fact that some programmers [are] born a genius" -- that's simply not true. Programming is a skill that is developed through long hours of practice, just like any other. It may be slightly easier for some because they had good teachers or because the concepts just clicked a bit earlier -- but we've all struggled at one point or other. I've included some more information on books in my answer. –  p.s.w.g Apr 16 '13 at 14:55
@SamuelAdam You might find this helpful: youtu.be/0SARbwvhupQ –  p.s.w.g Apr 23 '13 at 22:02

I've experienced this and survived, here's my advice:

  1. Consider how you learn. Do you like to be given general instructions that you can follow to get from A to B or do you prefer specific examples and derive the pattern? Do you do better with written words, pictures, or audio? This should be something you'd learn as you pick up new skills.

  2. Consider what kind of perspective you have on this new stuff. Some people like exploring things and seeing how things fit together while others may struggle to do things they didn't do before.

  3. Consider how big of a jump are you trying to do at once? Consider how you get around now and how an infant will go through a few phases to get up and running. There is figuring out how to crawl, how to walk and lastly how to run. If you wanted a newborn baby to run in less than a week after birth, that just isn't realistic at all.

Generally, I have a generic problem solving algorithm that I like to use for most things in my life:

  1. Identify what I want. What is the solution that I'm seeking? Is it just a number, a method, a name, or something else? Within a programming context, do I want a script, an application, a system, or something else?

  2. Identify what I have that may be useful in getting what I want. What strategies do I know? Who has done this kind of thing before? What books may be useful? What terminology may be good to know?

  3. Identify where I am now. This is about looking around to see where I am and what do I presently have.

  4. Knowing that I'm at 3, use the stuff in 2 to work out a map to get to what was identified in step 1.

  5. Once I have an answer, consider if this is to be structured differently for other people to see as a solution. For example, if I'm solving a Math word problem and the answer is 2, I may have to justify how I know that number is the correct value.

Look at how you gained proficiency in A. Was it following tutorials, watching screen casts, reading blogs, or something else? What did you do that gave you the competency you have with A? While B may have its differences, there is something to be said for having natural talents that are still there and can be tapped.

Have you considered how you type now compared to the first time you ever saw a keyboard? Have you looked at how you know to use this website in terms of asking a question, commenting on answers, etc? I doubt you knew how to do this without any thought or effort. Rather, on some level you took it upon yourself to try this site and with practice figured out pieces of this site. Same applies to technologies and that there is something about exploring and mastering new tools and techniques that fires up some developers.

share|improve this answer
Exactly what I meant. I mean, in programming, lets just say that I am now (hardly) walking in A. Next thing I know, I got introduced to B which requires me to crawl as an infant again, when I am only barely able to walk in A! How do you survive this kind of learning curve? –  Samuel Adam Apr 16 '13 at 2:23

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