5 ms·
Could you elaborate on what it means to you to be "educated as engineers"? What qualities or learnings are stressed in that model that you think current CS educ
by keyanp 6y ago
Could you elaborate on what it means to you to be "educated as engineers"? What qualities or learnings are stressed in that model that you think current CS education misses?
- simonh 6y agoNot the OP, but Computer Science is a scientific discipline not an engineering discipline and is generally taught as such. Unless you take specific Software Engineering topics you're unlikely to learn things like unit testing, build and integration tools, how to use a debugger effectively beyond maybe a brief introduction at best, etc. If you were being taught software engineering as an engineering discipline, these should be absolute bread and butter core components of the course.
- ampdepolymerase 6y agoThere are very good reasons why whiteboarding focuses on computer science, and not the actual practice of writing software.
- yourapostasy 6y agoThis got me to wondering what an interview about "the actual practice of writing software" would look like, and having a look at Glassdoor's mechanical engineering interview questions [1] for comparison, it doesn't seem these kinds of questions would elicit much better quality candidates. I'm increasingly convinced that the apprenticeship program approach would yield far better, deeper results than how we're going about recruiting these days, but most business leadership is fiscally addicted to short-term hire-fire cycles instead of looking for ways to exert more control over their destinies. I suspect that recruiting model is an ingredient to systematized innovation (the "deeper" part I mentioned, which I use to denote internalized concepts, procedures, mental models, etc. necessary to fluent application and craft that I believe are absolute table stakes in innovation). [1] https://www.glassdoor.com/Interview/mechanical-engineer-interview-questions-SRCH_KO0,19_IP2.htm https://www.glassdoor.com/Interview/mechanical-engineer-inte...
- soulofmischief 6y agoHaving a professionally established engineer guiding and vouching for younger engineers seems like a very powerful idea, and could help combat the growing problem of a massively inflating industry bringing down average code quality. With so much demand, engineers could be very selective about who they take on for apprenticeships... businesses could be expected to help senior engineers find the time and resources to take on apprentices. Ah, what a world that would be.
- ampdepolymerase 6y agoAh yes, the standard gatekeeping post.
- soulofmischief 6y agoWhat exactly am I gatekeeping?
- dylan604 6y agoI guess that depends on the school offering the curriculum. I went to school as a Computer Science Engineering major. It wasn't EE, but it was way more than how not to write an infinite loop. It was billed as "you could design/build your own computer, and then write the software for it" type of path.
- pjmlp 6y agoNot at all, in Portugal we don't have Computer Science as it often discussed around here, rather Informatics Engineering, with certified professional Engineering titles. If you want computing theory without programming, you do a math degree with specialization in computing theory. Plenty of other countries follow similar practices.
- deleted 6y ago[deleted]
- simonh 6y agoI don't see how you are disagreeing with me. It sounds from your description that your Informatics Engineering courses really are more engineering oriented than our Computer Science courses, which is what I would expect.
- forgotmypw17 6y agoI think it means thinking a problem through and actually "proving" or at least "estimating" that your solution works before you set off to design and build.
- ampdepolymerase 6y agoIsn't that what literally every algorithms course teach you?
- forgotmypw17 6y agoa) I worked in the industry for 20+ years before I took a single algos course, and so do many other people b) Algos is only a small part of it. It is not just individual bits of code, but the whole system you're designing, all the moving pieces, how they connect together, network effects, etc.
- grecy 6y agoI think I can answer this, because I studied "Software Engineering" which was a 4 year degree (with honours), accredited by the Australian Institute of Engineers. A bunch of friends at my University studied "Computer Science", a 3 year degree (no honours option). Early on our subjects had a lot of overlap - Java Programming 1, Database 1, Networking basics (TCP), etc. etc. I also had a healthy dose of Eng. Maths, and electrical eng. theory. As the years rolled on I had subjects like Eng Ehtics, real time programming, software maintenance project, OS design, large scale system design, and I took a digital electronics minor (could have chosen game programming or OS design). Towards the end I did a final year engineering project which was a full year project with 16 team members, working for a real client, building a massive piece of software from start to finish. So my degree was a whole lot of Eng. stuff wrapped around CS. When finished my friends could sling code and make software. I could do that, but I could also design a bunch of stuff, and had a lot more theory to back everything up. At a very high level, I'd say Computer Science is more about "just do the work" like a welder on a bridge or a mechanic on an F1 race team. Where-as Software Engineering is people who designed/tested/validated the bridge, or the engineers who actually designed the F1 engine/chassis/aerodynamics. I see the difference play out in the workplace all the time when CS grads (or people with no tertiary education in Software) want to get right into slinging code, and they get totally lost building so many trees until the forest is really thick. Software Engineering folks step back and actually design the forest before they build trees. This also plays out when trying to fix stuff, or even root cause analysis. Doers want to get on with doing (welding, changing spark plugs) while Engineers want to get on with understanding what needs to be done, then figuring out how best to do it.
- stevegalla 6y agoThe University of Victoria (UVic) in Canada has a CS[1] program and an accredited BSEng[2] program, which might provide a useful comparison on an engineer’s vs a scientist’s education. Disclaimer: I am not a graduate of either or those UVic programs or a CS program, and I am not an engineer (I graduated from a mechanical engineering technology program), so my comments should definitely be taken with a bunch of salt. I would say there are three main differences: Engineering specific: 1. All engineering programs share a common engineering core. Physics, chemistry, material science, math (usually these cover the material from an engineering perspective and are different than courses in the faculty of science), drafting/engineering graphics, engineering economics, and possibly some other courses. 2. An emphasis on professional responsibility and ethics. For example, what happens if a civil engineer certifies a bridge and it later falls over (there is a course where you learn this!)? What happens if a developer builds a website that leaks customer credit cards information (I genuinely don’t know)? Software specific: 3. A greater emphasis on systems and systems design, testing, projects, and few electives leading to a standardized curriculum providing a more consistent knowledge base across graduates. Comments on engineering in Canada: Graduates of the BSEng program can become registered as a Professional Engineer (PENG) in Canada. To call yourself an engineer in Canada requires that you are licensed (PENG) or in the process of gaining your license (engineer in training / EIT). In Canada, to be “educated as an engineer” would, to a first approximation, require someone have a BEng, BSEng, or BASc degree from an accredited engineering program[3]. I am sure there other accredited engineering degrees that I am not familiar with. Only having a BSEng means you are a graduate of an accredited software engineering program in Canada, you aren’t an engineer yet. Professional Engineering registration requires a 4 year accredited engineering degree, 4 or 5 years of work experience. Some of the work experience must be supervised by PENGs. You must pass professional exams and keep up with professional development. Additional details can be found at [4]. [1]https://www.uvic.ca/engineering/computerscience/undergraduate/bsc-honours-program-info/index.php https://www.uvic.ca/engineering/computerscience/undergraduat... [2]https://www.uvic.ca/engineering/software/future-students/program/index.php https://www.uvic.ca/engineering/software/future-students/pro... [3]https://engineerscanada.ca/accreditation/accredited-programs-by-institution https://engineerscanada.ca/accreditation/accredited-programs... [4]https://www.egbc.ca/Registration/Individual-Registrants/How-to-Apply/Professional-Membership-and-Licence/Engineer-First-Time-Applying-in-Canada https://www.egbc.ca/Registration/Individual-Registrants/How-...