5 ms·
Software Engineering has nothing to do with "modern tools." Data structures and algorithms are absolutely essential to software engineering, which itself is ju
by MisterBastahrd 7y ago
Software Engineering has nothing to do with "modern tools."
Data structures and algorithms are absolutely essential to software engineering, which itself is just a buzzword for applying known and repeatable methodologies to writing software. Every single "software engineering" concept outside of maybe QA / testing is already a subset of a modern computer science curriculum.
"Modern tools" is specious. Does it make sense for a student to use git or JUnit or Vagrant or Node to get their work done?
Sure.
Should a professor spend any time covering these things in class?
Hell no.
Any student who is unable to figure these things out on their own is going to be unemployable when they graduate anyway. A prof should give them directions to the documentation, and that's it.
- scarface74 7y agoThen what’s the use of the professor if all they do is tell people to RTFM?
- MisterBastahrd 7y agoShould a professor spend half his allotted class time teaching a student to learn a programming language and then another two weeks on git? Why? Is the student's time better spent getting spoonfed he can learn on his own, or getting education from an expert on things that are actually difficult to learn from a book?
- scarface74 7y agoIf you think that programming is “easy” for everyone to learn from a book, you’re so far out of touch I don’t know where to start. Yes most graduation students are going to be programming and not “inverting binary search trees”.
- asdffdsa 7y ago"Any student who is unable..." this is a sink or swim mentality that is just wrong imo and doesn't account for students' workload. Most everyone who started out had difficulty understanding software tools and the paradigm they operated in, and college students taking 4+ courses have 4x the material, not to mention the ramp up of 4x the tools to use, documentation to read, etc. If you're going to throw 40+ hours a week of course work, and then the responsibility of learning git, gdb, python, LaTex, fundamentals of the Linux terminal, etc without extra time or assistance, then most likely you're going to have a lot of pragmatic young people throw their hands up and say, "forget it, I'm gonna study business/physics/x engineering" instead
- chrshawkes 7y agoDo you realize how many new programmers struggle with simply adding Python to their path? That simple concept is beyond most engineering students and can literally cost them days in research. It's easy to forget where we started.
- MisterBastahrd 7y agoIf a person can't figure out how to use google to find out what they need to know and they don't have the social capacity to ask their fellow classmates then I don't ever want to work with that individual, and neither does anyone else.
- scarface74 7y agoSo they are going to ask their classmates who are also college students without any real world work experience about which tools they should learn? If they are just going to teach themselves bad habits from Googling, what’s the use of college? How many example websites are out there about how to use sql in programs have: sql = “select * from User where firstname = ‘“ + firstname + “‘“; And it was just posted today about people committing their AWS credentials. Mostly because every AWS example has client = S3Client(secretkey,accesskey,”us-east-1”)
- MisterBastahrd 7y agoCollege is for educations. It's not a vo-tech academy. Also, you're running away from the discussion. The issue is about students becoming unhireable upon graduation. An associate level developer will be able to fix the issues with a junior level developer who would use that sql statement and AWS credentials, and frankly, being able to crank out that sql statement is far beyond what the average graduate can do to begin with.
- scarface74 7y agoDo you really think that the average American family is getting thousands of dollars of debt for college for any other reason than helping their kids get a job? I was responding to the idea of just “googling for the answer”. In both of the situations above, the student would search for the answer and get back an example that was insecure, but how would they know that? In the first case, the sql statement is a prime target for a sql injection attack where they should have used parameters and in the second case, they should have not included their credentials in their code at all and configured their local box to store credentials in their user directory and used a role on AWS. And you wonder why not only can’t Johnnie do FizzBuzz, but why in 2019 developers are writing insecure applications. But why would I as a hiring manager (I’m a reformed dev lead), hire a junior developer who just knows theory and will spend the first six months to a year doing “negative work” when I could pay the boot camp grad or the recent immigrant who was focused on learning useful skills a few thousand more?
- bpyne 7y agoSoftware 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.