Live data from Hacker News

Writes large correct programs (2008)

johndcook.com

81–90 of 114 posts

Re: Writes large correct programs (2008)

#81

Earlier quoted context omitted.

In other areas of tech, companies hire electrical, mechanical, and civil engineers, and not, say, physicists. Software engineers are analogous to the other engineers. Computer scientists are analogous to the physicists. Or take chemicals. When the question is "how are the outer-shell electrons distributed", you hire a chemist. When the question is "how do we make the stuff in multi-ton quantities without blowing up d…

The difference as I see it is that electrical engineers are expected to have a deep knowledge of advanced mathematics, EM fields, semiconductors, control theory, electronics, etc. However, software engineers are not expected to have a deep knowledge of algorithms, category theory, formal languages, etc. Effectively, companies treat Software Engineers like Electricians not like Electrical Engineers.

More like they hire electricians but expect them to do electrical engineering. In a way, despite the name, a rigorous discipline of software engineering doesn't really exist yet. Or it does (cf. "The Right Stuff", Space Shuttle software), but the tradeoffs for that kind of rigor are not or don't seem favorable.

Re: Writes large correct programs (2008)

#82

Earlier quoted context omitted.

> It really weeded out the folks who were just looking for an engineering job Wanting an engineering job means that engineering is such an important part of your life that you desire that your job (i.e. many hours each day) centers around it. The breed of people that you mentioned to be weeded out were not looking for an engineering job, but for some well-paid (often management) job that formally requires engineering…

In this ~40yo case, I'm guessing it was more of a "I got into a very prestigious state university because I busted my butt in high school and I've learned that CS is a high growth industry." The talented and hard working folks got in and found that studying algorithms at the beginning of the 3rd year from a textbook was doable, but designing and implementing a significant software system (or tweaking an operating sys…

It certainly should be the most difficult engineering on the planet, yes… but IME the standards for quality are so low that it’s a pretty easy gig. You’re expected to slap together stuff that barely works and fix things later. That’s now how any other engineering discipline works, or at least not nearly to the same degree. Also it’s hard to observe how hacky software is from the outside, so it’s easy to get away with a terrible mess of code that would nauseate anyone who looked at it. Most of the time management doesn’t even care.

Watching Practical Engineering on YouTube is a pretty illuminating experience for me as it as it shows the extreme care that goes into projects from the outset, how much planning is involved, how much we’ve learned from centuries of experience building things, and how even despite all of this, things can still fail spectacularly. And when it does, there are independent reports done by thorough investigators, who find the real root causes and carry the knowledge forward for future projects. It makes me sad that Software isn’t treated this way. Yes, we get things off the ground fast, but we don’t learn from our mistakes, we don’t conduct thorough investigations into failures, and often people just release things and move on to the next job.

Software may be a more complicated and “difficult” discipline but it sure isn’t treated like it.

Re: Writes large correct programs (2008)

#83

When choosing my degree back in the mid-1990s, I chose a BEng in Software Engineering, and not a BSc in Computer Science because I wanted to enter a career writing software, not a deep study of the theory of a branch of applied mathematics. I was fortunate enough to have figured this out for myself, and whenever I met a CS grad in my early career it was obvious that the production of actual software terrified them. M…

There is a problem insofar that software engineering somewhat exists, but it's more like CS for dummies. I think it's important that it actually teaches at a high intellectual level, just about something different. Let the students write an operating system, not some typical "manageable student task" bullshit. I've had an exchange semester in Oslo where they asked their students to do just that. First exercise: bootloader in assembly, second exercise: task switcher, third exercise: virtual memory, fourth exercise: filesystem - etc. It might have been one or two weeks per exercise, not sure. I actually failed most of the later exercises due to "other priorities", but I strongly felt that they were doing it right. The exercises were of course simplified, but a bootloader is a bootloader, task switching is task switching, virtual memory is virtual memory... no flourishes and some fixed buffer sizes etc, but the basics were there.

Re: Writes large correct programs (2008)

#84

Earlier quoted context omitted.

In this ~40yo case, I'm guessing it was more of a "I got into a very prestigious state university because I busted my butt in high school and I've learned that CS is a high growth industry." The talented and hard working folks got in and found that studying algorithms at the beginning of the 3rd year from a textbook was doable, but designing and implementing a significant software system (or tweaking an operating sys…

It certainly should be the most difficult engineering on the planet, yes… but IME the standards for quality are so low that it’s a pretty easy gig. You’re expected to slap together stuff that barely works and fix things later. That’s now how any other engineering discipline works, or at least not nearly to the same degree. Also it’s hard to observe how hacky software is from the outside, so it’s easy to get away with…

Its difficulty and uniqueness is why it just hasn't been 'engineerized' or 'engineerified' yet. It's still a craft, as opposed to an engineering discipline. As such, that means the quality of the software produced by any shop is going to vary according to the organization's standards, which is their combination of management and engineers. Sometimes management is very business-schooly in their perspective, sometimes more engineery. That boundary layer and how it is treated by the top of the hierarchy makes all the difference.

I was summer programming in an IT department in the late 80's; it was under the auspices of the comptroller, simply because the org didn't know where else to put it. Management was still figuring out which department would have the budget/cost stuff allocated to it. You can forget about engineering excellence or even semblance of IT knowledge.

Everything since then has been the (in)organic growth of IT in the situation that, for the vast majority of companies, IT is simply a cost whose benefit is hard to quantify, especially to the money guys, who are always the ones in charge.

Re: Writes large correct programs (2008)

#85
post #35

I’ve worked on and finished some extremely large programs over my years in non-tech enterprise. I’m also an external examiner for CS students, and I’ve regularly talked about how I think the curriculum is outdated. In Denmark where I’m from it’s rare to get a programming application from someone without a related degree. It wasn’t so rare 20 years ago, but I can’t remember when I saw one last. I agree that degrees, a…

> pseudo-jobbers like project manager

Just want to share my experience at the large, well-known tech company where I work: good product/project managers are worth their weight in gold, and I've never worked with a bad one.

Ours work at the intersection of backend, frontend, design, and product and help those of us who work in just one of those areas to coordinate, cooperate, and collaborate. I can't imagine trying to build such an enormous product or suite of products without them.

God bless them, every one.

Re: Writes large correct programs (2008)

#86

Earlier quoted context omitted.

If we’re productive enough to pay them to construct roadblocks, surely we’re productive enough to pay them to do nothing.

I do believe that a tiny uncomfortable UBI would increase the overall economy, and benefit individual businesses by pre-weeding out a lot of posers. If someone can get by on $500/month, and not feel the need to make the effort to live better, it would be a service to all to give that to them. And on the other hand, a small fallback that makes it easier for individuals going through a rough spot to come back also help…

The US already spends $1000/month per citizen on entitlements. If you just give everyone $500/month instead, you'd eliminate the deficit and have a few hundred billion leftover to spend on colonizing planets.

Re: Writes large correct programs (2008)

#87

Earlier quoted context omitted.

In this ~40yo case, I'm guessing it was more of a "I got into a very prestigious state university because I busted my butt in high school and I've learned that CS is a high growth industry." The talented and hard working folks got in and found that studying algorithms at the beginning of the 3rd year from a textbook was doable, but designing and implementing a significant software system (or tweaking an operating sys…

It certainly should be the most difficult engineering on the planet, yes… but IME the standards for quality are so low that it’s a pretty easy gig. You’re expected to slap together stuff that barely works and fix things later. That’s now how any other engineering discipline works, or at least not nearly to the same degree. Also it’s hard to observe how hacky software is from the outside, so it’s easy to get away with…

Planning and "extreme care" makes sense if you're building a bridge. Professional software engineering is more like a demolition derby. If you want to be successful you should focus on building fast and breaking things. It wouldn't make sense to blow up a bridge right after you've constructed it, but with software you can do just that. For example, I was just using American Fuzzy Lop a moment ago to break my symbol demangler. It was able to find eight ways to make it crash in a minute. So I fixed all those and let it run for a couple hours and it found another. Tools like this are a superpower. It's also fun to write torture tests and DDOS your own infrastructure. If you don't break it then someone else will.

Re: Writes large correct programs (2008)

#88

Earlier quoted context omitted.

I think this is true. At the time I’m writing this comment, yours is unfortunately getting downvoted, and I wonder if it is a wording issue or something. There definitely exist some people who do these sort of jobs in a way provides a negative/roadblock only type of contribution. This isn’t to say nobody produced a positive contribution in these jobs. And it isn’t to say these people who produce negative value are, l…

> But, there are definitely some folks who we’d be better off paying to not do anything. An even better idea: simply don't hire such people.

They are motivated to be hired (the alternative is no money, possibly no home or good).

They aren’t dumber than the folks who really want to do engineering and make neat stuff, just differently motivated. And if those two groups get in an office politics battle, the group that isn’t distracted as much by engineering wins, right?

Re: Writes large correct programs (2008)

#89
post #18

When I was a prof (many years ago), I was working on a database for a political campaign. The code was a mess. I asked a couple of my colleagues (successful comp. sci. profs) to help out. It became clear very quickly that there are two kinds of comp. sci. profs: those who can program and those who cannot.

One of my computer science professors when his laptop wasn't connecting to the projector: "I hate computers."

You enter the field with youthful exuberance, but long years fighting the war leaves you jaded.

Re: Writes large correct programs (2008)

#90
post #4

This reminds me strongly of reaching the final year industry projects in my software engineering degree, and seeing a significant portion of my colleagues unable to develop software in any meaningful way. There was a curriculum correction in the years afterwards I think, but so many students had zero concept of version control, of how to start working on a piece of software (sans an assignment specification or scaffo…

Our final CS course, Operating Systems, was in C, after all the previous courses were in Pascal. Luckily, I had already gotten access to various Unix systems and had taught myself C (thanks, K&R !!). And I say luckily because it was expecially lucky for my SWE group members who would otherwise have not graduated. I was already 10x at that point because of early access and passion for the craft. Most if not all of the…

With that kind of build latency, you're weeding out people who don't want to spend their whole day on coffee break.
Post reply on HN