Live data from Hacker News

You are never taught how to build quality software

florianbellmann.com

431–440 of 500 posts

Re: You are never taught how to build quality software

#431
post #395

Earlier quoted context omitted.

But there do exist shelves that don’t warp, when used within some reasonable bounds. I’d also quibble about the buttons on the coffee machine. They might be properly designed, just subject to the normal wear-and-tear that is inevitable in the real world. This is not a defect, physical devices have finite lifespans. As far as computers go… if we got to the point where the main thing that killed our programs was the ha…

A shelve is a dumb primitive static object though. Even a simple hello world goes over a huge amount of lines of code before it is displayed on a screen, ANY one of which being faulty could result in a bug visible to the enduser. And most of that is not even controlled by the programmer — they might call into libc, which calls into the OS, which calls into drawing/font rendering libraries, that calls into video card…

I think “hello world” is not really the simplest program in this context, in the sense that printing, as you note, involves touching all that complicated OS stuff. In terms of, like, actual logic complexity implemented by the programmer compared to mess carried along by the stack, it is really bad.

But I mean, I basically agree that the ecosystem is too complicated.

Re: You are never taught how to build quality software

#432
post #117

We do teach these things, they are just not core CS topics, but rather in other areas, relegated to electives like a software engineering course. At CMU we have entire Master's program for software engineering and an entire PhD program (in my department). We teach exactly the kinds of things the blog post is about, and more. Software Engineering is a whole field, a whole discipline. I get that this is a blog post and…

There's a massive gap between taught at CMU and taught at most universities. And even if it is taught, it's usually outdated or focused on very literal stuff like how to write web applications. I'd have killed for a class that actually focuses on implementation, on teamwork, on building complicated systems.

This just isn't realistic in an general CS undergrad though. Students don't have the time or foundations to build a realistic complicated system, and the institutions don't have skills or currency to teach them how. You complain about content being out of date, but the foundations of quality software are not by and large technical nor go out of style. The implementations sure do.

What you're asking for is where vocational (2 year) programs really shine, and one of the few places where I've seen bootcamp graduates have an advantage. Unfortunately both then lack some really valuable underpinnings, example: relational algebra. It seems that once again there is no silver bullet for replacing time and experience.

Re: You are never taught how to build quality software

#433

Earlier quoted context omitted.

I think you misunderstand, I'm talking about a programmer who makes perfect, bug-free code in one shot. There are no bugs to catch and fix, because this "perfect" programmer never writes buggy code. The moral of the sayings is, that "perfect" programmer is actually a bad programmer because he wouldn't know how to fix bugs by virtue of never needing to deal with them. To reuse the driver analogy, the driver who never…

I don't see that I misunderstood anything. If a software developer consistently delivers high-quality software on time and on budget, that means they're good at their job, pretty much by definition. It would make no sense to infer they're bad at fixing bugs. It would make sense to infer instead that they're good at catching and fixing bugs prior to release, which is what we want from a software development process. >…

Yeah, you're misunderstanding.

What we are discussing isn't a real programmer we might actually find. No, we are talking about a hypothetical "perfect" programmer. This "perfect" programmer never wrote a bug in his entire life right from the moment he was born, he never had a "when they were less experienced" phase.

Obviously, that means this "perfect" programmer also never debugged anything. For all the perfect code he writes, that makes him worse than a programmer who writes buggy code but also knows how to go about debugging them.

Re: You are never taught how to build quality software

#434

Earlier quoted context omitted.

Almost every CS course I took went the other way and had strict cheating policies that essentially made any group work verboten. There was 1 group project in 1 course I took in 4 years. My spouse on the other hand took an explicitly IT program and they had group projects, engaging with real world users, building real solutions, etc.

> strict cheating policies that essentially made any group work verboten If I had to guess, some polytechnic school or another? With some classes even forbidding discussing work with other students, where each assignment required a signed (digitally or otherwise) affidavit listing everyone you consulted, acknowledging that if you actually listed anyone, you were admitting to violating the academic honesty policies an…

I've taken course work at 6+ different universities, and in my experience different groups of international students have very different perspectives on what is cheating vs. collaboration. I think it's likely attributed to the western ideal of the individual vs. the collective.

Re: You are never taught how to build quality software

#435
post #276

Earlier quoted context omitted.

I've wished that students would be required to hand their semester long project to the person next to them each week.

The university I went to had this. We had to maintain an application that was built by our seniors and then hand that off to the next batch.

This is a really good idea, but I would hate to have to do it... unless I was the senior who got to do the original greenfield development!

Re: You are never taught how to build quality software

#436
post #365

Earlier quoted context omitted.

In my university, (US, state school,) we had a software engineering course exactly like this. It was great in theory, but in practice, the experience was rushed, the codebase was poor quality, (layers upon layers of nothing features with varying code quality,) and the background knowledge was completely ignored. The application we had to work on was a Tomcat Java Web application with an Angular frontend, when neither…

Am I understanding correctly that your concern was that the course is too close to reality to be useful?

You needed to partner with the business school to get a future MBA to convince the faculty (executives) the biggest return (profitability) was a total re-write!

Re: You are never taught how to build quality software

#437
post #117

We do teach these things, they are just not core CS topics, but rather in other areas, relegated to electives like a software engineering course. At CMU we have entire Master's program for software engineering and an entire PhD program (in my department). We teach exactly the kinds of things the blog post is about, and more. Software Engineering is a whole field, a whole discipline. I get that this is a blog post and…

Rose Hulman is an undergraduate teaching school that also has a distinction between a Software Engineering Degree and a Computer Science Degree. The Software Engineering degree takes a few less math courses and instead takes classes on QA/Testing, Project Management, and Formal Methods

SE is often taught out of the engineering school while CS the faculty of science, which in my experience makes a huge difference.

Re: You are never taught how to build quality software

#438

Earlier quoted context omitted.

I have news for you... He's not wrong. The porcelain is different, but the same methodologies and processes are in place. The biggest change recently is distributed (mostly ignored) version control, that's 20 years old, and continuous integration/development (probably also around 20 years old, but only catching on in the last 10-15 years). Computer science has changed more, there are lots of developments in the last…

So you're not a JS developer. Got it.

your talking about the porcelain of software engineering, is talking about the core of the profession...

Re: You are never taught how to build quality software

#439

Earlier quoted context omitted.

Almost every CS course I took went the other way and had strict cheating policies that essentially made any group work verboten. There was 1 group project in 1 course I took in 4 years. My spouse on the other hand took an explicitly IT program and they had group projects, engaging with real world users, building real solutions, etc.

> strict cheating policies that essentially made any group work verboten If I had to guess, some polytechnic school or another? With some classes even forbidding discussing work with other students, where each assignment required a signed (digitally or otherwise) affidavit listing everyone you consulted, acknowledging that if you actually listed anyone, you were admitting to violating the academic honesty policies an…

Also, for whatever my purely anecdotal experience is worth, I'd say the general quality of a professor's teaching was negatively correlated with how hard-ass they were about anti-collaboration policies. That also held true for a couple classes I'd dropped and retaken with a different prof.

One might think I'm just rating easier professors higher, but no, there were definitely enough sub-par teachers with lax policies and forgiving grading who failed to impart what their course was supposed to cover. There were also tough professors I learned a lot from. It's just that I can't recall a single decent instructor among those obsessed with anti-collaboration policies.

Re: You are never taught how to build quality software

#440

Earlier quoted context omitted.

The university I went to had this. We had to maintain an application that was built by our seniors and then hand that off to the next batch.

This is a really good idea, but I would hate to have to do it... unless I was the senior who got to do the original greenfield development!

Worst of all: the first seniors get to refactor the professor’s code.
Post reply on HN