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.