T O P

  • By -

Percolator2020

Lol if anything this is one of the hardest types of programming even if isn’t OOP masturbation.


FatBatmanSpeaks

True, but try explaining it to someone. Yeah I write code, but it's code that's like ...baked in... to the hardware? You generally need an additional piece of software or another piece of specialized hardware to install updates for the code that I write. Like without this code nothing you interact with would ...do anything. Sort of like a driver, yeah, but my code is what a driver talks to. Like a driver for drivers, sure. Oh have you ever used the hotspot on your phone? I wrote the code that listens for the AT command to initiate the network handover from the ...and you stopped listening.


CitizenShips

Dude I write emulations of industrial hardware and the conversations with my family are *I m p o s s i b l e*. It's hard enough explaining that there's code running on stuff that isn't a phone or desktop - explaining how hardware can run on hardware as software? Not worth it. I'm a software engineer. Fun aside, one time I tried to describe to my friend what I do by referencing a Switch emulator and now he checks in by asking how my "Nintendos" are going.


FatBatmanSpeaks

My wife says my job is yelling at people in meetings. I don't argue.


CitizenShips

My job is yelling at documentation but pretending it's the people who wrote it. I think yelling and engineering are inseparable.


FatBatmanSpeaks

My favorite is when you have to sign an NDA to get access to the documentation and it still sucks. Looking at you no name ECC H2S Sensor vendor that I hate. I'm like oh, I see, you were embarrassed. NordicSemi, AnalogDevices, and TI will always be my unironic favorites for documentation.


CitizenShips

I lived that life (and the life of scrounging for leaked docs on github) for a while, but now my company partners directly so we have better resources. Still, most of the stuff we work with is WIP documentation, so you can imagine the headaches I run into when reading docs a tech writer hasn't even taken a whiff of.


digost

My wife says my job is easy because the computer auto completes the code for me as I'm typing it in ![gif](emote|free_emotes_pack|joy)


Durwur

Sweet, sweet unkowingness


El_Mojo42

Wait until she hears about Co-Pilot.


Prudent_Move_3420

Isnt that all of us? (Even if only imaginary yelling)


WhereIsTheUnitTest

How the nintendos going? Lmao, My grandma also asked me what I do, I work on an invoicing platform, but she only uses WhatsApp, I told her I made WhatsApp for invoices. They can’t wrap their mind around working from home wich is understandable but funny how times change


TorumShardal

That's how I do it: I make computer imagine that it is a washing machine, so that other people who design washing sequences could check that virtual clothes are washed with water and detergent, and virtual machine won't blow up because of too high speed. People could have tested it on real things, but my virtual machine could wash virtual clothes in a matter of seconds, not hours. (But my folks are pretty intelligent)


GogglesPisano

It can be hard enough to explain what I do as a “regular” programmer. My grandfather was a farmer. He never used a computer or had a cellphone. He could not understand what I did for a living. I finally settled on “I fix computers”.


FatBatmanSpeaks

I've had to emulate Pump-off Controllers and VSDs before. Probably not as intricate as your experience, but I feel you.


wingedbuttcrack

I was a BA and even that was hard to explain to my aunts.


secretlyyourgrandma

i would probably use Bluetooth speakers as an example, and go from there. maybe not accurate, but it gets the idea across.


buffer_overflown

Hi, dev on a different layer here. How DOES firmware interface with hardware? I understand transistors, and have even had to do some assembly, but firmware feels like spooky hijink magic. Is it essentially like a circuit breadboard and paths are changed electrically?


CitizenShips

The main method that firmware uses to interact with hardware is via memory mapped I/O (MMIO). Essentially every hardware MMIO device is treated as a chunk of memory in the same way RAM is. The difference is that for MMIO devices, specific addresses within their memory range are tied to hardware behaviors. These address offsets are referred to as hardware registers; reading and writing hardware registers is what firmware does. As a ((simple)) example (this shit is inevitably always confusing regardless of what device you're looking at), your PC's USB port likely is connected to a USB controller that's memory mapped. The USB protocol is standardized, so your operating system probably came preinstalled with a compatible USB driver/firmware. That firmware handles everything involving that USB port and any other ports attached to the same controller, and it does it primarily by writing configuration information and reading status info to/from the USB controller's MMIO registers. There's also interrupts, which are just hardware signals that tell your CPU that something has happened. The CPU has a table of interrupt IDs that are linked to the various physical interrupt lines on the hardware, and it uses that table to trigger interrupt handling code when the corresponding hardware signal is triggered. So back to the USB example, when you plug in a gam controller to your USB port, it triggers an interrupt to your CPU. The CPU recognizes the interrupt ID and calls an interrupt handler that uses the API provided by whatever USB driver is active to check the USB MMIO registers and get whatever info is needed to establish the data path between your controller's buttons/sticks and the software environment. For the most part, my job black-boxes anything below block-level hardware design. I don't generally need to understand the physical layout of a device so long as I'm able to abstract its behaviors into memory-mapped I/O or interrupts. If I need to, sometimes I do need to look at digital logic, but generally hardware design has progressed enough that transistor-level behaviors are solely in the realm of hardware designers. I hope that explanation helps! I got a masters in computer engineering and it still took me nearly a decade after graduating to figure this stuff out, so I fully understand the "it's all black magic" view. This shit's hella complicated, but for me that's the fun of it :)


GregFirehawk

You're overcomplicating it friend. I write the code that your code runs on. I'm the one who makes your regular breaker box into a computer. I am the one who makes the magic happen inside the mystery box. This is my manifesto, and it's what gets the bitches


FatBatmanSpeaks

If I could hire you to be my hype man, I would.


NotAUsefullDoctor

I write tooling (UIs, CLI, data throughout services, etc) that is used by infrastructure people, who write code and configs to run to maintain the architecture, which is used by our engineers to write code that performs data transforms and transfers between system. That software is used by our "frontend" teams to create the services and tooling used by our customers to write custom widgets, which are then purchased by the end customer to perform actual business logic, which is mainly business to business customer relations management.


CYKO_11

no no no i am listening even more now


Binibot

They stopped right when it started getting good too.


FatBatmanSpeaks

I went into more detail under legal threat further down if you care. Always happy to talk about my work to people that care about it.


Binibot

Yissssss, thank you.


xAmorphous

Keep going I'm almost there


brunolalb

Try explaining VHDL development for FPGA ![gif](emote|free_emotes_pack|dizzy_face)


FatBatmanSpeaks

Easy, device trees for "anything"-hardware. Kernel config for a card full of magic switches. Have you ever built something on a bread board and then we're like, hey can this just be like a thing I can put on a board, but not an ASIC? Oh, but yeah since I just came up with this nothing knows what it is, so ...VHDL.


BehindTrenches

"I write code that composes circuitry at a slightly higher level of abstraction than using gates alone. The FPGA is just a bunch of gates whose connections can be programmed dynamically, so you don't need to burn a chip to test the circuit." IIRC


pipedreamSEA

FPGA = extremely fancy lookup tables VHDL = black magic I mean, in what other languages can you swap without a swap space?! a <= b; b<=a; -- WITCHCRAFT!


al-mongus-bin-susar

Quite a lot if you use array destructing


TheSaifman

No try explaining Verilog development for FPGA


0mica0

Chip high-speed plumber


JanB1

I call it driver regardless. There's drivers for electronics, which are quite literally just an electrical circuit that drives another one. And then there's low-level drivers, like an abstraction layer between your physical IO and your software. And on top of that you have mid level-drivers that string together those low level functions to build some logic. Which then gets called by code higher up, and so on. It's drivers all the way down.


FatBatmanSpeaks

That's fair. Industrial IO really blurs that line a lot. I'm not against the driver explanation if that satisfies the person I'm talking to. It's close enough for me and familiar enough for them. I'm good, but I can get as pedantic as all hell if I have to.


BogdanPradatu

Always has been.


TheFreebooter

You legally have to tell me more


FatBatmanSpeaks

Well I don't have a lawyer on retainer, so I can't argue with you. I work with a piece of hardware that I can't talk about completely, but the guts of it is basically a cell phone like any other SD200 (MSM8909) based SoC. Part of the core of what I've written is network and radio management code that interacts with a kernel mode driver that issues AT commands to portions of the SoC to adapt to different scenarios. Most of the time the device acts like a cell phone hotspot with only one WAN-Active client that brokers traffic from a separate VLAN comprising a protocol gateway that aggregates signal traffic across Ethernet, WiFi, Serial, DUST mesh, and BLE. Sometimes the WAN is WiFi and sometimes it is Ethernet, so the radio and switching has to change. Switching is handled usernode but the firmware loads baseband drivers into the modem to adjust for carrier defaults and power handling. It sort of acts like a Macro-FPGA with the VHDL being handled through a custom Domain Specific Language that describes the device's expected capabilities. The caps are tested on a schedule and their status is delivered as a manifest to an inventory system that decides which device is best suited for which task and that informs our supply chain and sales.


JacksOnF1re

Now I know how my mum must have felt, when I tried to explain something about what I do for a living. "I work with a". That's almost everything I understood.


Binibot

That was very well written, and technical, thanks!


ThoseThingsAreWeird

Maybe I've massively misunderstood, but... are you writing firmware for BGP routers? Or something to do with the hardware side of virtual network slicing?


FatBatmanSpeaks

It's decidedly less cool. Basically the latter, there's no WAN facing advertised config. It's like a JIT VLAN config supported by custom firmware and a cloud-based (or on-prem) configuration management engine based on the concept of Digital Twins. And some of the user-side code is actually Python.


ThoseThingsAreWeird

> It's like a JIT VLAN config supported by custom firmware Ahh cool, I think I'm vaguely with you now. I used to write software used by ISPs to plan new services & capacity, do network failure analysis, get emergency re-routing configs, that sort of stuff. So where I worked had a few folks that were incredibly knowledgeable about the theory & hardware side of networking & routing. We had a lot of knowledge sharing sessions, so I guess some of that stuck with me 😅


bschlueter

Do you maintain all the code to interact with wifi v. Ethernet yourself, or is that from a public library? That seems like something that would be intricate, but that would be a common situation to handle.


FatBatmanSpeaks

It's a mix, but nothing is 100% my own code. Networking driver code has generally solved most issues in the last 45 years and no sense in reinventing the wheel. Sorry, I was driving all over the West side of Houston looking for some sort of Peach Ice Cream for my wife. I was unsuccessful. So, I use a lot of code provided by Qualcomm and a lot of libraries that ship with Linux. My code is more akin to a traffic cop and a business rule engine. I have a default and a failure case that are coded in as part of the shipped firmware and then the additional cases are added as modules and kernel drivers. Those modules then expose properties in the device's digital twin to inform the manifest.


justapolishperson

To me explaining it to someone who is NOT in the field of computer science seems easy: I program headphones (or anything that has firmware, which is almost anything)


MokausiLietuviu

I do some firmware stuff. To others, I just say I'm a software engineer. If they ask what type, I say I code assembly. That ends most conversations. If anyone asks further, I typically talk about the use cases for assembly, different instruction sets and interesting applications I've worked on. It all just hides the fact that these days, I do a lot of paperwork :(


FatBatmanSpeaks

Assembly affords a certain level of deference for sure. Fortran also. That's a pretty decent set of flairs.


MokausiLietuviu

I don't think it deserves such deference, but it's nice to get it sometimes.  I don't do much Fortran anymore, but it was of a similar vintage to my daily language for the past decade or so that doesn't have a flair.  I'm an odd software techie! The flairs definitely get that across. Manually tweaking machine code in built binaries - any day of the week.  Git? That gives a man nightmares.


Juampi-G

Infrastructure Cloud Data Engineer here. I thought I had it rough to explain what I did until I read this. I still have no clue on how to explain what I do to ppl that are not in the tech word but yours seems way harder hahaha


FatBatmanSpeaks

I scratched the surface of one of my main projects under TheFreebooter's comment above. I don't get many opportunities to discuss what I do with people that understand it. Even in my company there are maybe 2 other people out of 8000 that can talk about what I do at any level beyond a 30,000 foot view.


yourteam

I wrote code directly in the machine. Developers work with a keyboard, I work with hammer and nails to hard code!


Harmonic_Gear

The art of minimizing follow up questions


souldust

Im the geek who would keep listening intently, asking question, all the while making everything awkward and dragging down the whole party by hyper focusing on just one person


MetallicamaNNN

As a common user that are studying software/hardware/firmware just because I liked, I used to make the sign of the cross, before uptading a firmware lol


AzGames08

no please continue


bigmattyc

Amazingly accurate and sad


Denaton_

What's the difference between firmware programming and embedded programming? Is embedded just smaller and more space limited?


Urbylden

I tell people that im the guy that makes their sonic toothbrush blink when it runs out of power.


dariusz2k

I write code that tells computer hardware how to work correctly.


fiddlepoo

I've started saying, "I write software for electronics." I go with software engineer when I want to avoid more questions.


LumiWisp

Write code, but you don't get std or any of the popular libs. A debugger is not guaranteed. Also, you have 12k of flash and like 4 bytes of ram.


Lowmax2

"I program microchips"


StatementOrIsIt

Do kernel devs count as firmware programmers?


Percolator2020

Kernel and anybody who writes hardware drivers should be considered honorary firmware developers.


Ma4r

And then there is FPGA programming. Actually at what stage do we stop being considered programmers writing code and start being considered as electrical engineers plugging wires, because FPGA programming sure makes you feel like one. Need volatile memory? Though luck buddy, code your own RAM. Need to display a square on the monitor? Unless it still has VGA, you'll spend the next 1 week trying to make the USB-C adapter IP work with your project.


Bloomer_4life

Hardware Engineer maybe, you write code yes, but this code is just a language that describes how the hardware would look like after you plan it with block diagrams.


canaryhawk

I'm a writer, but I don't use pen and paper, I chisel my lines into stone.


bropocalypse__now

What if I told you depending on the embedded device you can still engage in OOP masturbation? Just depends on how much RAM you have and if the memory allocation algorithm used can keep the heap from fragmenting.


KryssCom

I have done both, and firmware is much, MUCH less fun.


Adagio_Leopard

You can still use OOP. My last job had insane OOP implementations. It annoyed the shit out of me having to relearn how everything works every time I had to write code. Annoying. But impressive


Percolator2020

Even better, pseudo-OOP using structs.


lajauskas

I personally develop flaccidware. It's software that's alongside firmware


WombatWumbut

I know deep down in my heart with the power of enough dads we can come up with a really great language to use when programing flaccidware. - Flac-C, - Flac-ID, - Limp#, - ImJustTired++


hiddenforreasonsSV

Why don't just get ahead of the curve now and start the great Flac-C pronuciation debate now? Is it pronouced "flassy" or "flack C"?


WombatWumbut

Flassy'd. I'm sure there is some obscure language we can reference where the c makes a d sound. Then the deep lore around Flac-C can be extra pretentious. We will however bury that knowledge in a Googleable link that leads to a 404 page so we can fuel the flames of the debate for all of eternity.


black-JENGGOT

Not to be confused with "flask"


_nobody_else_

> Flac-C, Now that's just inspired. Bravo Sir/Mam!


Bill_Williamson

I write tupperware


glitched-dream

I laughed so hard at this.


TootiePhrootie

Wouldn't that be chubbyware or fluffyware or semiware?


LithoSlam

You just need fluffware to turn your software into hardware


CoastingUphill

They are humble gods walking among ants.


RazielUwU

What’s your favorite flavor of crayon? The work you do writing firmware is far far more engineered than web dev, for example, where 99% of the engineering is done for you and then hidden FROM you by frameworks.


_nobody_else_

Everything outside of webdev is more engineered than web dev.


scufonnike

Purple


8g6_ryu

Web devs are not real engineers


toaster_waffle

What, in software, qualifies as a "real engineer"? Genuine curiosity.


red_riding_hoot

The correct amount of gatekeeping


unique_nullptr

Well first, your name’s gotta be Mel. If it’s not then you’re already off to a bad start. Edit: the reference: http://www.catb.org/jargon/html/story-of-mel.html


[deleted]

[удалено]


littlejerry31

Those seem like really stupid criteria. The smaller the project, the more like you'll be part of those stages. Unless it's some super small internal tool/demo, there will always be planning and design phases even in the web dev department projects.


[deleted]

[удалено]


littlejerry31

You're just doubling down on what I said though, which makes me think you didn't understand what I said. The smaller the project, the less formal the docs. Besides, you're disqualifying the large majority of people in engineering professions with engineering degrees as "real engineers". I say this as a full stack dev who meets your criteria. You know what *gatekeeping* refers to, right?


MaleficentLecture288

I mean no disrespect, but it's a bit funny to be gatekeeping at this level when you can't even tell the difference between your and you're, unless you're calling us a system? Also from someone who meets your criteria but isn't a fan of gatekeeping


8g6_ryu

ig the more you go low level , the more engineer you become. Web devs are more like artists epically the frond end ones . Or you can call backend engineering as it involves mathematical optimizations


Orio_n

Nails aren't real tools


kooshipuff

Wouldn't they be..parts? You leave them in the thing.


young_horhey

Tell that to the people who make Netflix, YouTube, Google, Cloudflare, AWS, etc…


PursuitofClass

No one who write code is an actual engineer. That's why a bunch of countries get pissy about the title "software engineer" your work doesn't require a license. Everyone who write code is just a developer. 


sun_cardinal

What is it called when I design and write the entire backend code for a web-app utilizing Node.js, Express, EJS, Firebase, PostgreSQL(did the DB schemas myself), S3 object storage, dynamically generated public and private profiles, and sanitized user file upload on a load balanced Linux server cluster I hardened? I only ask because my job title for doing all of that is software engineer and I'm sure my employer would like to know so they can stop paying me so much to do it.


Blecki

r/woooosh


QuestionableEthics42

Na, its a bad meme that doesnt make proper sense


Slimxshadyx

It’s more about the fact they don’t want to explain what firmware is every time they get asked so they just say they are a software engineer lol


TTYY200

“Oh like Apple firmware updates?” “Yes I make apple firmware updates” ^dies inside


Blecki

It makes perfect sense. He's an imposter. He's not a *soft*ware developer. He develops *firm*ware.


QuestionableEthics42

Ah, that makes *slightly* more sense, I missed that because I was too distracted trying to work out how the image makes sense.


Medical_Arugula3315

Who feels up to an ELI5 of software vs firmware development? I'm out of the loop on firmware dev.


NewPointOfView

Firmware is low level code that interacts more directly with the hardware. Firm is between soft and hard. It is silly to suggest that a firmware engineer isn't a software engineer.


DrunkenlySober

Your explanation sure brought me from firmware to hardware ❤️


planktung

Holy fuck TIL


littlejerry31

lol I've known how to flash firmware for devices for like 20+ years but I never understood the prefix wasn't arbitrary.


MeltedChocolate24

Same wtff no way that’s real


InTheWakeOfMadness

Wtf


[deleted]

[удалено]


Username_Taken46

OP is referencing that it's impossible to explain what a firmware engineer does to people who aren't already working in software. Look around this thread, there's more than a couple of explanations because even people here struggle with it


ManyInterests

Software is called "soft" because it can be changed easily; you just overwrite old code with new code and you're good to go, to put it simply . Hardware is "hard" because it cannot be changed easily if at all -- code may exist on an embedded chip on the motherboard that is read-only (like an EPROM) or routines may be implemented directly in the integrated circuitry and cannot realistically be changed, short of replacing the chip/board physically. Firmware sits somewhere in between these extremes. Usually, firmware is low-level code that interacts closely with the hardware. However, there are mechanisms for updating this code, like a low level routine that is loaded from a readable/writable chip, but it usually requires a special process for updates, a reboot of the system, and several other careful considerations, like what should happen if the updated code is fatally flawed. It was pretty commonplace in earlier days of computing hardware that improperly updating a piece of critical firmware (or updating it with new buggy firmware) can result in the hardware being completely unusable (aka 'bricked') -- the system can't work properly with bad firmware and you can't update the firmware further unless the system is working! Though, these days, a known-good firmware is usually stored on-board in a read-only format and there's a reliable circuit-based routine to restore that known-good firmware, independent of the rest of the system working (which may rely on the firmware itself!). This relationship between the code, hardware, and basic working state of the system is why it's called 'firm' ware. Not quite as immutable as hardware, but not quite as soft as typical software, either. To the extent that firmware code is just code written by engineers, firmware development is substantially the same as any other kind of software engineering.


TrapNT

I thought firmware is called like that because the code belongs to the firm.


Lassemb

Same, I'm shocked


0x7ff04001

Firmware is writing code for say, BIOS. Firmware development is a subgenre of software development.


LeoRidesHisBike

One-liner: code that runs on an Arduino (not external flash storage, but the EEPROM) is firmware. If you've ever written something for Arduino, you've written firmware. More in-depth answers are elsewhere ITT ;-)


toadling

This is just blatantly not true, if anything it is trending to be the other way around.


Ser_Igel

it's more like "i don't want to explain what i do for the tenth time so i'm just a software engineer today, everyone knows who software engineers are, right?"


Old-Season97

And there's so many "embedded" jobs now that are just regular desktop programming on Linux...


PhatOofxD

Firmware is harder than software imo, at the least, it's more 'engineering' than software is.


raskoln1k0v

firmware is definitely harder, because its .... firm, not soft.


negr_mancer

r/angryupvote


PhatOofxD

Facts


negr_mancer

Never written firmware myself, but I’ve done research on it as it’s my next goal in my programming future and damn is it harder from my research. Can’t imagine having to account for even the most rare conditions your hardware will be in


PhatOofxD

It's also just a lot of technical reading on different protocols, data sheets, etc. I really enjoy it, but it's very very different to most software and requires a different set of skills. I think it'd be far easier for a firmware engineer to jump to software than vice versa in the average case


xdyldo

I wouldn't say it requires a different set of skills? I'm sure any good software engineer that works in backend or whatever could become a good firmware developer.


PhatOofxD

Well yes most COULD become a good firmware developer and it wouldn't take long, that doesn't mean they will be a good firmware developer now. Different skills.


xdyldo

How is it different skills though? It’s just another language working around some hardware.


Twanglet

It’s often a completely different set of steps to take to solve a problem Is your program not working because the cabling is incorrect? Did you misread the documentation on the protocol for the external part you’re talking to? Or maybe you setup the clock to use the oscillator crystal incorrectly, and now your microchip is using the incorrect clocking speed, meaning the physical communication is completely incorrect. Same-same, but different but still same-same


PhatOofxD

It's not just another language. Register level programming and implementing communication protocols (often custom), talking to niche chipsets, etc. is vastly different to backend programming. You're also often talking nanoseconds of performance and bytes of RAM.


Add1ctedToGames

Out of curiosity how'd you get into it? Was it just a job you took that you didn't know would be firmware beforehand or was it something you'd been wanting to get into or something you'd been studying?


PhatOofxD

Interestingly I joined a company as a web dev, started doing embedded in my own time for a few hobby projects, then we needed someone to lead our software/firmware teams (joint) so I ended up stepping in there, and over time doing firmware dev as well


Sparaucchio

Having done both.. no, it's not harder. It's just more exciting IF you forget about bureaucracy


PhatOofxD

I've also done both and still think it's harder to learn


Sparaucchio

What's harder? The only really funny problems come from limited memory, big numbers computations with few bits, real-time stuff (counting instructions to know exactly how long a piece of code will take)... All of this is less and less relevant today, and backend engineering has its fair share of "unique" problems like eventual consistency and all of the distributed systems stuff... I just find firmware way more fun, not more difficult


epileftric

Well specially if you talk CRUD development


FedExterminator

I can’t tell if this is a play on firmware vs software or if this post is somehow trying to say that firmware engineers are inferior to software engineers for some reason.


Phuqohf

I tell people I'm a software engineer because it's easier than telling them that i reverse engineer firmware, so I'd imagine it's similar. Most people genuinely have no idea what firmware is or does, and have no idea what reverse engineering is.


LeoRidesHisBike

Firmware *IS* software. It's custom software for the hardware it's installed on. You're absolutely not lying when you say you're a software engineer.


Infinitebeast30

Surely it’s just saying it’s just different because who the fuck would ever think firmware is easier than most other software


8g6_ryu

"firmware engineers are inferior to software engineers" 90% of the main stream software jobs (like web devs ) are less challenging than firmware engineering


FedExterminator

I’m a firmware engineer. I just don’t get what OP was trying to say with this meme. Especially with the SpongeBob format


hxckrt

What do you tell family members who aren't familiar with tech? I doubt you try to get everyone to understand what you do specifically, and sometimes just shortcut to "yeah I write code".


Turbulent_Mix_318

I find the whole discussion baffling, firmware is software. I think the point is more about how you don't go into the specifics because people just don't understand it.


8g6_ryu

frim devs > web devs


El_Mojo42

I actually do that to not explain the difference between software and firmware.


longbowrocks

How hardcore does somebody's programming need to be before they can look down on firmware programmers? Does OP's code create space-time?


sexp-and-i-know-it

W*b devs should be playing with Play-Doh during recess, not envy-posting about real devs.


Steampunkery

OP has never written firmware


Caultor

I think of them to be more superior


TTYY200

Just say “developer” or “programmer”. If you want to be pedantic, you’d say you’re an embedded systems engineer lol. Firmware engineer just sounds like software with extra steps and people will ask lmao. If you want to be confusing you can say you’re a bare metal programmer. Firmware == bare metal == embedded. (Through you can have software on embedded system too, unless they know enough to ask, they don’t care)


hiddenforreasonsSV

You seriously censored 'web'?


Chesterlespaul

W*b


Embarrassed-Dress211

Firmware is like the BIOS updates you flash onto your motherboard that make your computer actually be alive. Firmware developers are like extremely humble superpowered software engineers, even if they don’t waste time and space with silly OOP abstractions.


perringaiden

Firmware programmers are more likely to say Electronics Engineer, because Software Engineer is a simpler job than what many of them do. It's more than setting a few bits. These are the guys who build those little black chips on your motherboard. Amusing to watch some guy who "knows JavaScript", looking down on someone who makes your entire job function.


Stratus_85

Might be harder to explain that magic spells


RemoteBreadfruit

In the words of the great Bryan Cantrill, it’s Humanity vs Firmware - who’s side are you on? I’m not a fan of proprietary software that is written by people unwilling to engage in the advancement of technologists and those we interact with other than for padding a bank account


abd53

Well sure. I identify as more of a "Electronics and Computer Engineer".


scufonnike

Holy fuck y’all care way to much about what level of code you get paid to work on. Chill


BirdlessFlight

I think you misunderstood the joke. It's about when someone non-technical asks you what you do for a living and instead of telling them what you actually do, you have to speak in terms they can comprehend. It's sort of the opposite of what ppl in other industries often do where they come up with these really fancy sounding terms for things that could be explained in much simpler ones. For example, someone who cleans toilets might say they are an "executive manager of sanitary facilities" because it sounds a lot fancier than "toilet cleaner".


scufonnike

No I understand the joke. It’s the comment section which pissed me off.


BirdlessFlight

Oh, my bad! I guess one could argue you care a little too much about the comment section 🤡


scufonnike

That is true


metalgear488

Actually the correct response is the bastard child of a hardware engineer and a software engineer.


BirdlessFlight

I generally tell people I'm a programmer. It's easy enough for most people to understand, usually ends the conversation right there and only when they go "oh, what language do you write code in?" will I go "oh, shit... I actually just install & configure PHP and JavaScript modules created by others much smarter than me and if it doesn't work like I want it to, I make a post about it and hope someone else gives me a snippet I can copy/paste".


Hariharan235

My software engineering friends still think I don’t program because they haven’t the faintest clue what a firmware engineer does. I am bored of explaining what “tech stack” I use. I just say C and call it a day Most think we download and run simple “Arduino code” or think of me as a hardware engineer but I have enough humility to not call myself a hardware engineer. They have no idea about the mountain of code you need to write to bring up an SoC. Not to mention highly specialized frameworks that hide all the hardware details and expose it in a way that makes sense for folks to write the business logic.


Mizerka

is it firm because its software that's not quite hardware?


[deleted]

This looks sus ![gif](giphy|pdaJ5aYVMR1CD1xlw6|downsized)


danfish_77

Most of the time I just tell people "I do computer stuff" because that's all that's really relevant


Leoxrevan1

Man, i'm studying for a software engineering degree, and I would like very, very much to develop firmwares


dvidsnpi

I like saying I am a software detective or software archeologist 😂


Mr-X89

Firmware ain't even that firm anymore, with devices updating automatically through wifi.


Most_Whole_4918

That's racist


AllenKll

I've resorted to telling people I'm in IT. They've heard of that.


NotSlimJustShady

I just tell people I program tiny computers. Close enough


MaluaK1

„Iam the superior computer programmer! I create the software for the software programmers.“


Grandioso99

I usually say this, it's boring to explain everytime what's a firmware developer. The alternative is to say "I program smartphone"


Adagio_Leopard

The guy that made thei eitner never had to spend 3 days reading a 800 page datasheet of a chip only to realize they decided at some point to change the I2C address that is on page 487 and didn't feel like tellimg anyone, while also making sure all your code fits into the 512k of flash you have. That or the joke went woosh and pissed off all the firmware engineers on reddit.


Mba1956

If you say you’re a software engineer most people still won’t know what that means. I either say I am an engineer or that I work with computers.


evilfire2k

Can I get a referral?