Personal Productivity Stack Exchange is a question and answer site for people wanting to improve their personal productivity. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I like to focus on one thing and master it while I'm learning. However, my problem is that I don't focus and I don't like that it just goes like this: Assume that I want to learn PHP. I go and bring a good book and start reading and learning, and when I'm in Chapter 4, for example, I say PHP is not good, let me learn ASP.NET. And I go in the same scenario and then I stop and look for something else.

Can you imagine that is my situation for 3 years now? My friend picked up Java and he is now building good pieces of software and I'm still stuck between my decisions.

What is your recommendation? I'm sure some had a similar experience!

share|improve this question
Why do you want to "master" programming? What else have you ever mastered and why is programming any different? – JeffO Sep 12 '13 at 16:29
I guess it's the notion nowadays, that they only want to hire the "rockstars" of programming. If you are JustAProgrammer that does it just because you have interest in it and you can do average stuff on a 9-5er, you will not get hired. – Juha Untinen Sep 13 '13 at 12:19
@JuhaUntinen - There's a lot of room between "rockstar" and average which is probably where most of the employed programmers are. – JeffO Sep 13 '13 at 16:01
This is actually not a question about mastering programming - it is a question about persistence, and sticking through learning a particular topic until you have completed it. Don't give up! – Rory Alsop Sep 13 '13 at 17:08
If you found an answer to be helpful, could you please choose it? – dwwilson66 Oct 11 '13 at 14:37

10 Answers 10

I would echo Blue Tin. I have had many similar experiences. I take on PROJECTS, and learn what I need to complete the project along the way. In 2005, for instance, I bought a cheap warehouse building with the intent of making it a live-in studio & workshop. I was on a budget and didn't know anything about home repair and upkeep, but because I couldn't afford a contractor, I did it myself. Sure, it took a while, and some of the walls I built aren't PERFECTLY smooth, but I know how to wire new electrical outlets, install toilets, hang drywall, and put up tile. I also discovered along the way that my skills at eyeballing something and guessing the measurement (like pulling the 2" screw from box that has assorted sizes) has drastically improved. The only way to get good at something is to practice, and if you don't have the self-discipline or drive to practice for the sake of practicing, practice in the context of a project or deadline you give yourself. That's always worked for me.

I've always wanted to learn electronics, and have started and stopped since high school. Being interested in music, I decided last year that I wanted an analog synthesizer. I'm about a week away from installing the board for my first bank of oscillators into a case I'm building. No, I'm not an electronics engineer, but I know a few ways to make chips generate a noise. My next step will involve building the filters to manipulate the sound further. I know where to start and the right questions to ask, so I'll continue my studies.

A lot of the motivation comes from having a REASON to so something; that may be the case with you. Why are you passionate about learning programming? Answer THAT question and you may just find yourself insatiably studying and learning that new material without getting sidetracked. A sense of purpose can be very powerful.

share|improve this answer
Do you have a blog or something with your analog synthesizer project? I am interested to hear how it turns out. – Gaʀʀʏ Sep 17 '13 at 20:21
Sadly, no. But it's something I do need to do. I see you have your site on your profile; I'll send you an email via your site and we can connect outside of stack. – dwwilson66 Sep 18 '13 at 13:56

when I'm in Chapter 4, for example, I say no PHP is not good let me learn ASP.NET and I go in the same scenario and then I stop and look for something else.

That is your mistake. Don't do that. When you find yourself doing it again, tell yourself: that is what I do wrong. I should focus on this language and keep learning it until I can complete a professional project in it.

Do as your friend does. Don't drop what you started at chapter 4. Keep learning it instead.

share|improve this answer

I know many people in the same situation than you.

To put it a bit bluntly, I find that many people have a very high fear of failure and will find excuses to not look like they were unable to finish a task.

In this example, I think you should consider the programming language as a tool not as a goal. Surely there is something you wanted to do in PHP: you were not learning PHP for the sake of it ? Then you should focus on accomplishing that goal using any means at your disposal rather than focusing on the fact that you switch languages.

For example if you wanted to learn about making a website, you should not focus on the language but put goals in terms of what you delivered in terms of website functionalities. Not only this will help you to formalize precise goals but it will help you to be more 'business aware' in the future.

share|improve this answer

The problem with this approach is that you will know the basics of a "hundred languages", but after a certain point, those basics are the same for all of them. So in order to improve, you should focus on just one language and learn as much as can. Then when you know that one language well, most of it will apply to any other language too. So, don't focus on any "my language is better than yours" or "this is faster than that" issues. Just learn a language well.

As others have mentioned, take on a project. Do you have a collection of CDs or Blu-Rays that you want to list online? Make a PHP website where you can enter the artist or director, and the title of it. Then the PHP could retrieve the information for the item online, and you can verify the results with a single click (or edit). Then upgrade it by making it do that automatically by comparing multiple sources (including CaSe SeNsitiVE titles). Then expand it to retrieve the artwork for it too, from online search engines...

Or how about a Windows GUI program, that has a picture of a drumkit, and when you click on a specific drum (area), a sound related to that drum will play? Then make it do the same with MIDI data automatically. Do the same for a full range of instruments.

Perhaps a program that you use to manage your monthly budget, with a certain savings goal?

Anything that will be helpful to yourself, basically. Make it interesting, or make it solve something automatically that you now have to do manually. Make a program that helps you.

Then make whatever you did, do more! Expand it to any ideas you come up with, even if you don't know how to do it. Then start searching for information on how to do it. Try many times in "playground" projects, until you get it. Then implement it into your real program.

The important thing is to make it first work, and not really follow any rigid rules. You will learn those much easier when you first learn how to get the damn thing to work at all (this is my personal obstacle now).

Good luck :)

share|improve this answer

You need a goal to motivate you. I learned PHP because I wanted to build an online community. After a year, I started earning money with that community, and now I know PHP.

share|improve this answer
Wanting to build things is a better motivator than just wanting to learn a particular language. – JeffO Sep 13 '13 at 16:02

Don't beat yourself up too much! Part of learning programming IS to get a broad overview of different technologies and the similarities and differences between them. To be able to develop using any technology, you will need a whole bunch of skills - some specific to that technology, and some more general. To put it another way, if you know PHP and Asp.Net, then you already have some skills for development on other platforms.

I do agree with the other answers that it's good to have a project in mind and to learn by working towards this.

share|improve this answer

My 2cents.

I have had a similar experience to yours, C, C++, Java, Ruby, PHP, Javascript, Python etc... What I've learned along the way is this: Great software can be written in any language . And the direct result of that discovery: Focus on learning to create great software, despite the language

For me that boiled down to spending more and more of my own time learning about software development in general:

  1. Design Patterns
  2. Data structures
  3. Algorithms
  4. Testing
  5. Surrounding tools (Revision control, IDE, metrics)
  6. Server admin (Dev ops)
  7. Project management skills
  8. People and communication skills

Try your best to learn the technical aspects on the job, great companies will hire someone who doesnt know the language but understands how to make great software.

share|improve this answer

The problem you are facing is so common.

so do not need to worry about this.

let me make you understand the significance of focusing on one programming language till you get thorough

When a baby borns we teach the baby a communication language it takes almost 5 or some years to speak the language fluently. Then depending upon the needs the baby learns any other language that its think it needs. When the baby learns the new language it compares the languages like what is the word for go in some language.there after it takes only months to learn a new language.

See how learning other languages are easy after become well versed in one.

The same applies to learning programming languages also.

First get yourself thorough in one language immerse yourself in that programming language till you feel you are thorough in that language.

Then if u feel you need to learn some other language it will take very less time.

For example you just will have to study how class,interface or for loop,struct etc are used in some other languages like that

How to become thorough in one language

1)know the theory behind the code

2)work out more samples its more important

3)code many projects right now start from the small project

4)join a forum ask doubts solve others doubts

5)contribute to open source projects

6)get your code reviewed by you are peers or community members

share|improve this answer

That is what happens when there are so many things out there we want to know, and we want to know the newest, best, and easiest one. As it looks to me, this is especially true in the programming world where anyone can build his own language, technology or application.
It's a bit like smartphones - we want the newest smartphone so we abandon our baby when he's just one year old (argh, Apple).

Anyway, I didn't have your problem with languages - but I still have a serious problem with applications. I can spend two hours searching for the best media player for Windows and finally choose the first one I see.

In my opinion, there are two options:

  1. Don't decide about a language or technology, but on what you want to do - what is your project/software/website (a website I guess, if it's PHP or ASP.NET). During the creation of one website I learned a lot more than I learned just "a language" so I can start.

    When you know what you want to achieve, you have (1) better understanding of your needs and (2) motivation.

  2. Go exactly the opposite way and compare all of the options. Decide: "I decided to learn C#". Go for it. Learn C# from the bottom up. And I can calm you down: if you know X very good you'll learn Y, Z and A in half (or quarter) the time it took you to learn X.

share|improve this answer

It is just your style, eventually you will like something and stick you it. It is always the same process for everyone. Some find it fast, some take time.

share|improve this answer

Your Answer


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

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