4 ms·
Software Engineering has to do with designing and building information-based applications that do something useful for people. As such, SE students should be fl
by bpyne 7y ago
Software Engineering has to do with designing and building information-based applications that do something useful for people. As such, SE students should be fluent in versioning and build tools, frameworks, languages such as Rust, Python, and Elixir by the time they graduate. They'll need to know about distributed systems and how to work with different data stores. Security, security, security...They shouldn't learn how to write secure software on the fly.
Data structures and algorithms are absolutely critical tools in the box. Should an SE student know the space and time complexity of them and what that means? Sure. Should every student spend time creating their own linked list, binary tree, hash map, or binary search algorithm? No. There is a value on the theoretical side of the house in knowing how to do it. But, data structures and algorithms used in the field are well-known and understood. Students should know when to choose what.
While taking quizzes and exams may have some value in reinforcement learning, SE grades should be based on projects. The projects should grow in complexity over the course of their college careers. By their senior year, they should be able to cost out a project for time and materials. The projects should become a portfolio for them when they graduate.
All of this assumes that the professors have some clue about building software. The professors would need to actively build software with modern tools.
The professors from my grad program were brilliant people who understood many foundational concepts. They expanded my mind greatly, which is what I went into a grad CS program for. Very few could build software though.
Students have so many conflicting deadlines that they aren't encouraged to experiment with tools they'll need to build software. They go with the quickest means to an end. A solid program in SE would give them the time and guidance.
- MisterBastahrd 7y agoProject estimation has jack squat to do with software engineering. That is a business problem, not a software engineering problem. A bachelor's degree is about learning the fundamentals of the discipline, not about learning to play with ancillary tools which will be obsolete in 4 years.
- scarface74 7y agoAnd this is the problem with junior developers. We are not paid to “write software” we are paid to solve business problems. Any software that I can avoid writing by using an off the shelf solution and let other people do the “undifferentiated heavy lifting” is a win.
- bpyne 7y agoAn SE is part of the "business". Often an organization has many projects that need to be done, so time estimates are critical to determine when the next project can start. It's an important skill to have. You're not "playing" with tools. You're learning to use them to build stuff of value to someone. And that's the point: SE majors should work on real world projects using modern tools. My contention is that SE should be a separate academic department from CS in the same way the EE is separate from Math and Physics. CS professors would continue to teach CS and very definitely not SE.