by pcmoney on 7/15/22, 2:34 AM with 9 comments
Essentially, everything we do is between other mammoth systems and thus most “work” is actually configuring systems to talk to each other or talking to other teams about guarantees, capacity etc. The actual engineering work is minimal and the development speed is glacial.
Previously I worked at a small consultancy, a green field company, and startups. Small teams, full stack, very fast paced, interesting work (dynamic programming, exotic schedulers, path planning, front end/back end, databases, events/streams, native mobile).
Now I feel I just slog through esoteric config or some custom DDL, language, or tool nobody else uses. No team can do anything meaningful by themselves, everything requires meetings and infinite Google Docs. The pay is more than 2x what I was making before and the promos keep coming but it all just feels like BS.
Does anyone else have this experience?
Note: I have definitely improved in cross team communication and collaboration etc. as well as big org politics. So not a total loss.
by ratorx on 7/15/22, 8:33 AM
My parents are chemical engineers and the work they do seems fundamentally pretty similar to Software Engineering at Big Tech (with different inputs and outputs and constraints), in that it’s less about getting any individual thing done, and more about getting many people to agree to a set of tradeoffs and implementation. Also, the scope for ground up work is pretty much non-existent and it’s a lot more about gluing together existing components with well known tradeoffs and tested characteristics.
Cross-team communication cost and latency can always be improved, but I think some slowness is unavoidable due to the possible impact that changes have.
There are pockets within Big Tech, which work on less critical things and they often have a much more startup mentality and approach to development. However, it’s still difficult for these teams to fully extricate themselves from the overhead imposed by the systems of other teams, since those systems are generally designed for bigger, more important and more critical systems.
by airbreather on 7/15/22, 12:28 PM
It seems it has been trendy to want to call coding as engineering, when that is like saying because I play with model rocketry on the weekends, I am a rocket scienetist.
Engineering is about assembling and/or integrating the efforts and products of many groups or individuals into an overall end product of some kind, usually to a known quality to a fixed budget and schedule (or at least that is the expectation at commencement).
In order to be resonsible for the outcomes of very complex efforts it is extremely difficult to "span too many levels", even if you have the ability and time.
Thus, on large engineering projects responsibilities are compartmentalised into modules and layers, just like software is.
You don't mix the very high and very low levels of software in the one module or layer, you abstract as you go up, maintaining a more or less similar amount of immediately need to know complexity for each sub-system with defined interfaces.
This is how complex systems that could not possibly be fully known by any one person, simiply because of the cognitive load alone, are constructed.
Engineering teams work in a similar way, so if you are near the upper levels an defining broad brush and system wide concepts, you are not usually also down in the weeds writing device drivers, so to speak.
The higher up you go in the levels, the more there is management of of the efforts of others. So that means expectations and interfaces, leading to more and more logistical and people management, and less actual nuts and bolts.
The person that designed the Golden Gate bridge probably never used a spanner in their life. (I could be wrong, I just make a throw away anology for the point of it)
by fbrncci on 7/15/22, 6:42 AM
This is something I found out the hard way too. At some point in life I fell in love with sofware (coming from IT). Made it into a fairly big company, and came to understand that its mostly meetings, sync ups and polishing tasks on jira. I figured that quitting that job, before I'd end up hating software was the best route to go. I now am an independent contractor and consultant, only working on projects that deeply interest me. It's less stable, and throughout my career the income will likely be a lot less than at any BigTechCo (30-50%). But at least there is room for personal advancement and working on adventurous things here and there.
by e9 on 7/15/22, 5:30 AM
by ActorNightly on 7/15/22, 6:43 AM
There is an art of being able to code with people rather than your fingers as a senior engineer, but often time this requires a capstone project to develop from scratch which is far and few in between.
The thing to do with big tech is find a position that pays the most per time spent actually working (which is not always the higher pay), and enough to cover all your needs, and then work on personal projects in the off time. Or you can grind out for several years while saving money, then take unpaid leave.