State of Software Engineering
I’ve been working at a large software company for 2 years now. I have been part of a project with 200+ engineers, 50+ designers and PM’s over two years.
Software is complex, although Microsoft likes to makes things a lot more complex than they should be, but that is another story.
The same story is at Google, Facebook or other behemoths. Thousands of people building software products. I have been grateful to have gone to the Valley and taken a tour around the companies’ buildings.
It makes you wonder, what do all these people do? The freshmen salaries of kids fresh out of university in software industry is 100k+. Senior engineer salaries can reach 200k in the valley. Its crazy.
The process goes something along like this. There is an idea in someone’s head. The Project Managers and designers are engaged to draft up some experience. The designers work with Adobe tools to create high fidelity designs and the project managers use word or some text editor tool to flesh out their specs.
Then the big boys/gals approve the specs and designs. Then the engineers get shown the designs and they are like “WTF! we can’t do this?” the design makes a couple of iterations.
Everytime they make iterations, Engineers have to translate a psd or picture to a css/html layout. The design is not dynamic, it can’t show how design will work responsively. So after a week of coding the engineers say “oh this looks aweful” or “the behaviour is undefined for this and this interaction”.
So iterations are made, weeks go by till you arrive at something that works. Then the big boys/gals say “oh no, you have to slide this little feature in and put this text here/there”. The little takes a week.
Then you have perf issues, and security problems, code refactoring, testing. None of this is visible to non-technical managers and they think Engineers are wasting time. So sometimes Engineers who don’t to the correct thing and move fast to get rewarded but the ones who are building for long term solution don’t get rewarded (Sadly that’s how it is at times).
Then after months, the user sees something and they are like, WTF! it takes me more clicks to do something now. They might appreciate some new features but in general they are like “If I knew how to code and design, I would create a much better system, I can’t beleieve they spent months and millions to create this”.
So they complain, new iterations start to address the feedback, everyone is thinking “why is this taking forever to finish?”. So much hacky code is added, the bugs have piled up. So everything stops for a month for code to get cleaned up. Then Engineers realize what a pile of shit they’ve created. No one can figure out why a bug is occuring.
I could continue, but this is the state of software. In my 6 years of experience in software, it is the same story again and again.