TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Senior software engineers, what are CS areas you are bad at?

2 pointsby dondraper36almost 2 years ago
Recently, I have been thinking a lot about the gaps in basic CS areas like networking, computer architecture, operating systems.<p>Regardless of how very often high level programming languages abstract away such fundamental knowledge, it still feels wrong not to know how web servers work under the hood.<p>My approach is similar to what Julia Evans does (except that I don&#x27;t write about it in such a talented way as she does). Whenever there is something I don&#x27;t understand, it becomes a small investigation.<p>What are some areas that you don&#x27;t understand but would like to know better?

2 comments

RattlesnakeJakealmost 2 years ago
Time management. I don&#x27;t know how anyone can build a system for juggling:<p>- Continual questions&#x2F;mentoring&#x2F;working sessions with Junior Devs<p>- Random &quot;{{github_ticket_num}} ASAP&quot; messages from the boss<p>- Troubleshooting requests from other teams who never catch that the problem is always on their end<p>- Four status update meetings a day<p>- My own deliverables
coreyp_1almost 2 years ago
[Edited for formatting]<p>When I find gaps, I have a tendency to build projects.<p>The lower the level of the project, the more low-level parts I find myself needing to explore.<p>A recent rabbit hole:<p><pre><code> - I designed a template&#x2F;scripting language. - I wanted it to be a library (dynamically-linked, .so) for use by other programs, so I had to figure out how to do that. That took me down a rabbit hole of the problems of compiling against libraries not globally installed, the compiled program, and their respective paths relative to the compilation directory. In short, using Makefiles and compile targets into any directory other than the current directory causes problems. - What about making the library globally-installable? That&#x27;s the rabbit hole of how versions work in libraries and the symlinks required, as well as how Ubuntu locates libraries. - How to responsibly install and uninstall libraries. - How to make multiple libraries coexist from the same project. - How to make the library compile flags integrate nicely (pkg-config) </code></pre> My current rabbit hole: writing a HTTP&#x2F;1.1&#x2F;2&#x2F;3 client&#x2F;server library, which is necessitating a deep-dive into TLS communication and reading a bunch of RFCs.<p>I&#x27;m thinking that most low-level or implementation details would be a candidate for a deep dive. In CS, we have a tendency to focus on the abstractions and leave the implementation details to someone else. For example, most people understand zip files, but markedly fewer would be able to write a compression&#x2F;decompression algorithm.<p>Other examples I can think of:<p><pre><code> - File formats: jpg, png, gif, pdf, etc... - Large project best practices (exceptions, memory management, source code file layout). Context: most students have only seen 1- or 2-file projects in a single directory, and have never worked on something that other people also need to work on. - Native application development (not using QT, for example) - Window&#x2F;desktop managers - Device drivers - Date&#x2F;time storage and representation (not just timezones and DST, but time massively in the past or future. Dates vs timestamps, etc.) </code></pre> Probably not the direction that you are thinking, but I love this low-level stuff!