rarely has asymptotic complexity mattered to my code. usually the most important factor is modularization and readability. i spend more of my time reading or re-using code, and my time is more expensive than a computer. plus, highly optimized code can sometimes be unreadable and lead to bugs, which are also more costly.
If it hasn't mattered to you, it's probably because you are using libraries or apis which have solved for optimal performance.
In short, performance mattered a lot to you code. Only, you didn't slog long hours to make it so.
Back to the topic at hand, if you didn't spend time to understand why a particular module or library is part of your code base - be it for performance or maintainability or any other -ities - you're halfassing your job as a software engineer. Would a structural engineer ever claim with a straight face that they have never worried about the integrity of their struts? That's basically what you said with your claim.
Nah, that isn't what was claimed. What you describe is more like claiming an engineer is half assing it if he doesn't verify that a given strut (library) that has been analyzed to death (already verified to have characteristics meeting the requirement) in fact meets them.
The OP said they don't care/haven't had to care about performance. What you're saying is that they used a library which is known to be performant. If the OP knows it to be performant, they are misstating that they don't care/have never been asked to care about performance. If they truly don't know about the performance and picked a library at random, they are halfassing it and aren't doing their job as a software engineer.
Well, remember: don't start with performance in mind unless you have to or you already know the right way.
Take a Python library like requests. Who the hell will read the source code and run a profiler on that module if you see a consumer? I don't care until I have to. Perhaps before shipping my production code I can run a profiler. If you are going that deep at the beginning, you are wasting your time instead of building MVP and iterate. Library's code out there is ever changing. One version can br slower than another. You aren't doing meaningful work if you start with performance.
OP didn't say he/she is picking a random library out of the blue. I don't remember reading that "random" part.
This entire discussion is about what an SE does vs what a CS does. Item #1 for an SE is to pick a library to use instead to reinventing every wheel every time. OP says they don't care about performance which is a naive, potentially stupid, approach to software engineering. Beyond this, I'm out of crayons.
Just because some hotshot (PG?) said to not optimize prematurely doesn't absolve you of your responsibility towards picking a library to use. Don't optimize early by all means but at least know why the library you picked might not be a great choice for problems you face in the real world.
Do you write your websites in C outputting raw HTML? I'm sure you don't. Clearly you made some sort of reasoned deduction about the tools at hand and went with one which got the job done. Why did you not pick C code spitting out HTML? No point premature optimizing your productivity, right?
The "hotshot" was Donald Knuth, and he was talking about getting clever before you're sure your program does what it's meant to do. The keyword is premature; analysis and optimization pretty much forms the bulk of his body of work, although he doesn't believe in sacrificing readability until you're out of other goats to kill.
If the project you are taking on is to optimize performance existing codebase, then yes, you worry about performance, because that is your primary objective.
I do care about performance myself. I did look up which Python json implementation library out there is the best in terms of performance as well as whether the library is actively used and developed.
But that's only because I knew from the beginning json marshal and unmarshal are expensive. However, I stopped worrying now and only use the native json module that comes with the standars library because I see no gain for my projects. Perhaps that matters if I am Google. A 10ms gain was not even a problem for me in my projects.
Anyway, back to the argument. Let's take architecrure and structural engineering. Building a skyscraper is a complex task. Everyone wants the next skyscraper to look different and taller. But no architects or structual engineers I am an acquaintance with would start the question "how do I reduce the cost? How do I make my building taller while maintain resistance to 9.0 earthquake."
Those are concerns, but they will use whatever knowledge they already have to draw a model. Then they run simutations and go over challenges and problems they need to resolve to meet the requirements. No one starts the actual project by looking at how much they can save.
The only people in computer science and software engineering would always bear performance in mind from the very first step are computer scientists. No one design an algoritm or a new data structure or a novel method to build origami unless the purpose is to find a better complexity (space and run time). But I want to emphaize that software engineers are computer scientists if they want to claim to be one. A formal degree is not a requirement to be a computer scientist. A good software engineer does take performance into account, but not until some MVP working code exists. One might implement the solution using quicksort knowing it is easy and effiecent enough, until they recongize qs is not fast enough then another sorting method maybe used or developed.
Productivity is the thing that is worth optimizing.
Seriously, stop worrying about performance. Don't consider it when picking libraries. You'll write better programs as a result. I know how implausible it is, but it happens to be reality.
I have seen the impact of linear or exponential complexity quite a bit in real world code so I think it's good to be aware of it in case you are having performance problems.