| ▲ | danny_codes 13 hours ago |
| Perhaps your vantage point from industry is in fact myopic. We all have our own biases. |
|
| ▲ | cdfalcon 13 hours ago | parent | next [-] |
| Completely fair - but at least my PoV comes from having actually worked as a SWE, you know? I feel like the best understanding this fellow can have is purely secondhand from watching the success / failures of his students. I also think I get doubly upset from advice like this because it’s given and marketed to impressionable young students. Even agreeing with all the moral points he’s made, I truly think this advice would set up a new grad for failure and have them focusing on the wrong skills for this market. The bit about ignoring trends feels too head in the sand for my liking :/ |
| |
| ▲ | danny_codes 13 hours ago | parent | next [-] | | Fads come and go in industry. This version of LLMs will come and go as well, as will the coding languages and paradigms we used before (and, presuming you want your code to actually run, still do with some decent frequency). Will LLMs in their current ergonomics have staying power? Perhaps. Nobody can predict the future. But I don’t think it’s a given in the least | | |
| ▲ | ActivePattern 13 hours ago | parent [-] | | Automatic coding systems have way too much economic value to be considered a "fad". I don't think you need to be Nostradamus to predict that we're never going back to manual coding. Sure, the systems will evolve and improve, but they're certainly not going anywhere. | | |
| ▲ | slabity 12 hours ago | parent | next [-] | | > Automatic coding systems have way too much economic value to be considered a "fad". Which is why they very carefully worded it more as 'LLMs in their current form', twice. | | |
| ▲ | CamperBob2 8 hours ago | parent [-] | | Yes, if you stake out an argument carefully enough, you can make its perimeter infinite and its area zero. |
| |
| ▲ | 11 hours ago | parent | prev [-] | | [deleted] |
|
| |
| ▲ | DJBunnies 13 hours ago | parent | prev | next [-] | | How do you know they didn't? My college professor was formerly at NASA, where this stuff is important. I recognize not everyone's work is [as] important, but we should still strive for excellence (and safety.) | | | |
| ▲ | microtherion 12 hours ago | parent | prev | next [-] | | When I started studying CS, the "industry" thought students should be taught COBOL, and maybe some PL/I and Fortran, because obviously that was what the market wanted. | |
| ▲ | archagon 11 hours ago | parent | prev | next [-] | | I worked at a FAANG in a senior role for around 6 years and I completely agree with the article. (I left before LLM/agent use became widespread, but I would have flamed out anyway if it was forced upon me.) | | |
| ▲ | xantronix 9 hours ago | parent [-] | | It's scary just how quickly the past has been buried: Decades of accumulated insight on best practices, all discarded in service of the new electric Christ. | | |
| ▲ | xtracto 7 hours ago | parent | next [-] | | This hit very close home. I'm a 44 year old developer, with Software Engineering Bachellors and CompSci MPhil and PhD. All my life I spearheaded "best practices" and code quality (from Fred Brooks, Joel Sposky, Martin Fowler, etc...). But since LLMs arrived... things have become crazy. The layer of "obscurity" that permeates code writing seems to make a lot of those "standards" moot or just not really pragmatically possible to follow. | |
| ▲ | CamperBob2 8 hours ago | parent | prev [-] | | The blacksmith's lament. |
|
| |
| ▲ | gipp 13 hours ago | parent | prev [-] | | Buddy... The whole point of the post is that he wants his students to question whether "succeeding in this market" is really the right choice. | | |
| ▲ | 2ndorderthought 12 hours ago | parent | next [-] | | It's really not though. The point is to decide what success is for yourself. Learn everything you can about the thing you might decide to automate. But think before you automate and how you do so because it could cause more harm then good. | |
| ▲ | dijksterhuis 12 hours ago | parent | prev | next [-] | | i was writing a bit of a lengthy reply, but yeah this is the whole point really. making that money, getting that job title, being at that company, working on that project -- are these success? or is success simply doing the best job possible when writing code? | | |
| ▲ | beej71 11 hours ago | parent [-] | | The irony is that writing the best code possible is now a recipe for unemployment. |
| |
| ▲ | lukan 12 hours ago | parent | prev [-] | | The right choice is rather to strive for perfect - and be unemployed? To me it was actually not clear what his point was. "Above all, be motivated by love instead of fear." Sounds great. But not that practical. | | |
| ▲ | fooqux 10 hours ago | parent [-] | | Why isn't it practical? In my life, I've encountered many SWEs that have changed careers. I've met them in national parks working as rangers. In real estate, grocery store butchers, and yak ranchers. Yet I've never once encountered a SWE that was once doing something non-technical and decided to switch. Purely anecdotal, I know. But still, I prefer to think that all those people discovered this practical advice and are far happier for it. I've never met one that regretted their decision. | | |
| ▲ | lukan 5 hours ago | parent [-] | | Oh, I would consider becoming a park ranger as well, but as a european, I also did not had to go deep in dept, to become a SWE. And a professor should take that into account and give practical advice. In the real world, solving haskell challenes (of which the prof is fan of) is unfortunately not that useful. People have real needs for working software to solve their real pain points. Not to worship code quality. Some projects need obviously better code quality (airplanes, medical equipment..) - but not all of them. And if you want to have sacred code when coding a crude throw away app .. you won't get enough money for that. And positions for academics are limited. |
|
|
|
|
|
| ▲ | lo_zamoyski 12 hours ago | parent | prev [-] |
| That's a flippant reply. Programming is a practical skill, and its most common expression is industrial or commercial, not academic proofs of concept. The post addresses students who will enter industry; that's the focus of the professor's own post. And I sympathize with many points being made here. However, the point of refactoring code is somewhat odd and detached from the real life constraints of programming in the wild. Like, sure, in the ivory tower, you can confine yourself to nicely bounded problems and tidy little toy POCs. You can survive doing those things, because the selective pressures allow for it. I love those things, personally. They help me understand the nature of the thing. And in an academic settings, you can refine and refactor the hell out of those things to your heart's content (not that there is necessarily an objective end point to refactoring; code organization is subject to goals and constraints which can shift around). But the reality of software in a commercial setting is not the tidy one you can expect in an academic setting. It's messy, subject to commercial pressures, to a hierarchy of values that doesn't place "refactoring" at the top of the list. And why would it? Whether you should refactor something is not just a question of whether it suits your conceptual tastes or even whether it is more maintainable. Unlike algorithms and principles and even techniques, software is not eternal. It is ephemeral. It's shelf-life is bounded. It is a piece of a larger business process. You're not refining some theory or some grasp of a Platonic ideal. You're mostly just putting into place plumbing to get something done. Whether you should refactor something, when you should refactor something, is a matter of prudential judgement, which is to say, of practical reason. So, in light of that, there are actually quite absurd things to say given the difference between the privilege of academia and the gritty reality of industrial and commercial software development. If we were to force our professor into the world of industry, he would quickly lose his job or he would quickly learn that some of his strange idealism is silly and detached from the reality that his students will face. |
| |
| ▲ | godelski 12 hours ago | parent [-] | | > It's messy, subject to commercial pressures, to a hierarchy of values that doesn't place "refactoring" at the top of the list. And why would it?
Probably because it's a good way to be more profitable.Code that's easier to understand is easier to: maintain, generate new features for, fix bugs, onboard new engineers, etc Code that's well written: executes faster (saving computational costs), scales better, has higher uptimes/more robust, reduces bandwidth, and so on. The thing is the business people will never understand this. Why would they? They're not programmers. They're not in the weeds. But that's what your job is as an engineer. To find all these invisible costs. I'm pretty confident the industry is spending billions unnecessary. Hell, I'm sure Google alone is wasting over $100m/yr due to this. Don't be penny wise and pound foolish. You're smarter than that. I know everyone here is smarter than that. So don't fall for the trap | | |
| ▲ | lo_zamoyski 12 hours ago | parent [-] | | Save us the patronizing tone. I am well aware of stupidity in industry. However, I am also wise enough to recognize the opposite error. (I myself have academic tendencies and a background aligned with that. I have chosen jobs that payed less, because the subject matter was more interesting for me. I'm not some vulgar, money-chasing techbro here.) The via media demands that we recognize the distinction between general truths and practical realities. As I wrote elsewhere in this thread, yes, properly refactored code is easier to maintain, easier to read, easier to change, and theoretically, commercially preferable. It also makes programming more satisfying, helping retention. But that describes a feature of such code. It doesn't tell us what the right course of action is in a particular situation. The notion that refactoring is unconditionally the right course of action when code is not in some ideal state is simply wrong. It really does depend on the situation. Sometimes, refactoring is the wrong thing to do. I'm not making some outrageous claim here. This follows from basic truths about the nature of what it means to be practical, and if industry is anything, it is practical. | | |
| ▲ | foltik 9 hours ago | parent | next [-] | | The professor is obviously not advising naive absolutism. He’s saying care deeply about your craft, and good judgement will follow from that. Actually caring is what gives someone the itch to go back and improve things, versus happily calling it a day once minimum acceptable value has been delivered. The rampant enshittification of basically everything should make it clear which disposition is in short supply. > Have the courage to go slowly, especially when everyone else is telling you that you need to go fast and cut corners. The advice is aimed at students who haven’t yet decided which type they want to be. In fact it’s directly telling them to think for themselves and not blindly listen to you or anyone else here making the same case. | |
| ▲ | godelski 9 hours ago | parent | prev [-] | | > Save us the patronizing tone.
If you come out swinging you can't get mad when others swing back. You're not a victim, you're an instigator. You called danny_codes flippant for suggesting there are different biases. You called it absurd. You escalated it. And then you escalated it again. > It doesn't tell us what the right course of action is in a particular situation.
That's because there is never an objectively correct course of action. There is no optimal solution. In fact, there can't be when the situation evolves. The objective isn't even defined, let alone well defined. I don't understand your point because no one was suggesting it was always the right answer. Don't strawman here. Of course it depends on the situation, that's true about almost everything. It doesn't need to be said explicitly because it's so well understood. Don't inject absolute qualifiers into statements that don't have them. > I'm not making some outrageous claim here.
Your current claim? No. To be frank, you didn't claim much. But your prior claim? Yes. Yes you were. You were creating strawman then just as you did now. >> Unlike algorithms and principles and even techniques, software is not eternal.
Not even algorithms are eternal. But I'm going to assume you're meaning the types of algoritms you see in textbooks because interpreting "algorithms" by its actual definition makes your comment weird. Since all programs are algorithms. >> [Software] is ephemeral. It's shelf-life is bounded.
And this is going to be something nearly everyone is already going to assume. It doesn't need to be stated. It doesn't need to be differentiated because it is already the working assumption. >> You're not refining some theory or some grasp of a Platonic ideal
And this is the real strawman. You're made a wild assumption about what others are claiming. There is such a wide range of viewpoints between "the way things are done now" and "chasing perfection." Anyone that thinks perfection exists in code is incredibly naive. You and I both know this, and so does anyone working in industry or academia (save maybe some juniors). There's a huge difference between saying "this isn't good enough" and "it's not good until its perfect." If someone talks about climbing a mountain you can't respond by saying it is impossible to climb to the moon. >> Whether you should refactor something, when you should refactor something, is a matter of prudential judgement, which is to say, of practical reason.
Whether you should do anything is a matter of prudential judgement. It's wild to say this while accusing people of chasing perfection. You think people are just yoloing their way to perfection?! Seriously? The article and thread context is literally asking that people use more prudential judgement. To not be myopic. And you have the audacity to say "think about it". What do you think we're doing here? |
|
|
|