High level programming languages have come a long way in the past 20 years. So many things we no longer need to think about in normal day to day programming
Have they? How? It seems to me that we're not very far away from where we were. Yeah we're running on better tin, but the programming languages are pretty much the same - at least the mainstream ones are.
> So many things we no longer need to think about in normal day to day programming
I'm always surprised when I read comments like this. It's not necessarily wrong, but all programmers writing anything less than trivial will bump into limitations of the various types of data-structures eventually. Not understanding the trade-offs and not being able to make informed decisions about different approaches will be a problem. We may not have to write them ourselves, but we should certainly understand how they're implemented in my opinion.
I may be a special case in that I started programming on machines with tiny amounts of memory and with slow CPUs, and have spent time writing core data structures when in the games industry in the 90s, and now in my large web-application life have a large open-source library [1] which is all core data structures; but I honestly couldn't imagine being a successful developer without a key understanding of these things.
We have a hardware that's thousands, if not a million times faster, yet it hardly seems to matter when the code is a thousand, if not a million times slower.
I agree. My argument is that they are no longer something everyone needs to know how to implement to be considered “can code at all”.
We'll get to call software engineers actual engineers when they can lose their (currently not existent) license over malpractice, not a second before that happens.
The tech industry cheapens the term "engineer". The discipline isn't nearly enough mature to be called that
I’m not aware of any that even attempt to hold software engineers to any sort of Professional Engineer standard, or have a mechanism that one could actually comply if they did.
I do know of some areas where a PE is required for some software engineers, like some nuke or aerospace shops, but they’re very very few in number - and the PE isn’t about the software part of it.
Tis a technical blog, being pedantic about expression meanings is all the rage around these parts :)
Plenty protect "Engineer" meaning "Software Engineer" is actually a title that you _can not_ hold.
As for the "mandatory courses on algorithms" and such if you go to university, definitely Germany. If you go to university and study computer science, the first few courses which you will have to pass before ever getting to choose your own courses are going to be about modelling, data structures and algorithms. You will learn the theory of hashing, you will learn how to model problems you will learn various sorting algorithms etc. in the lecture. Labs will make you implement various of these things on an actual computer. An exam will probably ask you to write one or two of these algorithms in pseudo code. Been there, done that. And of course comparing all manner of algorithms in Big-O notation etc. Also "reducing" one algorithm onto another (dunno if that's the proper term in English). But basically taking an algorithm that you know the run time of and showing that a different algorithm you have has the same characteristics and thus Big-O complexity. You will also learn about P/NP and will implement bin packing and such.
Unrelated to hash tables but hashing always reminds me of substring search algorithms that we learned about. The naive way is to just do a "text" search, advancing one character at a time and comparing the whole thing to your substring. I don't remember what the algorithm is called or who invented it but we learned about an optimization for substring search, which hashes with a particular hash function and when advancing a character in the string to search through, you reverse the part of the function for the first character and only add the result of the function for the next character. Thus you save having to deal with the characters that haven't changed at all.
Just like hash tables or linked lists, I've never needed to code any of these ever again and I just use them, but it was definitely worth learning about all this stuff.
The respective order validates that Software/Informatics Engineering degrees are actually engineering.
Additionally, for certain legal activities like signing contracts with liability, putting the Eng. so-and-so is only legally binding if the title was validated via the traditional admission exam.
Also you can be sued if lied about having a title, although since our prime minister got away with it, and legal system takes ages, probably no one would bother unless some big loss comes to be.
And if you so wish, can also get the ring.