this post was submitted on 12 Oct 2024
71 points (94.9% liked)

Programming

17189 readers
483 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

Hi,

My question certainly stems from the imposter syndrome that I am living right now for no good reason, but when looking to resolve some issues for embedded C problems, I come across a lot of post from people that have a deep understanding of the language and how a mcu works at machine code level.

When I read these posts, I do understand what the author is saying, but it really makes me feel like I should know more about what's happening under the hood.

So my question is this : how do you rate yourself in your most used language? Do you understand the subtilities and the nuance of your language?

I know this doesn't necessarily makes me a bad firmware dev, but damn does it makes me feel like it when I read these posts.

I get that this is a subjective question without any good responses, but I'd be interested in hearing about different experiences in the hope of reducing my imposter syndrome.

Thanks

(page 2) 32 comments
sorted by: hot top controversial new old
[–] mesamunefire@lemmy.world 5 points 3 days ago* (last edited 3 days ago) (1 children)

A solid 5.

I'm happy with it too. They still pay me so I must be doing something right. Almost two decades now.

[–] Croquette@sh.itjust.works 4 points 3 days ago

5 years professionally and I can find jobs, so yeah I must do something decent. But that imposter syndrome is strong these las weeks

[–] Nougat@fedia.io 5 points 3 days ago (1 children)

I got pretty good with BASIC back in 1983.

[–] MajorHavoc@programming.dev 1 points 3 days ago* (last edited 3 days ago)

Nice!

I'm still struggling to get good at BASIC, myself.

BASIC was my first language, and I still don't feel like I've mastered it, so I still study it on some weekends.

I take so many modern tools for granted, now. It makes my learning progress in BASIC feel slow.

But I'm getting better at it.

[–] NigelFrobisher@aussie.zone 5 points 3 days ago (2 children)

The more I learn about my language the less I think it matters. Maybe in embedded C you can’t just leave everything to the compiler though.

[–] Croquette@sh.itjust.works 1 points 3 days ago

It's a strong typed language with a minimal set of guard rails, so there is certainly some considerations to take into account, but the compiler are pretty good and give more leeway to the dev.

[–] SpaceNoodle@lemmy.world 1 points 3 days ago

Not every thing, but still most things by far.

[–] magic_lobster_party@fedia.io 3 points 3 days ago (1 children)

I’m mostly working in Java now. I’m proficient to the degree that I can solve most things without looking for reference online. I think that matters most to me.

[–] Croquette@sh.itjust.works 1 points 3 days ago

It's funny because I often have to look for the prototype of a function because I often forget all the arguments a standard C function uses, but otherwise, i feel like I am proficient enough to know where to look for, which in my case is normal because I won't memorize all the details of how each peripheral of the mcu works.

[–] farcaller@fstab.sh 2 points 3 days ago (1 children)

I don’t think your question relates to the language as much as to the platform. The language of choice is somewhat irrelevant and what you care about is what actually happens under the hood.

For the likes of java and go you want to have some understanding of what runtime does for the memory allocations and how their GCs work. For python you sometimes end up in the spots where you need to understand what limitations the GIL imposes (even more important now that they are trying to get rid of it). When you run C (or C++ or Rust) on the embedded hardware it really helps to understand what exactly bit flipping does in specific registers and what DMA means for how you write your code.

You don’t really have to know it all. You can absolutely write code without caring about anything of that and I know plenty software engineers that do. Some people write amazing functional things in java without ever questioning what it does to the machines and what resources you need to run it.

If you start questioning it, that will only expand your understanding. It's not a lateral move from e.g. C to Rust where you need to learn a lot to write your code in a memory-safe way, it's a movement deeper into the stack and what you learn there will be applicable to any language you use for this stack.

Answering your question: I always feel bad about not understanding some low-level concept. I have stacks of MCU reference docs lying around, printed, highlighted; I have archives with sample code, and hand-annotated CMSIS reversing notes. Embedded world is hard because you can’t just know C and be done with it. You have to know the hardware, too.

Here's my advice for you. Make notes of things that you learn from people smarter than you. Create a web of those notes and see where your gaps are. Then, work on learning something in those gaps in particular and see if you can make a blog post or something of your own. When you share what you learn you become one of those people with deep understanding that others look up to. There's always someone struggling with something that you either know or know how to figure it out.

[–] Croquette@sh.itjust.works 2 points 3 days ago

What I like about embedded is that it's between software and hardware, where you have to know both to a certain extent. It kinda feels like being a mad scientist bringing a monster to life. Seeing that my code makes physical actions (lighting a LED or controlling a motor) never seems to get old, even when trivial.

I am confronted everyday about the things I don't know because I work in a startup and I am the only one that does what I do. Any issue that I have tells me what I need to learn to fix the issue.

You are right that for a lot of people, what I do seems like magic and we often forget the extent of our knowledge because it has become innate.

Thanks for the insight, I appreciate it.

[–] istoff@lemmy.world 2 points 3 days ago

I'd say average.

In every project and in every team, I end up being strong because I fix the hard stuff. I debug better and I deliver mostly bug free code. My code is more efficient and performant than my coworkers most of the time.

That's gotta count for something.

Imposter syndrome is good for me. Keeps me learning.

[–] SuperFola@programming.dev 1 points 3 days ago (1 children)

I’ve been using Scala professionally for 3 years. I don’t know what I’m doing most of the time because we have a ton of implicites and monads and extension methods. I just know the general idea and can get where I want by reading types.

I’ve been creating a language for fun for nearly 6 years. I often don’t know what’s going on under the hood because it’s somewhat complex. I think this is normal for every language. You don’t have to know everything to be able to use it. You don’t have to write blog posts once a week about the language subtleties you found.

[–] Croquette@sh.itjust.works 1 points 3 days ago

The blogposts are the example I had because this is usually where I find my solutions.

I do understand that I don't need an in depth knowledge of everything about my language, but I sometime feel like I should know more. But again, this is the imposter syndrome talking.

I am thinking about blogging once my kids are older and I have more time because I am grateful when someone else does and I want to contribute as well.

[–] onlinepersona@programming.dev -1 points 3 days ago* (last edited 3 days ago)

Even the creators of languages don't know their own languages 100%. I wouldn't even call them the limit. So, I'm good enough in my main language that a lot of code doesn't surprise me. And I try very hard to write code that others can understand as well when in a team.

Anti Commercial-AI license

load more comments
view more: ‹ prev next ›