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 is probably a very difficult question to answer, because of its subjectivity, but even a vague guess would help me out: Now that Khan Academy is beginning to offer Computer Science lectures I'm getting an itch to learn programming again. I maybe am a bit more technical than your average computer user, using Ubuntu as my OS, LaTeX for writing and I know some small tricks like regular expressions or boolean search for google. However from my previous attempts to learn programming, I realized I do not have a natural aptitude for it and I also don't seem to enjoy the process. But I am fairly certain that a basic proficiency in programming could prove to be very beneficial for me career wise; I also often get ideas for little scripts that I cannot implement.

My question is: Let's say you study programming 1 hour / day on average. At what point will you become good enough so that programming can be used for automating tasks and actually saving time? Do you think programming is worth picking up if you never have the ambition to make it your career or even your hobby, but use it strictly for utility purposes?

share|improve this question

migrated from stackoverflow.com Jun 30 '11 at 19:56

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

4  
What languages have you tried to learn? Different languages suit different people better; it may be that you haven't found one that fits the way you think. –  Larry Coleman Jun 30 '11 at 20:47
    
Elaborate on those previous attempts please. If they were just half-hearted attempts then you may have an aptitude but had lousy teachers while if you did really try thousands of different ways, you may well not really have the aptitude that you claim. –  JB King Jul 11 '11 at 22:34
add comment

9 Answers

I realized I do not have a natural aptitude for it and I also don't seem to enjoy the process.

Then don't do it! I see areas all the time where certain knowledge would be useful (accounting, plumbing, and carpentry come to mind) but I don't have the real interest to pursue them nor the ability to become very skilled. Focus on what you're good at and find a ways to integrate those skills into your career.

share|improve this answer
10  
+1 for "Then don't do it!" If you're not good at programming, and you don't enjoy it, please find something you do enjoy and that you are good at. You'll be happier, and so will the people who end up not having to use software produced by someone who's not good at it. Everyone wins. –  Mason Wheeler Jun 30 '11 at 20:35
add comment

I strongly advise you to look at it the other way around: Is there any itch you need scratched? If you use excel, and need something automated, there's Visual Basic built in. I'm sure you have a hobby, there must be something to program there in python. Start a blog, fiddle with Javascript to make a cool effect.

Formalized computing science studies can wait until you start hitting walls in your pet projects.

share|improve this answer
add comment

It becomes a useful skill when you can do something useful with it! This may seem to be a circular argument, but it is a fact. Learning to write scripts that help you do your job can be very valuable. Learning to write macros in your chosen applications can be more useful still.

How long does it take to be good enough? Tough question, but in ideal circumstances you will doubtless learn something useful enough to justify the effort in very short order. It depends upon what you want to do with it. If you were studying for one hour per day, I suspect you will acquire enough knowledge to be useful in a week or so. Of course, the longer you spend studying (and practicing!) the better you will get.

share|improve this answer
add comment

I am going to say it should not take more than a couple weeks to begin to see the huge benefits from automating your repetetive work using scripting. Pick a language such as Python with plenty of documentation, and learn how to manipulate Exel files: I guarantee you will be drastically more productive in any office environment than 99% of you peers for the next 20 years. Think about how many desk jobs are simply glorified data entry positions (some of them even pay very well). In about a month I would be willing to bet that you could write a script in an hour that could permanently make one of those positions obsolete. Guess what, the people that can make other people obsolete are the most successful people around.

share|improve this answer
add comment

It seems like your real question is "when does programming become easy and enjoyable," for which there is no universal answer. For me, part of the pleasure of the programming is the process of solving problems. It's also frequently frustrating, especially when you're blocked by something for which it's unclear what information you'd need to solve the problem. I alternate between irritation and adrenaline highs anytime I'm working on a problem that's hard for me, and the outcome of making something new work the way I want to is in itself a reward.

While you need to do a certain kind of studying to understand programming, you must practice programming to make it an useful skill.

I'm not convinced there's a "natural aptitude" for programming; the closest thing to that is a combination of determination, persistence, and willingness to fiddle until you have a deep understanding of whatever your current problem is and how to translate that into a solution. Some people have better pattern matching skills and can immediately see a viable solution given a sufficient problem statement, but for most people, this skill is hard won and comes from trying to solve smaller, composeable problems.

When I was an 8 year old, I took great pleasure in getting the machine to animate background colors or print my name a thousand times or draw a spiral or a sine wave, or making the machine draw an animated explosion when two sprites collided with each other. Usefulness wasn't even a concern of mine at that time. Now I need quite a bit more to get that same kind of joy (although I still think I would take a little pleasure in making animated explosions), but the feeling of control that you have after you've solved whatever hurdles you had in solving problem X is what makes it worth it.

I never watched the clock when I was first learning to program; I doubt that I would have had the level of concentration needed to solve anything interesting if I only gave myself an hour a day. So throw away that as a metric. Attack some simple problem that has some measure of meaning to you, whether it's "useful" or not. Solve it, no matter how much time or research it takes. Move on to a bigger problem. Repeat. You will become good enough for it to be useful when your real-world problems match up to the abstractions and techniques that you've learned. That's it.

For some people, that takes weeks or months; for some people, it's years, for some people, it's never. For some people, usefulness doesn't even matter.

Is it a worthwhile hobby? It certainly was for the years that I wasn't doing it professionally, and it occasionally came in handy as a skill when I was working on something for school or for one of my few nontechnical employers.

share|improve this answer
add comment

I suggest you throw away the concept of aptitude. If programming is just a means to an end, then focus on the end and not the means. If you want a program to accomplish some task, then make it. Do research, ask questions, seek help, or pay someone else to do it.

Like every novice in every field, you will produce inferior work, and it will take you a long time. But you will remember the problems you have solved, and when they inevitably arise again, you will be ready; each program you make will be a little bit better and be done a little bit quicker. The initial time investment is worth it only if you keep at it.

share|improve this answer
add comment

As you say, this is a hard question to attribute a quantity to. I would say a regimented class with an instructor is probably good for anyone starting out or anyone who doesn't have the natural aptitude you refer to. The reason for this is because you will be less likely to just toss it aside when you get frustrated because of some hurdle you can't quickly find your way over or around. Take a class, see where it takes you.

I would definitely say that even if you plan to not make a career of programming or the like, gaining scripting skills of any sort will help you jump into lots of tasks on computers no matter what your profession is to make your job easier.

share|improve this answer
add comment

depends on what language you are concentrating on.

If you learn c++ you'll get a fulltime job, but it won't help you to solve something at the afternoon. if you learn shell scripts, even a few commands can make your life easier.

share|improve this answer
add comment

At what point does riding a unicycle become a useful skill? When you can do it as easily as breathing. This is not a definitive answer but my opinion.

It's difficult question to answer, but the way I interpret it is: "How long and how much effort does it take to be an effective programmer and to program as easily as breathe?" and for best advice on both I highly recommend a blog post by Jeff Moser: What Does It Take To Become A Grandmaster Developer?.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.