3 ms·
I suppose to some extent, work is more than just typing in code. As software engineers, we bring a lot of the distractions, non-value adding work, and context
by jrockway 5y ago
I suppose to some extent, work is more than just typing in code. As software engineers, we bring a lot of the distractions, non-value adding work, and context switching upon ourselves.
One problem is that we get away with being specialists, leading to an organization full of specialist teams. That means to get anything done, high-overhead communication among the specialists is required. A specialist that understands the user tells you what features to work on, then you write some code and ask the security team for input, then you need to deploy this thing to production so require the help of the operations team. Finally, the testing team finds a bunch of bugs you missed, and now you have to go back and fix them. The alternative is to just do all those jobs yourself. That is what most 2-person startups do, and they can do a lot.
I think this is just an anomaly in the job market. You try to hire "software engineer" and get 1% of the candidates you were hoping for, so you can't say "also you need to know security, operations, and testing". The result is a slowdown for everyone, as you staff up with specialists to support that one software engineer that actually applied for your job. (My strategy here is to know all these things myself, and teach them to my team, so we can be as self-sufficient as possible. But there's pushback; the time spent learning is time not spent getting through the bug backlog. And, why learn more skills when you get paid the same knowing only one? The market doesn't support the strategy of being a generalist, but it does support the strategy of having a lot of teams, and team leads to integrate them.)
Ultimately, I think this is just a fundamental law of the universe. One person can do a one person project. Four people can do person twice as big. Eight people can do a project 3 times as big. I think this is just how society works, and it's not something that can be changed. Software engineers are "weird" in the sense that most of us are self-taught, so we have a very good handle on how much work one person can do; all of our projects were one-person projects until someone invited us to undertake a project that's 4 times as complex as that (and thus requiring 16 people). There is some debate as to whether this is exponential or quadratic, but the idea is the same; your value as an individual is much lower when you're working on a big project. At some bigger organizations, it's pretty much zero. So if you do more than zero work each day, you're ahead of the curve. (It of course takes 7 hours of meetings to determine what code you should write in the remaining hour. If you didn't do that one hour of code, then your output is actually 0, and you get fired.)
None of this feels good, but it's just how the Universe and humans work, I think. Gravity pulls you down to earth, and needing to do a two person project means you have to talk to another person instead of programming. It's the law.
- jimmyvalmer 5y agoThe lengthy and pointless verbalizing of the above is a good example of what we're up against.