News for hackers. Stuff that matters.
Re:Microservices aren't the problem. Incompetent people are by SoftTalker on Wednesday November 08, 2023 @05:19PM (#38197955)
I don't know how CS is taught these days. In the 1980s I learned a lot about data structures, algorithms, and programming languages, virtually none of which I ever directly used in my later career. I've never had a job that required leetcode knowledge. I've never had to write a sort or a search or a tree balancing algorithm from scratch. There are libraries for anything you might want to do (and if there aren't, that's often a big red flag that you're doing something wrong).

I learned almost nothing about engineering. It took me quite a while on the job to learn and appreciate the practices that result in long-lived, maintainable systems. Overly complex, fragile systems with inscrutable interdependencies using esoteric frameworks are often the product of smart people who don't understand engineering principles (yet we often call them "engineers").

Re:Microservices aren't the problem. Incompetent people are by devbent on Wednesday November 08, 2023 @05:39PM (#38198230)
In contrast, I've worked on 2 UI frameworks and knowing all about tree traversal was super useful.

I've sat next to the engineer who had to write various sort algorithms for the embedded runtime I helped design.

I've witnessed a file system get implemented from scratch.

I have walked through the Windows' kernel source code and knowing my fundamentals sure as heck helped to keep me grounded.

> (and if there aren't, that's often a big red flag that you're doing something wrong).

Or that you've chosen a career building the layers that underpin everything else.

I've found that life is more enjoyable when I understand how things work at a base level, and remembering my fundamentals opened up doors to work on cool projects.

Re:Microservices aren't the problem. Incompetent people are by wvenable on Wednesday November 08, 2023 @05:28PM (#38198094)
In the late 90's and early 2000's I learned all that data structure stuff but that was mostly in the first 2 years. Beyond that many classes were about software engineering, project management, etc. I learned Agile (then in it's infancy) as well as doing a complete waterfall project (which turned out poorly -- as expected). But even at that time most other schools did not offer those kinds of courses in their CS education.
Re:Microservices aren't the problem. Incompetent people are by koreth1 on Wednesday November 08, 2023 @06:20PM (#38198682)
I think "most of what I learned is inapplicable to my job" is kind of inevitable in any CS program that tries to expose students to a breadth of topics before they graduate and get hired into specialized jobs. The trick is that the "most" will vary from person to person.

As a fellow 1980s CS person, I too got a lot of DSA coverage, but I ended up using a respectable amount of it when I was working at low-level systems programming jobs. I have never used what I learned in my computer graphics class. But I had classmates who went into animation and used that stuff every day.

Agreed about the lack of any education about the "engineering" side of the work, though. One challenge is that engineering is mostly a group activity but education is focused on individual learning. With some exceptions, you don't get a group grades in classes, and usually, collaborating with other students on your homework or your tests is considered "cheating" rather than "teamwork." Professors aren't in the habit of repeatedly changing the assignment out from under you while you're halfway finished, but dealing well with unpredictably shifting requirements is a huge part of the job.

Re:Microservices aren't the problem. Incompetent people are by SoftTalker on Wednesday November 08, 2023 @06:25PM (#38198732)
> Professors aren't in the habit of repeatedly changing the assignment out from under you while you're halfway finished

That would be quite interesting in terms of "real world" education. The unfortunate thing is that most terms/semesters are only a few months long and so work has to be very explicitly defined and scoped to be achievable in that time with the expectation of the student spending maybe 10 hours a week on any one class, tops.

Re:Microservices aren't the problem. Incompetent people are by gonzo41 on Wednesday November 08, 2023 @09:13PM (#38200179)
I'd love to see that. Give everyone an assignment on day one. Nice and easy and due in 10 days. Then in 9 days extend the project scope. Require collaboration and then set the due date +10 again. Just keep repeating until the final submission when you programmatically test and grade every assignment in front of the whole class with a "big bang" style "deployment"

I think it would be too real for the kids.

Re:Microservices aren't the problem. Incompetent people are by koreth1 on Friday November 10, 2023 @11:35AM (#38220921)
Another unfortunate thing in this context is that coursework is almost always greenfield development of small projects.

Coming up to speed on a large existing code base of inconsistent quality and style is another enormously important job skill, as is writing code that can be maintained by the person who has to come up to speed on your code a year later, but you'll never get those skills from writing small precisely-specified programs from scratch.

Re:Microservices aren't the problem. Incompetent people are by Samisp on Tuesday November 14, 2023 @11:57AM (#38265961)
But CS is not engineering, CS is a branch of mathematics. I studied Finance at university and I've seen people complaining how it doesn't teach you how to invest in stocks and do M&A. Later, talking to professionals about what they do in their jobs I realized that what I'm being tough is adjastent, but they are not preparing you for a job. It's not like medicine where you get placements and they literally train doctors. Same with Computer Science, it's not software engineering and while the two are obviously adjacent. Damn I'm 6 years into my software engineering career as a self-taught guy, and I've contributed, implemented, and released projects that work well in the real world for non-trivial companies, but I am only now learning about algorithms and CS theory as a side project.

I think bootcamps try to fill that field but most of the ones I've seen are quite trivial, getting you through the basics. If you're asked to implement 10 greenfield CRUD APIs and then go to a job and have to maintain some huge monolithic repo it's going to be hard.

I think an educational approach where the curriculum involves some sort of "For this task, you have to change this thing in this codebase and deploy it without crashing the thing", "refactor this code base", giving people some sort of project and then switching it up in the middle would be valuable because it's mostly what software engineers do day to day: write tests, fix bugs, implement features in existing projects.