The two hardest problems in Computer Science are
1. Human communication
2. Getting people in tech to believe that human communication is important
The two hardest problems in Computer Science are
1. Human communication
2. Getting people in tech to believe that human communication is important
@screwlisp @ocratato @hazelweakly
And off-by-one errors.
@dequbed @slothrop @hazelweakly We are engineers and scientists.
Fuck the haters. ;)
Ain't nothing wrong with being a plumber. The equivalent in IT would probably be the network administrators. Similar levels of education and certification requirements. The plumber is probably more regulated by law, but the expectations are similar.
I really don't understand the human obsession with labeling wide groups of other humans and then group hating on them. It's weird. We're just people.
@crazyeddie @dequbed @slothrop @hazelweakly
They're not saying there is something wrong with being a plumber or a bricklayer. Those are both artisanal professions that build infrastructure, whereas the average software engineer is trained to view themselves more as a capitalist. Of course, we aren't. We are also members of a largely artisanal profession.
@nap @crazyeddie @dequbed @slothrop @hazelweakly i did a double take at "*just* plumbers" as well. (Pretty sure not intended negatively in this case, but could be more positively worded, I think)
Given the right incentives, both plumbers and software engineers can do some very useful stuff, and solve some hairy problems. Also, I met some of the best and most compassionate communicators among craftspeople. Let's celebrate that and let go of the stereotypes!
@dequbed @iwein @nap @crazyeddie @slothrop @hazelweakly
As a data engineer I often self-describe as being basically a plumber.
The difference, I think, is that plumbers actually achieve the holy grail of applying a technical solution to a social problem, specifically the social problem of having poop in the drinking water.
Plumbers and bricklayers do essential work. The problem with managing sociotechnical systems through the tech/engineering lens is that the ultimate societal goals tend to get lost as the job becomes less and less prioritised by politics and social issues, but more and more by technical optimisations of the system.
So tech ppl need to either start condidering the ethics of choices they make, and involve sociopolitical stakeholders more.
Conversely, political and social issues requiring technical tools to help solve them, should be able to build on the craftsmanship and experience of techies to deliver stuff that works and that can be maintained.
It is hard work to keep these two worlds connected and positively constructive.
@fabos @hazelweakly Not for everyone. There are several greats who found solitude offered them much more. Authors, philosophers, scientists, mathematicians... When you think of a great mind in human history it was probably thus.
Humans rate themselves way too highly.
@crazyeddie @fabos @hazelweakly … might explain why so much of philosophy is so out of touch.
Sure, being able to focus and think things through is valuable, but there’s a reason Einstein said “As far as the laws of mathematics refer to reality, they are not certain; and as far as they are certain, they do not refer to reality.”
Hey... We have the same scars! <3
I thought the two hardest computer science problems were:
1) naming things
2) cache invalidation
3) off by one errors
(To be clear, I fully agree with the "communication" point. Just couldn't pass up the set up for a joke.)
@hazelweakly I fully admit to HATING the mandatory "arts" courses (English lit, sociology, history, etc) I had to do as part of my uni degree. If I were doing it now I would probably have chatgpt'ed my way through most of the essay writing. Which is what I worry is happening with the next generation 😬
I'm at the point in life/career where I realize these were actually really useful.
how do we actually illustrate the value of these subjects to future generations? For me I know part of the issue was time management - trying to focus on reading a book and reflecting on it while also juggling all the "engineering" course work. Separate them into their own year/semester?
@deliverator In my engineering degree plan, an engineering ethics course was mandatory. We discussed some high-profile failures like Bhopal and Chornobyl, as well as some lesser-known ones like the Hyatt Regency walkway collapse, the THERAC-25, and the Gimli Glider incident. We also spent significant time on how IBM and other big companies built machines which powered Hitler’s extermination camps.
The programming and IT degrees available at the time didn’t include any ethics courses, which is part of why I’ve never felt people doing either should be called engineers.
@bob_zim @deliverator my electronic engineering degree barely touched ethics, just as one topic in the "Engineering Management" subject that was a real cakewalk. Computer science didn't mention it.
We also had room for zero things outside of science, which I wish was different. It would have been nice to do some subjects on other topics.
@cwg1231 @deliverator The seL4 kernel is pretty widely used (not as common as VxWorks, but it’s up there). It’s mostly C with a little assembly, and most versions are proven correct against a specification in Haskell using Isabelle. It’s a shining example that C code *can be* written correctly, but also of the lengths to which one must go to ensure this correctness.
Newer languages certainly make big parts of the process easier.
@cwg1231 @deliverator It’s just so weird how many software people have never heard of formal verification, and have no idea that you can write software which is provably free of implementation bugs.
On top of this, software doesn’t decay like a bridge! It doesn’t wear out like an engine does. Once it’s correct, it’s correct forever (or at least until the specification changes)! That’s should be huge! To me, the fact this isn’t even widely known—let alone striven for—is a sign of how unserious the software industry at large is.
@deliverator @cwg1231 I guess my point with that digression is that engineering is characterized by exactly two things—ethics and rigor—neither of which is practiced by the overwhelming majority of programmers.
Formal verification isn’t a total solution. A specification can still be bad in plenty of ways, but the software built to meet that specification can be correct. It’s difficult to do, but every real engineering discipline is difficult, and they don’t have correct solutions.
@bob_zim @deliverator excellent points all around. Regarding rigor, something that absolutely needs to enter the public discussion sphere is confidence metrics for probabilistic software (i.e. any machine learning algorithm ever, especially computer vison). Any probabilistic algorithm being marketed without a probability disclosure is wildly irresponsible and should be publicly shamed. I’d go as far as saying probability disclosures ought to be legally mandated, as well as disclosure of the dataset used to produce that measurement.
While software doesn’t decay in the literal sense, it does decay metaphorically. Vulnerabilities are found and need to be patched. Dependencies become deprecated or unmaintained.We run out of seconds since 1 January 1970 countable by a signed 32 bit integer. The left pad incident was a wake-up call for dependency maintenance. I’m vaguely aware of some frameworks for assessing the risk added to your project by a dependency, but I’ve never heard of a dependency being excluded from a project because of its risk. In that sense, we’re still in the fuck around and find out stage of software development. I hope we can change that soon.
@skry I mean, yes, it straightforwardly is that and we've known that since the Enlightenment.
But I think you might be using the term binary to mean Manichean instead.
With binary thinking you get binary logic and an enormous array of different positions and claims become possible via the operators techies all treat as second nature — AND, OR, NOT, XOR, etc. The state model is only dualistic if you take it at a single time point and don't relate it to anything else. The moment you do either of those things, you get incredibly complex and diverse possibilities as an emergent property.