Good software engineering skills on the other hand are pretty much more needed than ever.
Good software engineering skills on the other hand are pretty much more needed than ever.
true, widespread availability of high quality implementations may obviate the need to implement such structures 'by hand'. however, the developer must understand not only the operations that a data-structure supports, but also their complexity. one needs to understand the fundamental properties of data-structures to use them properly, so that the application satisfies it's own complexity requirements.
and complexity here is not just asymptotic complexity, but also the machine cycle count (ofcourse benchmarking helps here. a lot) this also implies that one must understand the architecture of modern machines f.e. how the cache-hierarchy affects performance etc. etc.
every decade (or even less !) new architectures are sufficiently different from the previous generation that makes a mockery of our 'intuition' of their performance characteristics. data structures that might work wonderfully on old pdp machines would probably not be a good choice on modern machines with multiple layers of caches etc.
this constant tension between abstractness and efficiency is what makes, imho, programming such a joy :)
The question is: are algorithms essential for one's career and for the majority of business too? I don't think so.