5 ms·
What is the hardest thing in Computer Science?
"There are only two hard things in Computer Science: cache invalidation and naming things." — Phil Karlton
- DoofusOfDeath 6y agoLearning about topics that are professionally useful, but in which I have absolutely no interest. In my case, web development.
- nunez 6y agoPredicting what users will do with your software.
- acoye 6y agoCreating a `complete` (in a mathematical sense) computing system.
- exdsq 6y agoThere's some cool work in this area though! :D
- sidntrivedi 6y agoAny context about this? Any links about a complete computing system?
- peter_d_sherman 6y agoMaking your code so simple (and well documented!) that it can be understood by programmers with much less experience than you, while not compromising speed or functionality. “Everything should be made as simple as possible, but no simpler.” -Albert Einstein
- karmakaze 6y agoThis is the one I strive for. Making a challenging thing self-evident and appear like it wasn't that much work, even when it was an explosion of code later distilled.
- jonnypotty 6y agoComplexity
- kleer001 6y agoI'd like to hear some reasoning behind that. Maybe more adjectives? IMHO Complexity, in general, is good. Nature conserves it when its adaptive.
- jonnypotty 6y agoI don't mean to sound flippant but there actually seems to be lots of different hard problems in computer science, or computing (to be honest I'm not sure which we're talking about here) but all of the ones that I know of are hard due to complexity. Our science is good at reductionism, finding fundamentals, but when it comes to complex systems it simply informs our inadequate simulations. So I think the hardest problems in computer science will exist where we try and apply it in the real world to complex machines. In computing there are many hard things to make, databases, operating systems, programming languages, the list goes on - and they are hard because they are big and complicated and so making them is hard because to some extent it doesn't matter how much resource or intelligence you have because the problems that arise in complex systems start to get chaotic and intractable.
- tcgv 6y agoI have a simple theory on why it is hard to name classes ;) - https://thomasvilhena.com/2019/10/why-is-it-hard-to-name-classes https://thomasvilhena.com/2019/10/why-is-it-hard-to-name-cla...
- bobbyz 6y agoIf I'm being cheeky, its other people.
- kn0where 6y agoPrinters. More seriously, robustness/security. Everything we “engineer” is incredibly fragile. Nothing is built and able to be “done” if it needs continuous security maintenance for its entire life.
- CyanLite2 6y agoPeople--including end-users and non-technical managers.
- cbm-vic-20 6y agoTelling the difference between Computer Science and Software Engineering.
- sidntrivedi 6y agoHaha XD
- deleted 6y ago[deleted]
- techbio 6y agotrust
- diehunde 6y agoI don't know about hard to understand but if we are talking about getting things right: - Concurrency - Building distributed systems (databases, messaging systems, distributed file systems, etc) - Low level programming
- ern0 6y agoThe hardest thing is to accept that you don't really need CS as a software developer. Even programming tasks - digging into legacy code, implementing features etc. - requires no CS knowledge, and programming is just one thing sw devs do. Other words: there's no CS topic which helps you during an estimation meeting.
- shahbaby 6y agoNot exactly computer science but the hardest thing I've found is preparing for algorithmic coding interviews.
- Hackbraten 6y agoSecurity. It needs to be built into every phase of computing, starting with the CPU micro-code, going through network protocols, up to the topmost JS framework layer. Screw up one piece and you may end up with a major vulnerability. Many software project owners avoid it due to complexity. To some extent, even academia sometimes eschews it.
- sidntrivedi 6y agoUmm..what about Compilers and their implementation? Isn't it hard? PS: I find them the hardest.
- nikofeyn 6y agocompilers do a known thing. security means protecting against unknown things.
- sidntrivedi 6y agoI get your point. Seconded.
- thijsvandien 6y agoThere's one more layer above that: the user. That is to say it's a social problem as much as a technical one.
- arethuza 6y agoI like the variation on that quote: "There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors."
- sidntrivedi 6y agoHaha...BTW, if I may ask, what do you find the hardest in Computer Science?
- arethuza 6y agoSemi serious answer: people!
- AnimalMuppet 6y agoNot semi serious. Absolutely serious. As soon as you start writing a program that takes more than one person to complete, or where you're writing not for you to be the one and only user, people problems come in. And I'm just talking about communicating intent and design among people. The bigger the project, the more that's a problem. Then there's the unrelated problem of dealing with other peoples' personalities. The bigger the project, the more different people, and the more this aspect is a problem as well.
- arethuza 6y agoI remember once on a complex project a senior manager going "That may be what I asked for, but its not what I want" and in a startup I joined where the CEO was adamant that any feature he could think of could be implemented in less than 48 hours - and this was a video technology/devices startup not a web app! I've made horrific technical mistakes at various points in my career - but at least it is possible to learn straightforward lessons from those. Learning about people - now that's a challenge!
- konradb 6y agoI find it quite interesting that a natural inclination of some people is to believe that if it was simple for someone to think, in some way, of the feature they want, that it should also be simple to implement. Have seen this a lot.
- lgl 6y agoThe hardest things so far will probably be one of the unsolved problems in computer science that you can see here: https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_computer_science https://en.wikipedia.org/wiki/List_of_unsolved_problems_in_c...
- tromp 6y agoDetermining the next Busy Beaver number. Every time you determine one, a harder problem takes its place. And eventually the problem becomes unsolvable, as only finitely many values can be determined.
- sloaken 6y ago1) Keeping up with an ever growing and changing tech environment. 2) Dreading visiting my parents, because you always hear:'Oh good, come here and look at this problem I have'. My wife even volunteers me to fix other peoples stuff, which is real annoying.
- uvw 6y agoAm I the only one who don't mind fixing stuff like that. I sometimes do get satisfaction of making things work no matter how trivial.
- ChefboyOG 6y agoI have this weird polarity in the work I enjoy. I'm like you in that I enjoy just making things work, even when they're trivial. I particularly like doing it for other individuals. On the other hand, I also enjoy harder research problems. Obsessing and learning new things quickly is probably the biggest joy I get out of work. What I hate is the middle ground. I hate solving trivial problems, but in a high-pressure environment, for people I'm only circumstantially committed to.
- sloaken 6y agoDetermining when something is done, because you always feel like you can improve on it.