Engineering is one of the oldest business. Word ‘engineering’ became popular in 1500s when specialists were hired to build military fortification. Skill of an engineer has been in existence since the time man or a woman invented wheel (it could very well be a woman if we consider the unpredictability of a wheel). Engineers should be proud to have selected this field and surviving against the odds of fucked up academic systems and even more messed up professional world. This profession has been in the world since early ages: just like prostitution, slavery and smuggling (Just kidding, this comparison is only to keep an engineers’ pride in check. For non-engineers, it’s a reputable profession like medicine, politics and sales).
Demand of engineering has always been there, though different from time to time. Building Egyptian Pyramids and Taj Mahal required civil engineers, industrial revolution required mechanical engineers, Edison came along the way and created a different dimension of electric engineers. In past 80 years or so, demand of IT professionals has been interestingly high. IT Professional is a collective word encapsulating software engineers/hackers, hardware engineers and everyone in between such as designers, analysts, product, project managers etc. Hierarchies of software organizations and project execution methods have been loosely innovated and highly derived from mature industries like automobile and others.
While almost every non-IT engineer have a somewhat work-life balance; most IT Professionals don’t. One of the most shared rants from IT Professionals is that their work is too demanding, exhausting and achieving work-life balance is optional to achieving success.
Is working long hours is normal?
It’s not. A professional grows more by spending more time on internal thinking and less by spending time in front of the screen. Working is essential for living. Working too much becomes problematic for work itself, living and lastly, growth.
Why do it people work long hours?
Because of unrealistic expectations and deadlines. Estimating time to complete a software project is like predicting an investment to woo someone (for romance, ransom or sex), it’s highly dependent on human brain and capacity (not the most predictable assets we have). Loosely defined, we work long hours because the work is complicated. Software industry is not mature like civil, mechanical and electrical.
Let’s understand maturity of other engineering fields and compare it with IT field as we move along.
Construction is probably one of the most ancient field of engineering. So old that the world ‘Construction’ is assigned to bricks, sand and cement if not exclusively defined. Building a bridge is a project in civil engineering. Most part of the project is already understood by everyone from sponsor to labor. Expectations do not need extensively written confirmation like software. Hence they have time to focus on more sensitive areas such as safety, power supply, stability etc. Whereas building an app is one of the most common project in software industry, app can be of any kind.
Starting the comparison with highlighting differences makes it easier to understand the similarities. One of main difference here is that bridges are built because of necessity, sometimes corruption but mostly to ease the transportation. Apps are built mostly because there is an idea and someone is hell-bent on realizing it. Another main difference is the lifecycle: a bridge is built to last for 100 years or more, everyone expects it to be the same way unless absolutely necessary; whereas the lifetime of an app is first few minutes of going live. User uses it one time and starts expecting it to do more than it’s built for.
In software development, an idea goes through multiple phases such as conceptualization, commercialization, market effects etc. An entrepreneur has a the broadest vision and highest clarity of the idea. When it goes into development, it passes through multiple phases such as analysis, technical feasibility, design, technology selection and testing the solution. There are human beings involved in each of the development stage. Every individual brings his/her own mind, experience, expertise and logic to the table. This makes the idea plugged with various assumptions as it evolves. End result is sometimes surprisingly better than the idea or disturbingly different from it.
Solution to that is – automate everything. Keep the idea pure and undiluted till the end. This is possible to an extent in civil engineering. If you wish to build a house, you hire an architect to lay out the plan, an interior designer, a contractor and workers. All of them have very clear understanding of expectations. A labor knows that is expected out of him. He does not apply much brain in design, material and timeline. A contractor does not put his nose into architecture, color etc. This is because they know there’s a specific person assigned for that task and the relevant field (design, architecture etc.) requires more expertise. Software development does not have that much standardization. Many of the designs are altered in development: either they are too far from technological reach or impeding user experience.
Civil, mechanical and electric engineering are complex studies and continues to grow through innovation and automation. These disciplines have an underlying standardizations and industrial axioms. Software industry lacks its own standardization. There are multiple reasons to it.
First one is App Thinking. An entrepreneur thinks of an idea, programmers build it and then its growth is limited by commercialization and privatization. It becomes a monopoly and eventually dies a slow death. Uber and Lyft are great innovations. They are in position of setting standardization in shared mobility domain; however, they are busy capturing the whole market in their network and rest of the world is busy copying them on smaller scales. Building a shared mobility app was a complex and exhausting process for them and it remains so for rest of the world. There is also an economy of building clone scripts with look-alike features of Uber and Lyft, this scam pries on the greed of achieving more value with less efforts There’s a term for these people, it’s ‘Fucking Idiots’. They are not only hurting economy by encouraging futile and destined for failure startups but also wastes a lot of programming skill in building poor copies of an evolving artwork (Fucking Idiots, grow a pair and build a bot that can clone scripts, this way at least programming skills will grow and become available for better work). This can be solved with platform thinking: build an app, make your living and leave a space for innovation and extension of your innovation by others.
IT Professionals work long hours mostly because almost all of them work in silos and majority of them prefer to do so. Ironically, this is the very bunch of people who gave birth to internet: single thread holding the whole world together.
How do we overcome this?
Automate everything. As soon as you have the idea, you should be able to express it in a diagram or words and app should be available. Many of the entrepreneurs will realize how horribly wrong they are about their understanding of software development. It’ll be like always criticizing the tea, then one day, make a tea to yourself: resulting taste is far from average, let alone savoring. Only consolation prize here is: you’ll get better at it with time.
Automating software development also takes away meaningful insights from experts. A designer may not have as much clarity as an entrepreneur, but he’ll surely have a say on whether the color scheme of an app sucks or rocks. Just like end-user feedback, inputs of people involved in legwork matters a lot. Take OneNote as example: a digital way to keep notes. It has almost replaced diaries. Several other apps are copies are available as well, they evolved with capabilities of clipping webpages and collaboration on notes. However, it lacks note comparison. Comparing notes is one of the core activities for almost everyone (Except few genius fucks who claim to memorize everything and later can’t tell whether the point of discussion was a real dick or a vibrator and gives a confusing look of ‘Feels like it, looks like it, but I’m not sure!’).
Alternative is to bring everyone on the same page. This takes time, because everyone has to travel from their version of world to a common version of world where the idea exists. Investment of time here reaps good results at the end as everyone makes informed decisions and space for assumption is reduced. Also, this is very hard, because we actually have to listen to others without stopping them midway and coming up with alternate idea. Patience on keeping everyone on same page builds the much required harmony in the team. This is dangerous too, investing too much on an idea may end up in an unrealistic goals like ‘Flying Cars’ instead of smaller planes. Risk of over-engineering results in shaping future of the idea and makes everyone well prepared for uncertainties around it. Lastly, this requires a lot of cleansing – it requires doing away with time-tracking and managerial minutiae. Making the project execution minimal and to the point helps keep the whole process leaner.
In order to avoid long working hours, we actually need to stop working too much. Productivity of a software project should be measured by clarity of idea across the board, if this is done properly, achieving deadlines and better quality becomes by-product.