Programming
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
What do these software developers actually do all day? ;->
Navigate the million lines codebase to understand what their changes do.
Coding is the easiest part of the job and do not represent the main people activity.
Looking at the number of lines of code and thinking "they are only doing that" is like looking at any Mozart cues and thinking "he spent years to fill 50 pages of black dots?".
Coding is like creating music. It's not because you can write lines of code that the result will be a working solution.
You need to know your activity very well to be able to get the best from all the instruments you have in your hands.
Before coding any line, you had to THINK about the solution, find the best architecture, how to implement it without impacting in a negative way the product, detect the potential side effects, how to test in all the possible scenarios, how to maintain it, etc.
What you pay here is knowledge, experience, architect skills, coder, tester, troubleshooter, project management, devops, etc.
You pay highly skilled people who have the responsibility to not screw up all the servers infrastructure of the world, the brains of aircraft, cars, manufacturing tools, etc... And you don't want them going elsewhere as the knowledge ramp-up of any newcomers could take years.
This is where the salary goes. People brain.
Yeah it's like the engineer who wrote a 10000 dollar bill for exchanging a single screw to his enraged customer:
- Exchanging screw: 1 dollar
- Knowing which screw to exchange: 9999 dollars
(It's a whole story, I don't remember exactly)
(Itβs a whole story, I donβt remember exactly)
I'd be delighted to read it!
I'd be delighted to read it!
Here you are, stranger:
A really beautiful and touching story!
I think we owe these inventors and engineers who created our electricity system so much.
Their effort are today more important than ever, much more than they would have dreamed of. Consider this: Humanity is in a race for survival, a race to escape climate change. With 3 or 4 K of warming, civilization cannot survive. If we make it, electrical infrastructure will be a big part of the solution.
If you ever have grand-grand-grandchildren, five generations from now, they will likely be alive to a big part because of their efforts.
Thank you!
The value of most programmers is not loc. It's knowing the right lines to type. It's knowing which lines to eliminate. It's knowing how to set up your program so it's as short as possible while having all requested features. I can give you basic calculator in maybe 100 lines. I can give you same calculator on 100k lines. Which is the better program? Which do you think is more maintanable? Which do you think is faster?
Anyone questioning how to make it 100k lines... Easy
#include "win32.h"
I wish more people did that, at least we would have better software than these Electron crap
Yeah! But don't forget to use Dvorak layout when typing this incantation ... don't let your productivity be hampered by stuck fingers ;->
edit: Or perhaps use these voice input systems to whisper your code directly into the AI's transistors.
Is that salary estimate also from 2011?
Thereβs a more robust methodology here, which is to look at commit history, but that will only tell you how many lines were pushed and merged. That will be a greater number, by the way: say the kernel is 100 lines, somebody may have written 50, but they may have all been replaced by future patches, so The number of lines written is greater than the number of existing lines.
Regardless, Iβm sure you already know lines of code is a bad metric of output, let alone effort and work.
Is that salary estimate also from 2011?
I got 60K as a mid-level C++ developer in industry in 2009.
Ah, OK. Whatβs the expectation these days, if you donβt mind me asking?
It largely depends on at what price you sell your soul.
That will be a greater number, by the way: say the kernel is 100 lines, somebody may have written 50, but they may have all been replaced by future patches, so The number of lines written is greater than the number of existing lines.
Some parts are rewritten, but most of the kernel code is actually in device drivers which usually do not need to be re-written.
You realize that there are lots of lines of code erased and updated too? So comparing the size of the entire base does not tell you how many lines are written. Lines of code was always a bad metric, especially using it like this.
I don't know if the last part "What do these software developers actually do all day? ;->" is ironique or not.
Anyway, from my experience, industrial software developpers generate around 10 to 100 loc/day. For mobile game or shitty web stuff, it can go up to a few hundreds. For DO178A certified aeronautic code, this is closer to several days per loc π€ͺ. To know what's going on when manager try to increase this metric, just have a look to Boeing.
I donβt know if the last part βWhat do these software developers actually do all day? ;->β is ironique or not.
It is actually a mix of two things:
-
Ironic about the idea of what AI companies promote - and many managers in tech believe - that you can speed up the work of developers by speeding up code generation. The fact that typing in code costs way less than 0.1% of developers work time shows that the time to type in code is /not/ the bottleneck.
-
Interested in what it is actually that costs time. I think most time I work on larger projects is reading code and trying to understand how different parts are related, what invariants it has, etc. It is actually a form of /learning/ because it uses material to build a useful long-term collection of related concepts in my brain.
Anything that'd help us to do and understand the second part better would be extremely useful for this work. I think that literate programming, also tools that can transparently put code into a form of interconnected hypertext (like the LEO editor), inline doc tests and so on, are helpful for that.
Personally, I also think that wikis like gollum are powerful tools for that kind of learning, but not many people seem to agree with this (except the fossil and forejo authors).
Interesting point of view. You got my upvote π I think many people took it 1st degree, so the many downvote you have.
I'm personnaly not a big fan of natural language programing. Natural language is too ambiguous and subject of interpretation. So you have to give very long description of what you want to achieve. I often do the parallel with Mathematics. If you read Euclid's_Elements's definition for point, line, etc..., wording is extremly wordy and indigestible. But moderne formalism is much more concise and precise. Now with LLM and vibe coding, I have the impression that programming is evolving backward π
The role of a developper has never been about writing code. The role of a developper is to formalize a problem. In a certain way, job of developper didn't changed a lot since the last 50 years. My grandpa use to be developper on punch cards, and he had the sames problems than us today. How to translate accounting department request into series of instruction, how to define boundaries, etc...
OK Jack Welch
-
You are mixing up the units here. Value is not a real money, and you can't pay salaries with value. You can pay salaries with cash.
-
To actually get how many LOC in a kernel per person per year they produce. You need to look at git history, and do data science on it. It's doable and easy but not really my area of expertise.
-
You need to account for that vast majority of contributors make just one patch and they are never heard from again. They don't work full time, or even part time on the kernel.
See the linked Wikipedia article. The value is defined as the estimated hypothetical costs to re-create it, and these costs would be salaries. There exist estimation models for the value of large Software systems, which are e.g. used in company takeovers and mergers. And of course, that's hypothetical, the Linux kernel is not for sale.