18

I have been practicing coding for a while, but the problem is that it takes me a lot of time to write a solution for the problems. I want to ask if competitive programming can help me in improving this.

If yes, then how should I start and from which web sites could I use (like TopCoder)? I obviously won't be able to solve very hard problems for now. What should I do?

If no, what else should I do?

I also have another problem that I want to learn coding but the thing is that I feel that I am not very good at it. What should I do? It's like bugging me from inside.

I know some people may not find this question informative but please at least allow me to get an answer.

superM
  • 7,363
  • 4
  • 29
  • 38
Vaibhav Agarwal
  • 1,228
  • 2
  • 8
  • 21
  • 1
    Don't underestimate the value of collaborative programming either. We have seen some problems in our team due to over competitiveness - over engineering / interpersonal issues. So competitive programming could help you, but so could taking part in an open source project, or developing a project with like minded friends. – Gavin Howden Oct 13 '12 at 20:05

2 Answers2

19

[can] competitive programming help me in improving [the speed]?

Yes, it can, and given sufficient time, it certainly will. However, speed is not the most important skill that you are going to improve. From my experience of participating with TopCoder for 10+ years, the most important skill that you are going to take from competitive programming is an ability to write simple code snippets correctly the first time, without using a debugger.

How should I start and from what site like TopCoder?

Use practice rooms for Division 2. Level 1 of Div 2 are typically "typing contests", in the sense that you figure out a solution right away, so your task becomes coding it as quickly as possible. Most real-life assignments are like that. You will quickly realize that debugger is the biggest "time drain", so you will naturally attempt to complete your code without debugging it. This will be frustrating in the beginning, but it will improve with time. It will take a few hundred level-1 problems to get good at it, so don't give up.

Debugging in your head is the skill that is going to help you in your real job: while the coding speed is not important, an ability to write correct code snippets without debugging will help you make a transition from good to outstanding.

Sergey Kalinichenko
  • 17,393
  • 4
  • 57
  • 73
10

As a beginning programmer, you should be much more concerned with the quality of your code then the speed of writing it. You should be working on projects on your own to expand your skills. You could follow that up with reviewing open source projects to see how others write code and maybe start contributing to an a open source project.

In my 25+ years of developing code on various platforms and business domains, I have never found a case where the speed of my code writing was more important than the quality and stability of my code.

cdkMoose
  • 1,775
  • 9
  • 12
  • But when you are participating in a competition let's say some coding competition or interview process, then speed matters right? And that too a lot I feel. – Vaibhav Agarwal Oct 12 '12 at 16:42
  • @cdkMoose that's good but can you also suggest me how to start competitive programming means from where to start? – Vaibhav Agarwal Oct 12 '12 at 16:55
  • @VaibhavAgarwal Project Euler problems 1 to 50: while it isn't competitive (unless you are trying to be one of the first people to solve the most recent problem), it is challenging and the type of question one might expect in a coding competition or interview process. –  Oct 12 '12 at 17:00
  • @Vaibhav, I would start competitive programming the way I would start any other competition: Practice, Practice, Practice. – cdkMoose Oct 12 '12 at 17:02
  • 1
    @Vaibhav: You posted that you want to learn programming. If that is the stage you are at, I personally don't think you should be concerned with competitive programming at all. That can come after you have developed your skills. As far as interviewing, I don't ask my interview candidates to write complete programs. I am more concerned with their understanding and thought processes. I am trying to develop a confidence that they could solve the problem, not that they would solve it in record time. – cdkMoose Oct 12 '12 at 17:06
  • Put it this way. As a beginner guitarist, would you be willing to enter a contest where you had to come up with your own solos in the Ionian mode and play at 189BPM? Or would you slowly practice those solos first and build up your speed? Use things like TDD or/and coding dojos to build up your speed, but the core idea is to build core knowledge first. What use is a fast developer whose code is not very good quality? – Jason Evans Oct 09 '13 at 10:52