In short: Does learning how to make software, have its place inside universities? If so which parts of it?
I was studying in a university in Russia. I don’t want to name its name and location. I wanted to become a software developer. Following some people’s advice I entered a faculty that was mostly about math. All its teachers are mathematicians. So most of our subjects were just different kinds of math. There also was some programming but much less. I was told by other students and teachers that how I pass Calculus and Algebra exams was the most important thing and that programming exams were unimportant at all. Many different teachers and students were saying that "a university does not need to teach programmers". They say that "it’s not science" and "it’s nothing but craftsmanship". During a defense of diploma people sometimes ask programmers something like "That’s all interesting but that’s not math so why it’s a diploma work?"
When I talked with people who were actually working as software developers they were saying that "If you don’t how to fix problems with Linux and don’t know a single architecture pattern then as a programmer you are really nothing". They also said that "I wouldn’t hire a developer who doesn’t tell me that HP-UX is a bad OS when I mention it". In university we spent a single lecture on patterns(and not even all students but some) and none on Linux and other operating systems. And I knew literally nothing about HP-UX. I had to learn 90% of my skills myself via books, online-tutorials and documentation.
In our country IT is a very popular industry. Because of that the math faculty students are 90% wannabe programmers. Teachers really hate that as they want math to be popular again. They say that "computer science ate math"(That’s citation of a teacher during a lesson, "Информатика съела математику"). The teachers despise us programmers. The employers in Russia prefer candidates with a degree but will gladly accept those without it. The students try to pass all exams only to have the degree, they don’t care about subjects at all. They forget everything when they come out of a room after an exam. It’s seems like students and teachers declared war against each other.
I left university without any degree. Now I work as JS-developer. I myself participate in interviews to hire new developers. I ask them about things like Single Responsibility Principle, how to write clean code and how to create indexes in SQL. I know that SRP is not a law of physics, it comes without a good scientific proof. But I need it from by workers.
The question is how do Universities in other countries approach teaching software development? Do they actually target it? Is actually becoming a real software developer that will be respected by employers and not a scientist is a valid goal for a university student?
Short answer: yes.
Disclaimer: I'm an Associate. Pr. of Computer Science in a University in France. We have several undergraduate and graduate programs that lead to bachelor and master's degree of Computer Science.
As the degree is about Computer Science, we do teach software engineering (among other topics : databases, networking, logic, architecture, compilers, ...). Some applied program are very applied (the students are working in a company for the duration of their studies, switching every two or three weeks between their company and the lectures at the Uni).
A computer science curriculum where one learns about software development is quite standard (from working with several colleagues from around the world I now that such things exist in the US, UK, most of Europe, Asia, Australia, …).
Correct answer by Kim Nguyễn on August 21, 2021
I am sorry to hear about your negative experience. It sounds like you did find work that you enjoy and are good at.
Over 30 years ago I graduated from a publicly funded university in the US with "Bachelor of Science, Engineering - Computer Science". I had also attended a privately funded university which had the Computer Science curriculum under the Mathematics Department. The degree program under Engineering included courses in Digital Design, Operating Systems design, a Compiler development project and some networking. (And of course, lots of Calculus, which I did poorly at, having no interest in math, and very little incentive.)
The program of study was not really about teaching how to write software, but instead: writing software while learning about how computer systems are designed and function. So, any programming skills were acquired in passing. There were no great tools and frameworks then, like Git and so on. We sat at individual machines, in the loop of Edit, Compile, Test, using text editors, and floppy disks to store our work.
When I got a job, it was during a recession and I ended up at a software company with about 100 people, whose main product was built in COBOL. (They redeveloped it twice while I worked there, in a 4GL, then as a web product.) I wrote and maintained PC software, but later worked on the server end of the web product. I found that my education had primed me with lots of ideas that were useful where I worked. I could analyze and solve problems that other people in the company did not have the background for.
Personally, I think that there is a place for this sort of 'university' education, and being a generalist in software design and systems-level concepts is a great thing. But I also think that being able to get a job and support yourself is too. There should be a training program for becoming "just a coder" as people disparagingly say. Well, lots of people just 'work', they don't all have to be innovators.
Surprisingly, being a systems-level programmer who can develop complex and unusual programs and tools is not all that useful in the real world, apparently, because people don't see it, recognize it. Even churning out new stuff does not mean it will be used. Business processes and considerations stymie a lot of innovation. Perhaps there should be a university for business process improvement? Programmers work hard at "Getting Stuff Done". Someone should really be making use of all that output.
Answered by Scott Rowe on August 21, 2021
The relation of math and CS is an important question but also fraught and contentious and therefore tends to tendentious rather than balanced discussion. It's particularly hard to discuss because one will inevitably have biases. And yet as I said it is important.
The Dec 1989 position paper On the cruelty of really teaching computer science by Edsger Dijkstra and the subsequent discussion by eminent computer scientists is a good starting point to see how diverse (and emotive!) the views on this can be.
As a summary Dijkstra says that
So far so good!
But then he goes on to suggest that the metaphor of "engineering" is unhelpful and that the metaphor of math is the correct one.
Naturally he finds disagreement on that count!
This just came my way — a nice roller-coaster showing the deep historical connections between math and CS.
Note: I'm in no way discounting that your experience of studying CS from die-hard mathematicians must have been dystopic. It's just v hard to get this right even for conscientious teachers!
Answered by Rusi on August 21, 2021
4 Asked on February 1, 2021 by user9137
3 Asked on January 29, 2021 by neal-zupancic
1 Asked on January 28, 2021
3 Asked on January 5, 2021 by user9790
5 Asked on December 30, 2020 by buffy
3 Asked on December 29, 2020 by neelesh-v
8 Asked on December 27, 2020 by louis-b
3 Asked on December 20, 2020 by pluke
21 Asked on December 11, 2020 by ben-i
0 Asked on December 8, 2020
5 Asked on December 7, 2020 by totera
3 Asked on December 4, 2020 by technosam
Get help from others!