4 ms·
Those programming challenges are certainly interesting and they make a great learning tool but they use a very specific set of skills. Usually, the difficult pa
by yodsanklai 13y ago
Those programming challenges are certainly interesting and they make a great learning tool but they use a very specific set of skills. Usually, the difficult part is to find an algorithm that solves the problem within the given constraints. Implementation is comparatively straightforward.
To me, they are more "problem solving contests" than programming contests. The code is just there to validate the solution.
- izacus 13y agoBut that IS the gist of development - figuring out how to solve a problem efficiently. Writing code is usually the easier part.
- zipfle 13y agoI've found that in many environments, particularly on the web, it's much harder to make sure you've accounted for all the quirks and interactions with related systems than it is to find the right basic algorithm. There have been few times I've really thought something like "If only I'd known about A*!", but comparatively many times I've thought something like, "If only I'd thought to test two-finger swiping on a touch device with both fingers inside the element created by that javascript." EDIT: Also, maybe more importantly, I never feel more tempted to give up than when I know I've solved the basic problem but some environmental factor prevents the solution from being usable. The fun part is over, and if I want to make progress I have to dive into docs and other people's source code, and write good tests. I think there's more difference between someone who gives up at that stage and someone who doesn't than there is between someone who knows a particular algorithm and someone who doesn't.
- watwut 13y agoDepends on task. I found out that when dealing with large systems, it is not an algorithm that is the biggest problem. The gist is usually to find out and keep in head how various parts interact and what exactly they do. The hardest and most important is to figure out how to make each change in such a way that above will be as simple as possible (eg. keep the system clean and maintainable without hacks and dirty tricks). Both parts (figuring and writing) are figuring out, but both are entirely different from programming challenges. First requires you to be able to decipher someone elses code reliably and fast. Second requires you to figure out how to do things as little fragile as possible. Algorithms are more about solving isolated more math-like problems. Once you got solution, you do not need to consider anything then making it work, so it is different kind of code. Even if you would plug in it into some large system, it is would be isolated so you can actually afford to be more dirty.
- collyw 13y agoDo you see this being analogous to where systems testing versus unit testing are most appropriate?
- dragonwriter 13y ago> Usually, the difficult part is to find an algorithm that solves the problem within the given constraints. Implementation is comparatively straightforward. That's usually the difficult part of any programming effort. Well, the hard part is usually getting a clear and correct set of requirements specifying the problem and constraints, but once that is done...