Comment by jumploops
7 days ago
So much of practical CS is abiding by standards created by solo programmers in the past.
My university frowned on any industry-related classes (i.e. teaching software engineering tools vs. theoretical CS), but I was fortunate enough to know a passionate grad student who created a 1-credit seminar course on this exact topic.
This course covered CLIs/git/Unix/shell/IDEs/vim/emacs/regex/etc. and, although I had experience with Linux/git already, was invaluable to my early education (and adoption of Vim!).
It makes sense that this isn't a core topic, as a CS education should be as pure as possible, but when you're learning/building, you're forced to live within an operating system and architecture that are built on decades of trade-offs and technical debt.
If you've made it that far in life without learning how to use a screwdriver, engineering would be a bad choice of major. And paying insane amounts of money for someone to explain how to use one would be an even poorer choice.
It was amazing to me how many people I met in college that pursued majors they didn't even like. It was even more sad when it was clear they or their parents had fallen in love with the idea of a career path and not the realities of it.
Lots of my engineering cohort landed in sales because they didn't like building or fixing things. I guess that's a win for them, but I always felt nauseated that practical kids might be cut from the program instead of the book-smart but uninterested ones.
I asked my CS peers why they were doing that major since they clearly disliked programming and theory.
They all said they would either be a consultant or a manager.
1 reply →
Same reason I always wonder whether I should go for an electrician/mechanic/avion mechanic education if I'm laid off (and cannot find a job).
I'm really not a handyman -- quite the opposite -- it took me and my father 30 minutes to change the car battery last time -- and most of the time was spent on pushing a component dropped to the bottom out of the car. I used to think that more practices bring some sort of linear growth of the skill in the beginning, but now I tend to believe that for certain people (who are not suitable for the trade), the beginning is totally random -- I could practice 100 times and fail 100 tiles randomly, without really learning anything -- because there are an unlimited number of ways to do one thing, theoretically.
Software suits me way more. Soldering is also OK albeit more confusing. Unfortunately there is no trade that primarily deals with microcontrollers, except in military/defense.
Universities consider themselves pure and isolated from lowly industry.
Industry demands specifically university degrees to gatekeep positions.
And then we leave teenagers to figure out the puzzle by themselves. I think it's a disservice to the youth.
Universities produce research, and students; Students produce industry, and the body politic; Industry and polity produce university funding.
A cycle I like to call, the "ring-bugger."
I'm not saying it's right, or acceptable, or particularly moral… But I agree that by obscuring the facts, we only serve to confound the decent and good-willed of our students.
Edit: derp.
In Portugal it depends on which university degree you go to, there are for all levels.
If you want a higher education degree focus on what the industry is using today, you go to a politécnico, or técnico superior school.
If you want more focus to learning to learn, with more broader horizons, then you go into plain old university.
If you want to broaden the horizons, but still have some contact with what is industry is using today, you go into an applied engineering degree.
Additionally, similar to Germany with their Azubis program, you can just go to a technical school, with focus on being industry prepared, learning on the job during summer internships, and still leave the door open for going into the university later on, e.g. técnico professional.
The problem are the places that only have one way to approach higher education.
While I have my issues with the system, many Soviet-controlled countries implemented a two-tier higher education system that solved this by having one tier be focused on practical subjects and the other on theoretical ones.
Britain used to have this too. Sadly it was strangled to death by the UK class system, but the replacement didnt help.
Once upon a time the white collar track was to go to University. One of the old ones if your class situation was pushing you towards executive roles in the Civil Service or banking or some big corporation. One of the newer, redbrick ones if your horizon was more like running a textile mill in the North. You were trained to think and had a fairly Great Books style of curriculum.
For the people who needed advanced education to keep the electric grokulator working, there were polytechnics. People came out of here with practical skills. In some areas, like mathematics, there would have been overlap between University and Polytechnic courses.
Then there were technical colleges where working class people could get skills to help them in their jobs, like rebuilding engines or CNC machining.
Then, people got antsy that university was so elite and only 5% of highschoolers were going. why not let polys be universities? After all, we need to keep up in a global economy. And so there was a massive gold rush and places that had no business or capability became A University overnight.
But...Brits being how they are, they still stratified themselves into class layers. You're far more likely to find a Russell Group university graduate in a fancy job than someone from a former poly in the North. The class system persisted despite everything, and attempts to broaden educational access ultimately did not simultaneously keep the quality uniformly high.
> While I have my issues with the system, many Soviet-controlled countries implemented a two-tier higher education system that solved this by having one tier be focused on practical subjects and the other on theoretical ones.
In Germany, there exist even more tiers for tertiary education:
- vocational training
- universities (academic training)
- Fachhochschule (instutions of tertiary education that offer study programs that is more focused on skills that are needed by industry)
- in some parts of Germany: Berufsakademie: even more applied than Fachhochschule; you absolve half of your tertiary education at a company
1 reply →
Yeah, I got duped by this. Did a CS degree because that's what you're "supposed" to do to get a programming job, and it was almost all theoretical junk I had no interest in. I hated it. I think I learned useful things in like, two of my classes. I knew more about programming than all but one of my instructors. It was awful and going through that degree program is one of the biggest regrets in my life. But hey, I get to stick "CS Degree from University" as the very last line on my resumes, I guess. Woo.
I was directly told by senior staff at a large org I worked for that I'd be eligible for a managerial position-- the only thing I was missing was a degree. Unfortunately, getting a degree while working full time for the income I needed was impossible for me at the time.
My entire career would've been different if I had that "very last line on my resumes" and I'd be better off financially. I just couldn't pull it off. I hope yours pays you back eventually, it seems like you worked hard to get it.
1 reply →
Where exactly did this "supposed to" come from? I've never met anyone who expected (or needed) a CS degree to teach them programming.
4 replies →
Sounds like MIT's missing semester https://news.ycombinator.com/item?id=46273762
> So much of practical CS is abiding by standards created by solo programmers in the past.
I wonder if this shows up in other disciplines? Do surgeons do this? I'm thinking in particular of the bit in Richard Heller's book M * A * S * H (you're probably more familiar with the TV series) where one of the old hands is reviewing the Young And Enthusiastic Newbie's work, and says something like "Your work is absolutely perfect and it's the neatest job I've ever seen, but you're going to kill a patient doing that because it took you two hours and some of these kids don't have two hours".
Fwiw I just graduated grad school and our lower division courses taught most of this stuff, though not as the main subject. Most upper division classes required you to submit your git repo. Most of this was fairly rudimentary but it existed. Though we didn't cover vim/emacs and I'd argue shell and bash were very lacking.
That said, several of us grad students and a few professors lived in the terminal. The students that wanted to learn this stuff frequented our offices, even outside office hours. I can certainly say every single one of those students was consistently at the top of the class (but not the only ones). The students who lived in the terminal but didn't frequent office hours tended to do well in class but honestly I think several were bored do didn't get straight A's but I could generally tell they knew more than most. Though I'm biased. I think more people should live in the shell
> It makes sense that this isn't a core topic, as a CS education should be as pure as possible, [...]
I don't think that's a good goal. Otherwise, why let you near a computer at all, and not restrict you to chalk and blackboards?
Pure CS is not necessarily equivalent to pure maths. For the “science” bit of CS, you do need to do the equivalent of experiments (for more applied topics).
For example, a physics degree is expected to have experiments. You are not required, expected (and possibly do not want) to know the tools required to professionally build a bridge because you did courses on mechanics. But you might do an experiment on the structural integrity and properties of small structures.
Whether this is a good split is an entirely different question.