I am just starting out in programming learning Aspect and I'm nearing the end of the introduction. I've learned about algorithms and functions and types of code and Python and briefly the basic ideas of programming. And I have to say it totally fits the description of a language it is like learning how to speak again.

So what I would like to know is after this trivial and trying stages of learning just how to get into this gate of overstanding, does programming become easier and more fun?

Also I would like to get an idea of how long or far into the learning process it is, before you can speak this language and do things like write an application or design on the web and all these electrifying things are graspable and doable?

  • 3
    Fun is subjective. To me, learning a new programming language is especially fun during the first phase. All the new features, the syntactic sugar, the libraries, commonalities and differences to other languages... – Frank Jan 25 '12 at 6:16
  • 4
    You probably mean before coding is no longer fun. :) – Kris Jan 25 '12 at 6:23

I'll talk from personal experience. I find that a programming language (and programming in it) become fun when you can control it at will, where you know exactly how to make it operate in the manner you want.

During my final year project at university for example: I started writing the code and it would frustrate me due to my lack of understanding surrounding the language and the application of the language to the problem, a few weeks down the line and I could not stop coding in it. To relate to your question : Stick out the trivial stages because the fun you will have later on is worth it, and you will find you use some of this code in your 'fun' work too.

In terms of writing something useful my advice is to get stuck in. Find something that would be useful for you to have on your system and write an application that does it, a long the way you will learn alot of the stuff you would otherwise learn during the 'testing and trying' days.

Most of all have fun!

| improve this answer | |
  • +1 for "I find that a programming language (and programming in it) become fun when you can control it at will". Knowing how to make the language bend to your will is great. – Nathan Hoad Jan 25 '12 at 14:31

According to this good article "ten years"!

Well ... may be not so long, but your question is in fact two distinct questions: one about "language mastering", and the other about "fun".

They are not necessarily related. What is required to have fun is having an understanding and control on what is around it. That's not necessarily the whole space of the computing science.

Of course, the more humility you'll have, the before your fun will start. The most prominent and profitable you want to be, the harder your job will be (and will not necessarily be fun).

| improve this answer | |
  • +1 for Norvig. But I was still learning new things about C, one of the simpler languages, after the ten years. – Joseph Quinsey Jan 25 '12 at 9:49
  • You don't need to be an expert to have fun, and 10 years of practice is not the same as 10,000 hours of deliberate practice over 10 years. – Mark Booth Jan 25 '12 at 10:51
  • @MarkBooth: I also noticed that incongruence. But that point here is mostly what you (or the OP) mean for "fun". You have to know at least enough about the field you wan to move in without struggling and stressing too much. The smaller the filed, the lesser the experience needed, the more repetitive is the "fun" (and hence teh consequent annoyance). 10 years is clearly ironic, but a compromise must be found. And it's rarely a matter of days or few weeks. – Emilio Garavaglia Jan 25 '12 at 15:25

I find that in general I have to write about 1000 lines of code before a language really clicks. Of course if there is a major mental shift (Like say Haskell) it will be a bit more, while going from Javascript to CoffeeScript took a bit less.

Of course it also gets easier if you know a bunch of languages already and have been doing this for a while.

| improve this answer | |

Your underlying assumption is that the application of knowledge is fun, but aquiring such knowledge is not. But I suspect whether this is true or not depends on the individual personality and can't be answered in a general way.

Please let me rephrase your question then. Do you know the so-called flow theory regarding intrinsic motivation? In a nutshell, it describes the psychological effect how you get a positive motivation about doing things as long as the given task is not too hard and not too simple in relation to your abilities. In light of this theory your question can be rephrased to: "When will I know enough about a language to feel programming in it is not too hard?"

My answer then is that this is up to you or the tasks that lie ahead. By adjusting the difficulty of the programming tasks you can start very early on to feel very comfortable with a programming language. But pick a complex job too soon and you won't be happy. If the question was about body building the answer would be: Pick the right weights and don't start with the heavy ones, and the fun can start.

| improve this answer | |

The 'fun' part is highly subjective - some people hate the first crippled steps in a new programming language, others, like me, enjoy every part of the way (especially when the language in question reveals new insights through the different mindset it supports).

The productivity part is less subjective, but can vary wildly. A few things:

  • the more languages you know, the easier it is to pick up a new one
  • a language that matches your mindset will come easier
  • a language that is similar to one you already know will be easier to learn

Also, every language and ecosystem has its own balancing of contradictory concerns (developer performance, maintainability, runtime performance, platform support, learning curve). Languages that focus on a shallow learning curve and high developer performance (e.g. python) obviously yield productive results faster than, say, C++, where runtime performance is God.

| improve this answer | |
  • I would also add that you will learn more from a language that is very different to the languages you already know. Hence the common recommendation that people learn at least one functional programming language. – Mark Booth Jan 25 '12 at 10:50

I find it gets fun when you have sorted out your tools and gotten used to the regular workflows for basic activities like testing/deployment etc. It is important to get the mundane stuff out of the way (or reduce their annoyance level down to something more palatable) before you can actually enjoy the fun stuff.

| improve this answer | |

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