Re: Absolutely
core networking protocols? tcp/ip ? Shit I had a developer come to me recently with a straight face, and said he had a new app he needed deployed and he needed some back end storage for it. Sure, so I asked him a few Qs, and he answered, all sounded reasonable. So I asked them then what is his timeframe, and he said "they want it today........." (he added the dots..) Fortunately this was over online chat and I burst into laughter. I asked if the code was even written yet, he said the front end part was, the back end was not(part that stores the images and stuff). He asked if there was an API to code to, I said he should ask the development team, but I am very sure the answer is no, and the lead time to get a new API is probably a few weeks assuming they even agree to do it.
I have worked with developers who don't even understand the basic concept of reading log files, its depressing. I mean they wrote the damn thing can't you at least look at the logs ? They often just throw up their hands and say it doesn't work I don't know what to do. I have a new saying for many developers, saying may not be the right word but it goes something like "XX is broken, I don't know why, I don't want to understand why I just want someone else to fix it for me". Often times it is in the code. I can understand non technical people behaving this way but not "developers". Certainly not all developers are like this. BUT I see it as a disturbing trend that is only increasing as the layer of abstractions increase between the underlying hardware and the software they are writing.
How many developers even know how to look at a core dump ? (e.g. php/apache core dump). I don't think I've even worked with more than 2 that can do that in the past 8 years. They know php, but go one inch outside their comfort zone and it's like deer in headlights.
Another favorite is I give a developer a specific SQL query that is causing problems and ask them if they can fix it -- they have no idea where that query came from (other than their code) because it's so abstracted, all they know is they called some object and the magic sauce underneath generated the SQL.
This kind of thing is really what gave rise to things like docker. Instead of fixing broken systems like node or ruby(another depressing thing they haven't fixed ruby on some core things since the first time I had to operate it 9 years ago, now I understand it is by design and they won't fix it, anymore than Linus will fix constantly breaking Linux driver ABI). So instead of fixing the actual problem they come up with something like docker, to hide the monstrosity of dependencies and crap in a container to make it more deployable and manageable. Oh my god the first time I tried to build node I think it took me 3 days and it ended up being a version that was too old for the developer. (yes I try to build things properly I won't download some random shell script and pipe it to bash as root to do everything magic). Worst inter dependency mess I have ever seen, even put ruby to shame. One recent node upgrade I recall we had to upgrade GCC, and other core libraries which were not compatible with our OS standard, just to compile the damn thing. I mean I haven't had to go out of my way to upgrade gcc for something I want to say in 15 YEARS (I remember using 'egcs' way back when).
Then another development team comes around and says they need something else, some other version, but that version breaks the code from the first development team..it goes on and on what a mess.
The worst part about it is more people are using it, and more NEW people are using it not knowing how unstable it really is because that's all they know. I see developers constantly having trouble with mismatched node shit.
Getting developers to know low level protocols, shit I'd be happy if they just knew their own damn application stack.