Hacker News new | ask | show | jobs
by zerr 87 days ago
The grass is always greener on the other side - many low-level programmers feel like an imposter when it comes to high-level systems such as CRUD apps.
4 comments

Can confirm, my buddy who is someone I respect immensely, is an embedded programmer.

He will talk about OS events, or any low level concept and it makes me feel like I don’t know anything, but he acts like I’m a genius if I talk about JavaScript Runtimes, browser engines, anything frontend.

It’s cool he teaches me new things, I teach him some

Some people are exceptional at solving difficult but hard to explain problems while other are great solving direct business problems. No need to feel ashamed for both it’s just different work
I think your friend is just being kind.

Most people know that there is a big difference between experience in something pretty easy vs mastery of something very difficult.

A rocket scientist acknowledges a concrete guy knows way more than he does about concrete, but also knows that doesn't make him a genius because it's easy enough to learn just being around it. Plus, the rocket scientist also knows that since he knows so little about concrete, he wouldn't even be able to judge if the guy is really a concrete genius or just saying things a real pro would label wrong.

Your example isn't that crazy, but still, you should realize your friend is just being nice.

I work on OS/embedded and my wife in server backend. I definitely feel like a simpleton when trying to understand all of the high level stuff she works on. It doesn't invalidate my own expertise. There is nothing wrong with acknowledging someone has skills that you don't have and likely would take a long time to pick up.
Yeah exactly. High-level people think the low-level stuff is magic, and us from the other side think the high-level stuff is magic (how can you handle all that complexity?...)
> how can you handle all that complexity?...

You don’t. Someone else smarter than you handled it already and you just need to integrate their solution.

"Someone else smarter than you manufactured microchips and you just need to integrate their solutions."
Yup. AbstractSingletonProxyFactoryBean and SimpleBeanFactoryAwareAspectInstanceFactory agree as well :)
I felt this way moving from embedded into backend for the first time and having no idea where to start. Was incredibly daunting, but both domains become trivial over time.
They don't. The "simplicity" of using a "high-level" framework for someone who bit-shifts for a living is almost comical.
I met someone who bit shifts for life, uses opengl shaders for compute, but has no sql experience and is afraid of opening a tcp socket.
Trivial under plan9/9front. Under Win32/POSIX, run way.

On bit shifts, pick any Forth programmer and shaders will be almost like a toy for them. They are used to implement double numbers (and maybe floats) themselves by hand by just reusing the only integer numbers they have and writting custom commands to output these pairs of integer as double numbers. They can probably implement multithreading processing by hand in Forth and also know the IEEE standards for floats better than C programmers over 20 years.

Sure mate. And the guy who can do binary sums in his head would think of assembly as mere childsplay.

Jog on.

It was an example. Pedantry is alive and well on hn. :)
Thruth to be told, Dunning–Kruger effect is common among those who "shift bits" :)
I’m completely convinced I’m a dogshit programmer. You’re probably right.
bit shifting isn't impressive lol
Really?
I know literal kernel developers who can handle drivers and race conditions any day of the week who can't wrap their mind around Outlook, let alone GUI updates.
Myself. Forth it's easy, 9front C it's manageable but POSIX it's hell and managing both Unix descendants are a piece of cake.

GUI interfaces for the enterprise came from Dante's hell themselves. I hate them, they are like the Madhouse from that Asterix movie making satire of the European bureucracy of the day. The often are oddly designed and they are not documented at all, you must guess the meaning by chance of with a senior tutoring you.

The same with anything corporate from Microsoft with AD roles/group policies and the like. Or anything coming from IBM.

lol you guys are being too nice. Building CRUD apps is just implementing business logic by gluing APIs together, there is nothing to understand except the business domain, which is only done through exposure, because business logic is random. And then the APIs which are all essentially a kludge because of the shifting business logic.

Understanding low level code puts you on entirely different level because you can reason about a problem using logic and how systems operate.

No disrespect to any crud devs here but from my personal experience they just know a particular implementation of their domain and rarely even consider how the code base even operates as a whole

> lol you guys are being too nice. Building CRUD apps is just implementing business logic by gluing APIs together, there is nothing to understand except the business domain, which is only done through exposure, because business logic is random.

It isn't "random", a as business process develop over time to various business/customer/regulatory needs. The business process evolves over time typically.

When you take a business process, you are often formalising it. The fact that you have no appreciation of this, tells me you don't really understand what you are talking about.

> Understanding low level code puts you on entirely different level because you can reason about a problem using logic and how systems operate.

You have to do this in high level languages as well. It isn't something that only low level devs do. In fact to be able to write any good code you need to understand the problem domain.

> No disrespect to any crud devs here but from my personal experience they just know a particular implementation of their domain and rarely even consider how the code base even operates as a whole

You are literally disrespecting them by saying this. It is also false, what you are describing is developers having deal with incomplete/poor specifications and poor documentation. BTW this is rampant through the industry. I wanted to do some stuff yesterday with Docker and Go, the documentation is non-existant.

Kernel developers know that, eventually, they'll figure out how the system works and is supposed to work.

CRUD developers know that they never, ever will, because business logic is insane.