Take the 2-minute tour ×

I am into programming since last 3 years. But I seems to be lost in it. I am not able to get good at it even though I code everyday.

suppose I solve one problem, I will wander from solution to solution and implement some other solution. I cant focus much. I get many defects for the code I write. I afraid of code I dont know why if I dont finish it on time my boss will fire me etc. I enjoy coding but not all the time. How to increase patience?

I always wonder how do I become the best coder like many exceptional programmers. I know this sounds subjective but I think this will help programmer community to get good at it especially for average like me or beginner programmers.

share|improve this question
It's common to feel this way. Not all of us will write compilers or will be hardcore programmers. I have no formal training in programming, but problem solving is key. With technology changing on a very rapid basis, it is very hard to stay above water. I strive toward continual improvement. That's my goal. Understand this profession is very different, strive to do you best and keep moving forward. I always take some time every week to learn or understand something new. As long as you keep that attitude, you will get better. –  Jon Raynor Jul 22 '11 at 3:23
“I afraid of code... if I dont finish it on time my boss will fire me etc.” — That’s not a great environment in which to enjoy, and therefore get better at, programming. –  Paul D. Waite Jul 22 '11 at 8:42
add comment

closed as not a real question by Robert Harvey, gnat, Jim G., Dynamic, Walter Oct 2 '12 at 12:56


8 Answers

up vote 10 down vote accepted

I personally would suggest begin with smaller hurdles; try taking on coding in smaller chunks and get more in to the intermediate victories. It sounds like you either get overwhelmed or bored if something lasts too long or doesn't show progress. I can say definitively I've been in the same boat.

Think of it like tackling a sandwich: You don't eat the entire thing in one bite, you break it down. Do the same thing with your projects, tasks, etc. Depending on what level you're at, you may want to ask your supervisor/manager to break it down for you. If you're responsible for your own work load, set little finish lines for yourself that are accomplish-able (don't set a goal you'll never reach, this just makes you more discouraged and puts you in an undesirable position). i.e. "By noon I want to have this class defined", "By 2 I want this interface implemented", etc.

My company is notorious for beginning and ramping up for a project, allowing me to get to the 90% mark, then slipping the rug out from underneath me to move on to the "next big thing". I start getting discouraged that I never get anything done, and gets me in a "funk" (if you will). Finally I pushed back and told them I wasn't moving on until I finish what I was nearly completed on. This did wonders for my esteem, moral, and energy (though I can't say the same about my employers :shrug:)

share|improve this answer
add comment

If after 3 years of daily coding, you are struggling with the basics, you need to seriously consider the possibility the this is not the right profession for you.

This is not a bad thing. Programming is not for everyone, find what you are good at and do that, rather than force something onto yourself that is just not natural.

If what your are saying is true.. you will Never be an "exceptional programmer". That's OK, just accept it.

share|improve this answer
Commenters: comments are meant for seeking clarification, not for extended discussion. If you have your own solution, leave an answer. If you think this answer is good, up-vote it. If you don't think it's good, down-vote it. If you'd like to discuss this question with others, please use chat. See the FAQ for more information. –  user8 Jul 21 '11 at 20:18
add comment

My suggestion would be to get a mentor.

When you get a new project, decide on the path you're going to take: what does the overall design look like; what algorithms are you going to use; how do you plan on developing it so that you can test early and often; et cetera.

Take these plans to your mentor and talk it through with him/her. If they see you're on the wrong path or you've missed something of importance, revise your plans and try again.

Now that you have an approved plan, stick to it. Don't change your plans unless something utterly disastrous occurs, and then go back to revising your plans, getting approval and restarting. Otherwise, stick to your plan and get done exactly what you have decided to do. Check in with your mentor at regular intervals to validate your implementation, and make sure you write and use tests along the way.

If you've done all of the above successfully, you'll have delivered a project on time and with correct results. If you want to go back and refactor some part of the project, you have all of the tests you built as well as a working copy of the program from which to build.

It sounds to me as if you're just a bit too scattered and lacking in concentration. Perhaps if you can fix those areas and work with someone that you respect, you'll get on track soon enough.

Best of luck to you.

share|improve this answer
add comment

I believe I'm in the exact same position as you and it's not nice to be there. It can be demorilizing and to be honest fairly depressing at times. However, as with anything I believe there are certain things you can do to help alleviate this and so progress to a more healthier and happier work career.

  1. You have to want to change and get better. If you are feeling like this but are not prepared to put in the hard yards to make an improvement in your skills then there is not much anyone any any tool/process can do for you.

  2. Some people are naturally brilliant. Some people work hard to be brilliant. Most people just work hard to strive to be brilliant. If you are not naturally talented (programming or otherwise), then hard work can get you there. Just the level of hard work will vary. Nothing is impossible.

  3. Accept your defiencies and look to improve. One of the biggest hurdles I see are people who are afraid to accept that their way is not a good way and so never seek advice or discuss other ways of doing things. Hence they never learn better practices and so continue making the same mistakes over and over.

  4. Ask advice from those you consider good programmers. Never be afraid to talk and ask advice from colleagues. However, always take their advice at face value and decide yourself whether you agree with it or not. Not matter how brilliant someone is there are always many ways to program a loop.

  5. Read, read , read. Read news groups. Post questions on sites like this (well done). Buy books you have heard are good, or ask otherwise for recommendations.

  6. Explicity apply design principles in small steps and then be proud of what you have done. If you are proud in what you code then there is less likely to be room for errors and bugs.

  7. Open for suggestions and help. Closed to one dimensional thinking. Be open to many possibilities and methods. Look out for those who think there is one way for everything. A bit like 4.

  8. Being a brilliant programmer is not the same as being a brilliant employee. If being a brilliant programmer is all you want, then to be honest you might never get there. However everyone has the capability I believe to be a brilliant employee and person. Work on things that can help you get there.

share|improve this answer
add comment

Try to get yourself into a Flow state of mind. That is the single most important factor I've seen to being a good developer. To do this, you need to take on challenges which you know you can do, but are hard. You need to find the right level of challenge to get yourself into it; then you can gradually increase it as you get better. Having tasks which are either too easy or too hard will be detrimental.

share|improve this answer
add comment

Break it into small chunks.
Let me demonstrate using making a PB&J sandwich.

Figure out the overall basic process.

1 - Get Ingredients
2 - Combine Ingredients
3 - Cut Sandwich
4 - Serve Sandwich

Then Break each of these down

**Get Ingredients**
1 - Validate/Create PB
1.1 - Validate/Create Jelly
1.2 - Validate/Create Bread
2 - Move PB To assembly area

repeat the break downprocess until you fully understand the logic involved.

This will make it easier to comprehend. And easier to idenitfy common processes. Before you begin coding make sure you have the logic already figured out. Making mistakes is not just ok it is expected. Finding them before you implement them is much easier to correct.

Often the logic is the hardest part of programming. Its why not everyone wants to do it. If you do not enjoy the logic but love the UI Design there are roles that specialize in that, where you might find more enjoyment. There is nothing wrong with that. I personally prefer the logic to the UI. There are other roles as well if logic isnt where you want to be figure out where you want to be is.

share|improve this answer
add comment

Find an inductive logic game like Zendo and play it in your spare time. Seriously. Inductive logic is the heart of debugging.

share|improve this answer
add comment

I've had this kind of problem before.. It happened right before I burned out and couldn't program at a productive level for nearly a year afterwards(and I was only 19 at the time).

Anyway, Looking back on it, the issue I had was lack of direction and management. I'd work on implementing something for a month or two and then when it was nearly done, suddenly it needs to be done in a completely different manner. This was a huge blow to my self-esteem as I'm quite proud of every line of code I write. Also the management consisted mostly of a couple of hours discussion how something should work and then a couple of days of not discussing anything. Some of this was my fault as well of course. This was also compounded by the fact that at some point the work got extremely tedious and I felt like I was just typing code and not actually being creative at all.

General guidelines:

  1. If you feel like there is a lack of direction, bring it up. Ask your superior for more structure in where things are going
  2. If you're having to delete code all of the time(and not in a good way like refactoring), seriously question why there isn't a more complete plan constructed before implementing
  3. If you're in a super small start up and functioning as a "lead" developer, when you're clearly not experienced for it, swallow your pride and tell your manager you're really more of a junior developer.
  4. Tedium is usually brought about by the appearance of no work getting done. Take your tasks in smaller bites and keep track of your progress. This will help to feel that you're getting something done
  5. If all else fails, you may want to start applying elsewhere, especially if your manager doesn't seem to care that you may be heading for a burnout
share|improve this answer
add comment
