Very disappointing! How is it so expensive?!
2,550 karma · joined September 26, 2011
Very disappointing! How is it so expensive?!
All software is kept "alive" by human effort. As hardware, operating systems, drivers, and runtimes change, all software is kept running by additional human intervention. Even physical media like DVDs and cartridges will degrade at varying speeds. Bits containing an unlocked installer must be stored somewhere. Consoles stop working and need components replaced.
Software is the music that we play, it just takes a few decades for the echo to stop reverberating.
Websites are the worst. How many versions of gmail.com have been discarded for us to get to the current version? I'm sure Google currently has them backed up, which will survive until Google goes away and the millions of versions will likely disappear like vapor in the sun.
Software with a required public API will likely end soonest. If it needs an old architecture or hardware, that is a risk. If you have an unlocked installer, what OS dependencies does it have?
Someone in this chain said they only feel like they own software if they have the source code. Which is another way of saying, if they have the sheet music, they can play the song themselves. But it isn't "permanent" it's just another song in the wind.
I have volunteered at a school that allows students to become self-teachers and it is very effective. They follow the Sudbury model, and students entirely teach themselves everything from reading to mathematics. They graduate from college at higher rates than traditional school students, make more, and have very high levels of self reported happiness. It's a really cool model, I wish it was more common. The school I helped at had no teachers, only 3 adults for 120 young people. They could all come and go throughout the day as long as they signed in and out. It's been up and running for decades, so it's not just a flash in the pan.
See:
Most of the windows-based programmers I interact with don't know powershell any better than I do. They use GUI tools for interacting with git and the filesystem.
So for me, git bash for git and filesystem interaction is a superpower in these places.
I could learn powershell, and I'm pretty sure it's much better than bash for scripting, but I'm almost never really scripting in bash anyway, I use tools like F# for that. Powershell seems fine, but it's less well supported on Linux and I don't really need a shell based language.
So in the end, git bash keeps on working and I can focus my learning elsewhere. It's stable, still works the same way 15+ years later, so no need to change.
https://news.ycombinator.com/item?id=41500932
Considering how much more effective tutoring is, we do it this way not because it's the best way to provide free child care (it isn't and doesn't even cover a whole work day). It's not the most effective way to educate students. Nor is it even the most cost effective way to teach students.
I'm left with the belief that it's either a cargo cult or a program designed to make a servile, uncreative population.
"It only takes about 50 contact hours to transmit basic literacy and math skills well enough that kids can be self-teachers from then on. The cry for "basic skills" practice is a smokescreen behind which schools pre-empt the time of children for twelve years and teach them the six lessons I've just taught you." [1]
Unless you have some strong evidence to argue why "sit down and lecture" is the most cost effective way to educate a population, I will retain my belief that it is a cargo cult at best.
"Bloom's 2 sigma problem refers to the educational phenomenon that the average student tutored one-to-one using mastery learning techniques performed two standard deviations better than students educated in a classroom environment."
https://en.m.wikipedia.org/wiki/Bloom%27s_2_sigma_problem
We just keep doing it this way because now it's a cargo cult.
E.g last night I setup my first Linux raid. A task that isn't too hard, but following a tutorial or just "reading the docs" isn't particularly helpful given it takes a few different tools (mount, umount, fstab, blkid, mdadm, fdisk, lsblk, mkfs) and along the way things might not follow the exact steps from a guide. I asked dozens of questions about each tool and step, where previously I would have just "copy paste and prayed".
Two nights ago I was similarly able to fully recover all my data from a failed ssd also using chatgpt to guide my learning along the way. It was really cool to tackle a completely new skill having a "guide" even if it's wrong 20% of the time, that's way better than the average on the open Internet.
For someone who loves learning, it feels like thousand league boots compared to just endlessly sifting through internet crap. Of course everything it says is suspect, just like everything else on the Internet, but boy it cuts out a lot of the hassle.
Lemmy.world is fine social media site. One could just host their own private instance for friends and family.
Not Dustin though, if anything he seems to have doubled down and sought to prove the ideas with working libraries. Here we are years later with a growing community and excitement about this real working software.
Bravo Dustin for having the strength to stay the course. You knew you were on to something way back then, and haven't lost sight of it.
Many systems are vastly more complex than 20 years ago. Even just system integration is a complex web.
It's our duty to train our employees. I disagree with the philosophy that hires someone with <5 years in the field just to throw tickets at them like they are fully trained. I've seen so many talented engineers wither away and quit from this lack of mentorship. It's disrespectful to them.
If you are a tech lead, it is your duty to spend the majority of your time training.
If there are high level tasks that need to be done that only you can do, have a Jr team member to it. They obviously cannot, and will need to research the subject, learn the area, and then you can use daily review and pairing to ensure they complete it successfully. I'd prefer to have a Jr dev take a 3x to accomplish a Sr level task like SSO integration while learning the area deeply than they fiddle with some CSS while I do the SSO integration.
This builds resiliency in the team. Now two people deeply understand the SSO integration. At the same time another Jr dev maybe was adding our first message queue for job processing. Again this is far too difficult for a Jr dev, but they are getting little bits of feedback throughout the process, I'm getting the message queue we need, and the team now has two people who deeply understand it, instead of one.
If I'm on vacation, my entire team should be able to handle any issues, because they built it all.
Also let's be real, the average project now is 10x the complexity of the projects when I was getting started in the late 90s. I remember my mentorship was little more than being given the pocket guide to Perl and told to read it. Also told to use emacs.
But we had no code review, version control, docker, container orchestration, no React, TS compiler, no HTML+CSS+Tailwind, no build pipeline yml, no ORM, no OOP, no unit tests. We "deployed to prod" with ftp. We ran jobs with cron.
We had a maybe 1000 lines of Perl scripts and a production database.
So it's not like there was a lot to learn. Of course a year in I still barely knew what a function was. After a year I learned PHP and made a basic website that talked to a MySQL database I on our one server.
The expectations were extremely low, there was plenty of time to putter and rework over and over.
So I try to be empathetic that this is a job that needs an extreme amount of on the job training.
How else will they learn? I don't mean this in a snarky way, but what other options are there? Code review is _terrible_ for training. It happens at the worst possible time, when the only options left are rework. Micro reviews like this give them a chance to explain what they are doing and thinking, usually they figure out issues on their own this way. It's a chance to point out edge cases they haven't considered. Lots of times it's a chance for me to notice a gap in their training, like maybe they forgot that SQL migrations need to put into a file and committed, not just run locally in their database. Or maybe they are trying to edit an autogenerated file. Maybe they are building something that already exists because they didn't read through existing libraries. The list goes on and on.
The only other ways they can be trained is just by doing and making a huge mess, which is extremely inefficient. Plenty of Jr engineers will never become a Sr engineer without feedback and mentorship, they will just make messes, never improve, get frustrated, and leave the industry. Notice the recent SO survey showing how few devs we have with more than 7 years. I think total lack of training is a big part of this.
I don't want them to waste days building a feature totally wrong, then me spend hours writing up a "now do it this way", just to have them rewrite it all.
This isn't creative writing, this is engineering.
Better to make small nudges along the way, finding gaps in their knowledge, pointing out resources, articles, videos, and tools to get them up to speed. Then over time they get the satisfaction of needing less and less guidance, and being able to provide that guidance to others on the team.
Definitely it's possible for this to be oppressive. It's possible for this to be micromanaging. I think the same is true for the style of go away for a week, come back and I'll point out a week's worth of mistakes all at once now that you think you're done. Having done both styles, I think this is far less wasteful and is much more humane.
The way I look at it is this, if I'm the code/architecture quality gatekeeper, I want to give feedback as early and often as possible. Imagine you could only run unit tests after you've written all the code. That would be infuriating. I want to run them all the time, knowing very clearly what still needs to be done to finish a project. This is me providing that feedback about quality and architecture as early and often as possible.
All that said, I'm probably a lot more aggressive with the size and scope of a project I'll let a Jr dev take on. I've got one now doing a month long series of features that all build to one coherent epic. He's gaining more and more momentum and confidence, needing less and less guidance each day. There's not a change he'd get to build something this huge on a normal team, they'd reserve it for a Sr dev, but because he's able to figure out each day what needs to be done, he's able to build out something really quite impressive. He's written 100% of the code, made a majority of big decisions himself, and still I'm 100% happy with everything that is committed. The second he is done he'll merge into main.
2. Ad hoc chats with manager, he is hands off other than twice weekly meeting.
3. Twice a week 60 minute meeting with the manager, product owner, researchers, QA, stakeholders. We demo new features to QA, finished features, and partially complete features to stakeholders. Plan new features as needed.
4. 3-5 minute video demos every two weeks sent to all interested parties
5. I block off several hours each day as quiet time for myself to do work. When I run larger teams (+5 engineers) I do not have personally assigned tasks
6. Pair programming, live code review once a day with each dev. I always prefer to hire devs who like to pair program, so ideally they will be pairing and rotating tasks regardless. Also promiscuous pairing, with tasks assigned to a pair stream not an individual. This ensures built in training and code review. No silos or solo work without significant input from a second dev ensures a minimum level of quality, catches issues early, and builds camaraderie.
I would say, this project sounds highly risky. I would personally assume only one dev will get any work done, and plan accordingly. What would you do if you knew the whole team would disappear tomorrow? You would set expectations, deliver the most important things first and get it into the stakeholders hands immediately. Do this, and the extra features produced by the other devs will just be gravy on top. Don't try to micro plan out every dev's time feature by feature, instead just ask the customers to order the most important features first and try to get it in their hands. Trying to actually plan a project with a timeline greater than 12 months has a <10% success rate in my experience. Instead try to deliver a first working feature into their hands in 3 weeks. Repeat. Don't ever try to fix scope and time more than a month out, it's effectively impossible. If you could do that, you could just predict the stock market instead and skip all the hassle
Almost like they are bribed by Eastman.
Most of our food is produced by a few percent of the population, yet people go hungry.
I don't know what the right answer is, but we live in strange economic times
What age range/subjects are you teaching? Is it a mandatory system or elective?
I have thought a lot recently about going back to teach at a community college or equivalent.
I do teach now a few times a year at a local firefighting academy which helps scratch the itch. The students are only there as volunteers, so they are a lot more engaged. It helps that we can punish them with extra duties and labor if they do anything dangerous or disrespectful.
I sometimes feel like public school would be a lot smoother if we could force students to carry around a 20kg container of foam all day when they misbehave! I think a physical labor punishment like that helps curb behavior with some people in a way that nothing else can.
After years of learning that lecture is almost completely ineffective, I had to do it anyway because the system is fundamentally broken.
Not only is lecture scientifically ineffective, but students can watch for free on YouTube or Khan academy the best lectures ever given on a subject, at their preferred speed, format, time, and location. Lectures that are animated, drawn, rewindable, and humorous. But I had to give the lecture anyway. Live. The same lecture three times a day to my three different classes. And we were graded by the administrators at how well we performed those lectures. We were even made to write them ourselves.
Imagine being an actor forced to write and perform a play three times a day that no one in the audience wanted to watch, and you knew for a fact was a waste of their time. But your bosses and the audience's parents demand it anyway. It's hard not to grow extremely cynical about the whole affair.
Then there are mandatory state exams which are even more cynical. All our funding came from the results of those, so we were extremely stressed about cramming all year for those. Cheating by teachers was rampant, so the school tried to have us monitor each other, which only worked if you wanted to be hated as a snitch.
If a student was failing, it was my fault. I had to justify any bad grade given to a student. If I did justify it, I was then blamed for their failure. There was no reason at all to give bad grades to students.
--Trauma dumping time--
If you happen to be male, expect students to act extremely inappropriately as a joke. They know you can't really do anything about it, so students will do it to stress you out. This is extremely stressful. I was constantly sexually harassed by older students, and was terrified I would lose my job over it.
My first day at one middle school in Texas I overheard several of the other teachers questioning why was I the only male adult on campus in tones indicating they thought I was a pervert. They could not believe a male would want to teach middle school for any other reason.
It became hard to show up everyday fearing that I would get assaulted by a student and thrown in prison over it. I was extremely careful to always have witnesses around, which wasn't always possible as there was no separate bathrooms for teachers. At one point I seriously considered wearing a bodycam every day just to have my own evidence of innocence.
Then there were the bomb threats, hallway fights, and the fact that quite a few of the male 10th graders were bigger than me and violent. At least once a week there was a hallway fight. At least once a month we had to evacuate for a bomb threat.
So as a teacher, I had to write and perform a play every day that no one wanted to see, that was a waste of everyone's time, to students who thought it would be funny to get me thrown in prison, a few of whom were bigger than me and violent.
The public school system is completely broken. I left it and never looked back. I would never send my kids to a lecture format school system in a million years. I would send them to a democratic free school, Montessori, unschool, or homeschool. But our public schools (and most private schools that rely on lectures) are cynical systems designed to stamp out creativity, critical thinking, logic, emotional intelligence, and empathy. It is designed to make incurious factory workers.
Don't take my word for it, see the words of John Gatto, the famous NY State teacher of the year: https://cantrip.org/gatto.html
He wrote this in 1990! This was long before cell phones, porn addicted students, mass shootings, and drug abuse. When students could still be given bad grades!
I can ruck a 20lb pack for 20 miles a day for weeks, but even that took a lot of training. Doing that with 50lb feels like it would be impossible. Maybe my 135# body has some limiting factor.
That being said, I love taking out a 50lb pack just to clear my head. It's like forced meditation.
https://deliberate-software.com/christmas-f-number-polymorph...
Or that 64kB of RAM was plenty enough to make all the software we needed.
I would rather always dream big and help invent the future.