3 ms·
> Why is it always worth it? If I want to be a product/creative developer how does learning C specifically help me? I am going answer you with some questions!
by scoutt 4y ago
> Why is it always worth it? If I want to be a product/creative developer how does learning C specifically help me?
I am going answer you with some questions!
What is a product for you?
Are a dishwater, a car, a keyboard, a smart LED lightbulb some kind of product a human can build? A product with some sort of microcontroller?
How many products like that there are in your room, house and office right now?
What about in the whole world for the past 20 years?
In all of those products there is probably C running!
- ZephyrBlu 4y agoI thought it was obvious from context that I was talking about software products. This is what I mean by a product developer: https://blog.pragmaticengineer.com/the-product-minded-engineer/ https://blog.pragmaticengineer.com/the-product-minded-engine... I'm sure that type of developer exists for the kinds of products you are talking about, deep tech products, etc but that seems a lot less common.
- scoutt 4y agoBut those developers write software just like you! These products are also "software" to some degree! The link you've posted also applies to those who build smart lightbulbs. > seems a lot less common I guess the problem is that the world is bigger than you may think. I don't know what you build, but let's pretend it's some kind of web service. Consider how many brands of microcontroller-based products there are in the world, with their many variants. For the sake of the discussion consider just the "commercial" products you can purchase on Amazon. My guess is that they surpass the quantity of web projects out there. Add to the mix the custom/industrial devices, special tools and computers, etc. that many small companies are building right now (like the one I work for). Remember that someone is writing code for these products. Given the quantity of product, they can't be "a lot less common". To answer your question, and if you do web services, let's say you want to know how Redis works internally. You need C.
- ZephyrBlu 4y agoTo me this demonstrates why it's not always worth learning C. Like you said, the world is bigger than we think. There are areas of software where knowing C is not that helpful. Even in the web world, most devs are not going to be poking around in Redis internals. If you go higher up the stack to things like accessibility or CSS animations then knowing C is literally useless. Why do you feel like C is so fundamental that every developer must know it regardless of what they work on?
- scoutt 4y ago> Why do you feel like C is so fundamental that every developer must know it regardless of what they work on? I never said so. I was answering specifically to "If I want to be a product/creative developer how does learning C specifically help me?" Since you didn't mention what you do, I was talking about "product" and the definition you have, and if you want to build "product" there is a whole "product" industry, that is bigger than you think, that requires C. If you do web development you can completely skip it if you want, but C is a nice tool to have around to understand why there is a bottleneck in Redis, Sqlite, a driver or a stack. Maybe find a workaround or a fix, but waiting for someone else to fix it is also valid if you don't want to fiddle with C. It happens all the time: high level developer points finger and says "there is something wrong with the filesystem, my app crashes". They cross their arms and wait for me to go in a crazy debug session so I can explain them later why their app is slow and/or crashes.
- ZephyrBlu 4y agoIt sounds like we have no disagreement then? I'm well aware there are a lot of places C is used. My point is mostly that "waiting for someone else to fix it ... if you don't want to fiddle with C" is probably a better strategy than becoming competent enough with C to fix your own problems. Becoming competent enough with C to diagnose and fix problems in production C codebases seems like it would be quite time consuming. Also, I work with SREs that debug problems with MySQL and Redis without knowing C or looking at C code. Unless you are actively contributing to those codebases it seems unlikely you need to know C.