4 ms·
I've had my computer science engineering education at an institution that taught programming the "Dijkstra way": designing and proving correct programs by hand,
by ht_th 13y ago
I've had my computer science engineering education at an institution that taught programming the "Dijkstra way": designing and proving correct programs by hand, with pen and paper. Still, if you're asking me to solve some problem I'd rather have a look at stackoverflow first than immediately firing up the mathematical machine in my head to design a nice solution. Besides, for most problems and programmers, chances are that their pen-and-paper created solutions are either trivial, not completely correct, or take too much time to be practically feasible. Churning out something working now is often more important than be able to get a better solution tomorrow.
- lazyjones 13y ago> Churning out something working now is often more important than be able to get a better solution tomorrow Absolutely valid point, but my (somewhat confirmed by recent interviews) worries are that people who start programming this way, do not have the ability to come up with their own solutions (for almost trivial tasks) at all. They are unable to derive a working solution from their theoretical knowledge and even that is frequently lacking nowdays. Lead developer candidates (> 10 years experience, mainly PHP) unable to convert a decimal number into a hex string without builtins/formatting functions, WTF? If most programmers cannot put existing knowledge together to produce a solution to a new problem, how can they possibly analyze, critique, fix existing code? By comparing with a solution on SO?
- ht_th 13y agoI agree with you, actually, but I fear that the current commercial situation in many a programmer shop or IT department does not allow for well-educated and well-experienced programmers for they are too expensive and difficult to find. In this situation I'd settle for experienced "SO programmers" with a good operational understanding of what they're doing, even though I'd prefer experienced academic trained programmers with a strong mathematical background.
- lazyjones 13y ago> * In this situation I'd settle for experienced "SO programmers* So you're betting on SO being up and accessible forever? This feels a bit too much like depending on some 3rd party cloud for crucial infrastructure (but I guess it works for many people). I cannot entirely disagree with your approach, because far too much code nowdays can apparently be put together in this way. It suggests to me that we aren't really using appropriate tools/languages/libraries/documentation to avoid duplicate and copy/paste-style work. SO should be for hard problems, not for code stanzas everyone needs but can't come up with by reading the docs or understanding the mindset of the library/language designer. Is SO mostly compensation for crappy docs and badly constructed APIs?
- ht_th 13y ago> Is SO mostly compensation for crappy docs and badly constructed APIs? Yes. And no. There are a lot of interesting libraries and tools out there I have access to and can use. In the 90s and early 00s I bought a compiler and maybe some libraries and used it year after year, project after project. If something wasn't readily available, I'd to build it myself. Nowadays, chances are there are a number of alternative I can use. Chances are, the next project I want to use something similar there will be better alternatives. I don't use these tools and libraries much, so I don't get that much experience with them. If I want to use them for some problem, looking through the docs takes time, while SO probably has a good answer I can adapt to my situation. Similarly, the way I use documentation has changed over the years. Where I'd get a printed version of the reference manual that I used until I'd to buy a new one, nowadays I enter a search query into a search engine to find the documentation I am looking for. Chances are, there's a SO reference as one of the first couple of hits. And sure, most projects are badly documented, if at all. Looking at the documentation isn't the same as it was before, or as it is with good documented stuff. On the other hand, one would like the programming profession to be more than DIY-programming. Should building yet another simple CRUD application or a simple database front-end belong to the realm of professional programming? Should we want to train more people to do DIY-programming and preserve the interesting / hard problems to well-trained and experienced programmers? Similar to DIY home-improvement versus construction companies building a whole new city-center