8 ms·
Programming is hard
- simonblack 3y agoThat's why programming is more of a challenge and more exciting than ordinary old computer games. Games only hold a challenge until the game-writer's secrets are broken. When I first started out in computers, I thought the games would be thrilling. They weren't. But programming .. trying to pit my wits against the very fast moron who insisted on deliberately doing no more and no less than I told him to ... that was thrilling.
- TheRoque 3y ago> Games only hold a challenge until the game-writer's secrets are broken. Games ultimately are code themselves, and you can manipulate it to some extent, creating other infinitely complex interactions (source: advancements in speedrunning or various game challenges like the A press challenge [1]) [1] https://www.youtube.com/watch?v=yXbJe-rUNP8 https://www.youtube.com/watch?v=yXbJe-rUNP8
- yetihehe 3y agoNice observation, never thought myself in such way about programming. This compares nicely with my experience with sudoku. It was fun until I've found and implemented algorithm to solve them.
- ninechars 3y agoThe end user is the final boss, and your job is to keep them alive.
- behnamoh 3y ago> At the end of the day code has no obligation or enforced requirement to resemble the problem it’s supposed to solve Unless you do language oriented programming (in Racket) or create DSLs.
- jongjong 3y agoAfter 15 years of software development experience, I've been thinking about this a lot lately. It's like you don't stop learning to be more careful. Even after 15 years, my mind is expanding. Sometimes I find code that I wrote 2 years ago which, at the time, was produced with far more care and extreme pedantic attention to detail than the average developer would have given it, yet it was still not correct for ALL POSSIBLE edge cases. It's insanely difficult to produce correct code. I'm starting to have thoughts like "Has anyone in the world (aside from Knuth haha) written a single program which is over 10K lines of code and which is 100% bug free right now? Does such program exist?" I don't even believe that Bitcoin is bug free; it just has too many lines.
- behnamoh 3y ago> which is 100% bug free define "bug free". In Python, I've been reimplementing monads recently. It's such a shame that Python still doesn't have Null/None propagation. After each obtained result and before using it in the next chain, I have to run a series of sanity checks (is it Null or not, etc.) which should be resolved automatically by the language. Alas, most people don't care. Something like this would be nice: result =? foo(bar :? str) meaning that foo should receive a str bar, but maybe bar is not str. Then foo should return something, but maybe it returns None (the =? part).
- unnouinceput 3y agoSomething like that would fail the code review at any large organization. Why? Because ternary operator is hard for maintenance purposes so the reviewer would simply ask to use if..else syntax instead. I gather you never worked in such organization.
- paganel 3y agoNot the OP and not a fan of ternary operations, but if programming were left to large organizations we would still be writing .asp pages. Which is to say that inovation happens only when you try to do stuff just a little different each time, so I’d say that code reviews as currently implemented at those big organizations is against long-term programming-related innovation.
- Aperocky 3y ago> Having to translate real world requirements into abstract constructs that – when evaluated by a computer – model our problem domain to a satisfactory degree. I tend to think of it as starting from abstract constructs and matching it to a known real world problem in an satisfactory degree. From that sense it didn't seem and feel so hard. In mathematic theory it starts by defining 0 and 1 and the whole thing comes together shortly after and can be used to model the real world to an amazing degree. Software engineering in comparison are still quite straightforward even in its highest complexity.
- heroku 3y agoi once bouth chessishard.com not good marketing value.
- usrbinbash 3y ago"Not so much on how we can more effectively understand requirements and translate these into code." The first step to understanding requirements: There needs to be a requirement worthy of the name. Because let's face facts: programmers are quite often confronted with "requirements" cooked up by some "stakeholder" that don't even describe the problem domain, much less a path to how it should be modeled. A lot of the spaghetti that contemporary production code ends up looking like far too often, is programmers having to play a stupid game of "chase the nebulous and ever changing 'requirements'". Once you develop for A but then B is required as well, and the architecture didn't anticipate that, you may be able to go back and change it ... or not, because usually the requirements change, but the deadlines don't, and good luck doing the same, or more, work all over again, in half the time. Yes, programming is a hard problem. It really is. But it is also quite often being made harder than it needs to be.
- atoav 3y agoProgramming is a lot like design - the customer tells you they need a design for their product, but they don't know what design they need, just what design they want. Now of course it falls back on you if you give them what they want and it doesn't work well. - there are many ways to tackle the same problem, many of them work okay, some of them work well and look nice, some of them work well, look nice and are easy to manufacture and maintain. But it also has to be the solution they need and one where you can convince them they want it. Finding a good solution is a lot like finding the biggest common denominator of a large set of numbers. As someone who worked in design before I can say that the most work and stress for me was bringing the clients up to speed, so I can communicate to them about the designs on one level. That meant explaining to them why their primary-color-powerpoint-comic-sans-poster communicates things they do not intend communicated.
- saghm 3y agoI suspect that this sort of problem is present is a _lot_ of fields; it's not a programming problem or a design problem specifically, it's a human communication problem, and those can make just about anything more difficult.
- brabel 3y agoI thought I was going to find this far more entertaining post when I read the title: http://www.stilldrinking.org/programming-sucks http://www.stilldrinking.org/programming-sucks
- nologic01 3y agoProgramming is hard mainly because its open ended. Its not a well defined finite problem. The domain of application keeps expanding and the logic required to organize information flow keeps getting more complex and varied. It all started as the serial, offline processing of numbers emulating some aspect of the world. Since then you have the major but still largely incomplete revolutions with real time, interactive and concurrent applications. The metaphors have long stopped being numbers. LLM's pretend to encode human language itself. Our entire semantic universe, to the degree it is externalized, is slowly codified and mapped into bits. You also have the deepening of the stack. It started with simple machine code but now you can have like four layers of abstraction to help our poor brains manage torrents of information flows between very complex pieces of hardware. So yeah, programming is hard because we are pushing hard to find the limits of what can be done with digital devices. I dont think we are even halfway there yet. Its going to get much harder :-)
- myme 3y agoAuthor here. Thank you for this and from what I can tell you're nailing my frame of mind and where I was coming from with this. Writing valid computer programs - from "Hello, World!" and the likes - is safe to say "easy". What programming has turned into - and what a large percentage of professional programmers have to deal with on a daily basis - is not. So it's an article sure to stir up some comments, because we're all coming at it from different angles and people considering themselves programmers fill a wide variety of roles in their companies and in the profession. If people feel they're having an easy time, good on them! But neither feel no shame when the imposter starts creeping in on you or you feel the mountain you have to climb is too tall.
- nathias 3y agoCompared to learning other skills programming is easy, it is made to be optimized for human use, legibility and learning, it has the most resources on learning by far. Yes, you might not be able to create a perfect and complex computer program, but this has more to do with the nature of the world and complexity than programming.
- quonn 3y agoYour definition of programming is too narrow. It‘s like saying writing is easy, every 6 year old can do it.
- nathias 3y agoYou assume I mean just learning syntax, I don't, I mean the actual skill of developing programs in production.
- zelphirkalt 3y agoLearning computer programming is easy ... mastering it is a life-long journey.
- ChoHag 3y ago[dead]
- yarg 3y agoNo, programming is complex.
- karmasimida 3y agoIt is not hard. It depends on what do you plan to use programming for. Creative and sophisticated programming is hard, but CRUD one isn't
- emmelaich 3y agoIt is hard. And isn't. How hard is it? In number of years / hours. Relative to what? > “When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meagre and unsatisfactory kind.” -- Lord Kelvin
- user3939382 3y agoSo Walt Whitman would express his mastery of poetry by what, the number of poems he's written? It sounds like something worth considering only in some contexts but is phrased as an absolute.
- emmelaich 3y agoPerfectly reasonable and expected response. I think if you asked Lord Kelvin he would say it meant only in a particular context. If you said Whitman was more prolific than, say, Frost, but didn't have the numbers then it is an empty assertion.
- user3939382 3y agoYep I agree.
- pixl97 3y agoHow can you assign a number to an unbounded problem?
- vb-8448 3y agoProgramming was hard in the past, nowadays with all high level languages and advanced monitoring/debugging tools programming is easy. Today, the real challenge is correctly managing and delivering changes and integration with other programs or external systems.
- throwaway71271 3y agoFor some reason programming is not getting any easier, I can even make an argument its getting worse despite all the improved tooling and andragogy investments we have done. Programming is in some sort of local minimum and we keep going in circles. Few years ago I watched this talk by Gerald Sussman: "We really don't know how to compute" - https://www.youtube.com/watch?v=HB5TrK7A4pI https://www.youtube.com/watch?v=HB5TrK7A4pI and it made me question my views on what I think programming is. I dont know if its because people are afraid to try new things, or there is no funding to try new things, we are kind of stuck. People thinking "don't reinvent the wheel" and for some reason think we have built a wheel (as Casey Muratori says: https://www.youtube.com/watch?v=fQeqsn7JJWA https://www.youtube.com/watch?v=fQeqsn7JJWA). We have a square at best. There are so many problems in the world, and a lot of them need robust and resilient programs to be solved, e.g. self cleaning public toilets or worm farm that you feed bio garbage and it produces protein flour. The challenge is exactly the same as it was 80 years ago, manage complexity in chaotic and emergent systems: chaos, complexity and entropy as the poet said. And to be honest, I think we have gotten worse at managing all of those, most bugs that we encounter now is like a murder mystery from Detective Conan and it requires Shinichi Kudo level of deductive reasoning to figure out what is going on. Programming will remain hard if you keep thinking it is just a translation problem from a "business requirement" to a "computer language".
- PH95VuimJjqBqy 3y ago> I can even make an argument its getting worse I agree and disagree. We can do a lot more with a lot less people, but the issue is that the developer ergonomics have taken a straight up nose-dive due to the cloud.
- nine_zeros 3y agoThe biggest challenge in programming is dealing with stakeholders and management that expects things to be done yesterday - as in, they can't accept the concept of unknown unknowns - mostly because they have promised ambitious timelines to others.
- brynbryn 3y agoDon't really like the trend of articles "quoting" themselves. If people want to quote you, they will.
- snvzz 3y agoHard as in NP-Hard?
- another2another 3y ago"Programming is hard" ... let's go shopping instead?
- GuB-42 3y agoI've seen somewhere that computer programs are the most complex objects that humanity has created. Nothing we did before computers can compare. Clockwork, cathedrals, electronic circuits, math proofs, novels, etc.. None of these have as many interlocking "moving parts", as medium-sized software projects. And in fact, programming is all about managing complexity. Really, it is all there is to it. The operations that computers do are simple, anyone who can operate a light switch can understand them in minutes. But how to piece millions of these to do something useful takes a lifetime, and it involves layers of tooling, custom or written by others, among them things like compilers and text editors, libraries, OSes, etc...