This is probably going to get deleted since it's more of a rant than a question, which I formulate here (and remember, cultural thing learned in EE, I never question something without having an answer to it even though possibly just as wrong as the status quo).
Question: what alternatives do we have to the current disfunctional state of both interviews and fieldwork that follows it?
Hint: if I could answer (like actually solve it), that would be worth $B++.
So what interviews ask for:
- Automated tests that ask you to implement a random algorithm with optimum execution and all corner cases handled, within a limit of 30 minutes.
- If you pass the machine gun barrage automated tests, you get an in person interview where they ask you to be an expert in this sort of code: http://aras-p.info/blog/2018/12/28/Modern-C-Lamentations/
====================
...
// "for_each" creates a new view by applying a
// transformation to each element in an input
// range, and flattening the resulting range of
// ranges.
// (This uses one syntax for constrained lambdas
// in C++20.)
inline constexpr auto for_each =
[]<Range R,
Iterator I = iterator_t<R>,
IndirectUnaryInvocable<I> Fun>(R&& r, Fun fun)
requires Range<indirect_result_t<Fun, I>> {
return std::forward<R>(r)
| view::transform(std::move(fun))
| view::join;
};
...
====================
1) No abominations like above, which by the way does this:
void printNTriples(int n) { int i = 0; for (int z = 1; ; ++z) for (int x = 1; x <= z; ++x) for (int y = x; y <= z; ++y) if (xx + yy == zz) { printf("%d, %d, %d\n", x, y, z); if (++i == n) return; } }
To my experience, any team and project manager that's incompetent enough to allow for such "genius" to unfold themselves in a production and comercially bound project, well they get slaughtered. I haven't yet seen companies incompetent enough to do that but I've seen projects spanning over the course of 3-5 years with dozens of people involved being tossed away and the geniuses (and company) be supported by the humble C level of "mediocrity" of the printNTriples.
2) There are hard algorithms to be implemented and they usually involve hard and horrible domain knowledge that takes a heck lot of effort to aquire, effort of which as wishful you may be you'll never be able to factor out time and lots of it, is plain nasty and entirely non-portable outside of the environment that never pays you enough for dealing with it. Ex: for those who complain on "no documentation", the domain knowledge of the domain last amateur level project yet $500M worth commercially project that I worked on could be described in maybe 5 pages of documentation, the contract we work on that's worth some $5B has 1111 pages of documentation in some 20 chapters and my assigned one leads to some 20 other documents amounting to more complexity.
All the while the greatest challange, in C++21 still remains to compile the damn thing. Not that it takes 2 hours to compile what in Java essentially it's Borland's Pascal 5.0 responsiveness (latency and throughput). We've learned to be so traumatized by C++ that as long as it compiles*, we're happy.
Not to mention BUILDING the damn system, like setting it up for first time use, with dependencies and all. Everytime I change projects, I cringe and pray from a miracle from God if the process takes less than one week. Not that I complain about that week - see above.