5 ms·
Because real software engineering is less about building things up from first principles and more about combining and integrating pieces of software that alread
by bitwize 4y ago
Because real software engineering is less about building things up from first principles and more about combining and integrating pieces of software that already exist. Sorry, but it's the way of the world.
- fdgsdfogijq 4y agoEven more, usually the biggest mistakes are made by not "using what is standard", any type of programming from first principles is usually a huge mistake. People generally arent smart enough to build something from scratch in a way that beats whats already been tried and tested
- varjag 4y agoTo make an informed choice whether to apply a first principle solution you have to understand said first principles. Otherwise it's just an excuse for incompetence. And to internalize the principles you have to at least use them in a didactic setting.
- whartung 4y agoI was talking to our junior developer one day. He was working on a Delphi project of some kind. I asked him how it was going, and he said it was going well. But that he was confused about some things. I asked them what they were. He said, paraphrasing, "What's the difference between disk and RAM?". On the one hand, it's great that someone without such fundamental understanding was able to accomplish something. On the other hand, it was a bit disturbing. I've run in to several folks who do not understand first principles, and some times are combative when I explain how I "know" something "can't work" or "didn't happen". I'm sure we've all heard those things. "What about <absurd thing>?" "No. Just...sigh...no."
- lanstin 4y agoTho the difference between disk and RAM is collapsing. It used to be (90s) bog standard advice to never write to disk in the call path of a customer request. Now, there’s hardly anything that isn’t writing to disk all the time; but not spinning platters, just SSD. So maybe their confusion is less bad than it seems at first? Maybe?
- layer8 4y agoWhile the numbers are changing, there are still 2-3 orders of magnitude between RAM and SSD latency: https://colin-scott.github.io/personal_website/research/interactive_latency.html https://colin-scott.github.io/personal_website/research/inte...
- lanstin 4y agoAnd a similar gap between cache and RAM, but a software engineer unclear about the finicky business of cache optimization would not seem as dumb as the person in the original post.
- mvc 4y agoWhen I was just getting started as a programmer, everyone was using Apache. Fortunately people who do stuff don't spend their time listening to the naysayers on hn.
- syntaxfree 4y agoSo people (MIT students, the elite) shouldn’t learn Real Analysis because Wolfram Alpha?
- simplotek 4y agoI think you're missing the point. Everyone is free to learn real analysis, and it's ok if it's a part of the standard curriculum. But if you're aiming to provide the best education to future professionals so that they are able to excel at their field, you'd serve them far better if you taught them how to effectively use Wolfram Alpha. The truth of the matter it that the bulk of the work in software development, and what makes more economic sense, lies in growing a system through accretion and adopting higher level components developed and maintained by third parties.
- andreistan26 4y agoExcel at what? You need to build a strong foundation in order to innovate and to discover new stuff.
- phlakaton 4y agoAs always, the question is: a strong foundation in what? And why?
- hnfong 4y agoObviously the AI researchers in MIT need a strong foundation in GPU and parallel computing design and semiconductor technologies in order to innovate. Only those in trade schools `import pytorch` /s
- simplotek 4y ago> Excel at what? You need to build a strong foundation in order to innovate and to discover new stuff. I agree. The problem is that you have a gross misconceptions about what "strong foundation" represents in this day and age. I knew guys who fail to stop and think about "foundations" and instead use that as a scapegoat to shoehorn their gatekeeping logic and as a form of ladder-pulling. It's the kind of character who think that playing trivia games is a good way of asserting whether a candidate is a competent engineer.
- DennisP 4y agoMaybe so, but it's starting to look like AI can take over a lot of that combining and integrating.
- lanstin 4y agoIt is often true, but also see http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html http://steve-yegge.blogspot.com/2007/06/rich-programmer-food... I recently was with a group of dev ops folks that had written a 100k of terraform code. It worked great, nice improvements for consistency of cloud deploys, and decreased time to implement and all that. Problem was when terraform would implement breaking changes in new versions. We had so much code to fix, the group just wanted to stay back at version N - 1. But I knew where that would end, in five years they would have buggy unsupported old terraform needed some big heroic project to upgrade, with risk and so on. So I wrote a simple Python script that was a recursive descent parser/transformer patterned on expat with callbacks. It was able to transform all the code and bump the terraform version at the latest version. It took a while to write, but was tremendously fun, gave us a powerful tool for transforming and therefore owning the 100k+ LOC of terraform, which other wise threatens to become a congealed unmaintable blob. Even writing custom off the shelf services can have big payoffs, in efficiency or in operational ease. There are two ways in which the body of existing software is full of good solutions; there are a ton of turn key solutions, from Hadoop to NoSQL to Airflow to the other fifty nine Apache projects, Kafka, etc. etc. etc. Also, modern languages have so many excellent facilities for highly scalable, cheap and reliable software that is shall we say designed precisely o meet a given customer need. The custom solution can be faster better and cheaper than the turnkey open source system, which usually has a high cost of complexity and a high cognitive burden for ops to understand the configuration space and so on.
- EFreethought 4y agoYes, a lot of us just link black boxes together. But what about the people who make the black boxes? How smart are they? Maybe we all do not have to know first principles. But somebody does. And if MIT won't teach first principles, who will?
- vijayr02 4y agoThis reminds me of an Asimov story: https://en.wikipedia.org/wiki/Profession_(novella) https://en.wikipedia.org/wiki/Profession_(novella)
- deleted 4y ago[deleted]
- ThrowawayR2 4y agoSo who are the people building the pieces of software that ordinary developers are combining and integrating? The next Linus Torvalds, Bjarne Stroustrup, John Carmack, etc. is going to need to know the first principles like the back of their hand to build the next generation of operating systems, languages, and platforms. That's "real software engineering"; what most developers do is merely coding.
- klodolph 4y agoThe curriculum isn't being removed from existence, it's just being removed from the introductory classes. There are probably more people making their own OS from scratch in 2023 than in 1993 anyway--we have many more people with access to computers, and tons of free resources online for people who want to learn computer architecture, operating systems, assembly language, etc. This is not some kind of hypothetical supposition that "there must be people out there"; I know for a fact these people are out there because I keep meeting them, and some of them are damn young. The idea of genius men making stuff from first principles is just some kind of Hollywood schlock version of programming anyway. It's the stuff you see on NCIS when they make an episode about hackers. All the good stuff has been a team effort, even if it starts out as a solo project. Maybe with a few exceptions like cURL.
- inimino 4y agoThose people are the ones who can't be stopped, and they will continue to exist as long as people continue to pursue understanding for its own sake.