I hear experienced programmers say real world programming is entirely different than competitive programming. Do you think it's completely true & valid? | Hashnode
I hear experienced programmers say real world programming is entirely different than competitive programming. Do you think it's completely true & valid?
A lot of experienced programmers keep saying that, “A good programmer does not necessarily mean a good programmer for real world projects.” Also, competitive programming is all about writing bug free code at a fast speed. What's wrong with that?
Competitive programming is solving one problem quickly and writing performant code. It's one problem and the goal is to solve that there and then. In and of itself, that's a good thing. However, compared to competitive programming, real-life software often is written in teams and usually has a long life-cycle, over which it evolves. That means that five years after the initial release, new features might be added, so real-life programs have to be very maintainable, which means that they need special architecture and lots of documentation and test cases, so that new code does not render old features broken.
As you can see, a real-world programmer needs additional team, architecture and documentation skills. They should be able to read old code and focus on adding new features without disrupting old features. All while they have to focus on the problem at hand (it's tempting to "optimize" old code. Also, real-world programmers need a lot more patience, because they will have to work with others and old code. Competitve programmers are often alone or in small teams. Each problem is solved with a new program. They do not have to care about the program and all those other things.
Marco Alka
Software Engineer, Technical Consultant & Mentor
Competitive programming is solving one problem quickly and writing performant code. It's one problem and the goal is to solve that there and then. In and of itself, that's a good thing. However, compared to competitive programming, real-life software often is written in teams and usually has a long life-cycle, over which it evolves. That means that five years after the initial release, new features might be added, so real-life programs have to be very maintainable, which means that they need special architecture and lots of documentation and test cases, so that new code does not render old features broken.
As you can see, a real-world programmer needs additional team, architecture and documentation skills. They should be able to read old code and focus on adding new features without disrupting old features. All while they have to focus on the problem at hand (it's tempting to "optimize" old code. Also, real-world programmers need a lot more patience, because they will have to work with others and old code. Competitve programmers are often alone or in small teams. Each problem is solved with a new program. They do not have to care about the program and all those other things.