3 ms·
> Most software engineers do know how their code works at the level that they need into order to make good software. This kind of thinking is why we can't have
by loxias 5y ago
> Most software engineers do know how their code works at the level that they need into order to make good software.
This kind of thinking is why we can't have nice things!
If this were true we would have good software. As the world (currently) exists, we have a vast ocean of horrible software with a small number of islands of quality.
I'd argue "most" software engineers don't know enough. The fact that checking my bank balance online involves transferring 32 million bytes of information(!!) over nearly a third of a minute, or that bluetooth headphones have so much latency they're unusable for live music, despite radio waves traveling at the speed of light, or... any app written in electron, ever (or pick any other example of stuff sucking in modern life, it's ubiquitous)... these are all a result of engineers knowing way, way too little about how their stuff works.
Most people, including engineers, are idiots, slapping together components and using abstractions they have NO understanding of, stopping at an increasingly low bar of acceptability. (I make no claim to be special or otherwise a "non-idiot".)
correction: 5 million bytes of information, not 32. but still at least 4.9 million bytes too many.
- Karrot_Kream 5y ago> I'd argue "most" software engineers don't know enough. The fact that checking my bank balance online involves transferring 32 million bytes of information(!!) over nearly a third of a minute... ... these are all a result of engineers knowing way, way too little about how their stuff works. The problem is that everyone has a different definition of "too much". Despite programming as a kid and now working on edge networking software at $TRENDY_CORP, I studied signal processing, distributed systems, and higher level math. I used to spend a lot of time with hardware. I knew layout engineers who used to scoff at hardware engineers that didn't know that their logic was going over the timing budget, hardware engineers who would scoff that folks writing firmware/embedded code didn't understand that their code didn't use the instruction pipeline correctly. Kernel developers who scoffed that OS developers didn't understand how kernel IPC works. And the list goes on. The state we're in is only here because this is what the market is willing to tolerate. If you're designing the AV system for heads of state or the CEO of a large tech company, or maybe even a big esports competition, then you'll probably spend all your time optimizing for latency and jitter. If you're processing large amount of non real time data, you'll probably end up optimizing for throughput. Industrial control software usually has access to low-latency low-bandwidth links and need to work unattended for months at a time. Hardware that goes to space must be redundant and radiation hardened. Software has eaten the world, so if you're willing to take a pay cut and maybe get drug tested by your government, you'll have no trouble finding jobs with a different set of customer requirements. The fact is, the modern internet is optimized for throughput and modern web apps are optimized for average user experience and ad revenue. Engineers working on net technologies are trying to push more through the pipe, latency be damned, because few people care about anything else. Most web developers are just trying to make their software usable enough to enable use of their product and ad revenue because very few people care enough to offer a market to these conpanies. At web startups you're struggling to make _anything_ and find anyone who's willing to pay you, let alone optimizing for some metric like latency. If you don't like this work, there's lots of fields that pay less but have different problems. You could work on MPLS VoIP networking to enable low-latency voice chat. You could work on high-throughput data transfers for research institutions to share sensor/telescope data. Avionics software has its own interesting challenges. Personally, I'm knowledgeable and have a nerdy fixation on low latency, so I have a network of low latency services for my friends and family (along with a companion high latency high throughput set of services for bulk things like 4K video downloads). Some of my friends love using it, others like my parents barely understand the difference (except maybe that I'm not breaking up on voice chat as often). I recognize that this is my hobby and my passion but most people just don't care. I'm okay with that. I don't care about a lot of other things in life too that I'm sure somebody else cares about.