Tuesday, September 29, 2015

7 things I am hating in Software Industry

1. I hate it when people ask me to fix their computers.

I believe it is universal for everyone in Software Industry that at some point in their life they have to do a dreaded "favor" for someone they know. The "favor" usually involves, but not necessarily limited to, hours of looking into their systems to see some missing drivers, or worse dlls; a browser window with more toolbars than any scout; or 3 "free" anti-virus programs for triple security. The "favor" is boring, irritating, and a time killer.

Just because I make softwares doesn't mean I am good with software other people made. Software engineering is not the same as IT.  Asking a software engineer to fix your computer is no different from asking a mathematician to explain different types of loan interest.  We may be able to do it, but it's nothing we relish doing.

And, I don't see this getting as much acknowledgement as it should, we don't just know every twists and turns of a computer, instantly know what's wrong from an error message pasted to whatsapp, or can effectively "hack" any system with black screen and green text. Trouble shooting a computer is a long process of trial and failure and we are equipped with just the same tool that you are: search engines. Simply call us before any attempt to understand the situation is kinda disrespect to our time. We also only have as much time a day as you do. At least use google first.

(Though I might agree to fix your Linux. I see that as a learning opportunity)

2. I hate it when software engineer is discarded from business development.

I don't like dictators, and I don't like to be dictated (including times at elementary, grammar and vocabulary are sons of a bitch). Imagine you are in a foreign country, a tour guide, and a bucket list. You can either 
  • Tell your guide you want to go to Hội An. Once you get there, you said the next destination would be Hạ Long Bay up North, and then Mekong Delta down South, by motorbike. Even if that mean dragging yourself across Vietnam, twice. And you has never ridden a motorbike before.
  • Or you tell your guide your bucket list, that you have 3 weeks in Vietnam and a budget of 2 months of salary. And let your tour guide figure out the route that sketches across North and South, in one go.
"But there is a lot of risk with that, we might get ripped off!?". Yes, the same risk when you dictate the trip from point to point. If the guide is set out to rip you off, nothing gonna save you, not the local police, not your stating explicitly you want the motorbike to be the cheapest Honda Wave. (And really, don't go with cheapest Honda Wave).

Now think about the engineers of your young startup. At least one of the engineers, if not all of them, has access to AWS account, GitHub repositories, and remote servers. If we are really to screw you up, god blesses you. But we don't. We choose to be engineers because we enjoy building good softwares, one that generates values to its users.

3. I hate it when someone took a Coursera class and is now an expert in software development.

"It is just a simple if/else statement! Right guys? Right?". 
  • Yes. And if it is that simple, we would have figured it out too. Thanks for pointing out 1+1 = 2.
  • No. And then prepare to listen to the same version of the last talk about code refactoring that you didn't understand (and still not), this time, with a little touch of anger management.
I know that this sounds like an asshole finding excuse for his drama (which I happen to be). But when you tell someone how to do their craft, what is the chance you come out winning?

4. I hate it when the only skill of the recruiter is typing keywords into search engines.

In case you haven't experienced, here is how professional recruiter/headhunter works. You would craft a detailed job description with all the key attributes you are expecting from this senior position. You would also meet the recruiter to explain what is your company culture and how it is critically important for cultural fit. The recruiter would then look in the database of top-notch professionals her company has built over years and fetch you with potential CVs. She would be a bit generous, because she doesn't charge on number of CVs. She takes only 2 months of salary of that professional upon recruitment. Once.

Except that all your talk on cultural fit doesn't mean shit, it was just lip service. And her database looks like a combination of LinkedIn and Facebook (read: she only knows about the candidate as much as anyone else with an Internet connection). And she thought PMP and certificates mean good project management. Or that NoSQL is a form of SQL. And by generous, I mean she wouldn't hesitate to flood you with a hundred of CVs (like Saigon river in raining season).

But it shouldn't matter, because she is doing all the hard work for free and I only pay when the recruitment happens right? No. Time is an asset too, the most important of them all. Unlike money, or property, or candy, no one get more or less time then others. Wasting people time, and bring them frustration during the process, is an act of criminal.

I once wished that there would be a recruiter who understands cultural fit, technical depth and a sensitivity of choosing who, when and how to poach. So that when I have a vacant to fill, and budget for that, I can actually get one. I figure that there are people actually doing that everyday. But they aren't professional recruiters. They are the founders, co-founders, and C-level executives. Hiring is hard. Don't expect it to come cheap.

5. I hate highly tenuous comparisons: (programmer) rockstar, (javascript) ninja, and growth hacker.

The terms sounds like they are designed to attract people with delusions of self-grandeur. This is an attempt to imply coolness and eliteness (frequently among those who are neither).

But I don't use drug and crash hotel every week. I don't practice ninjutsu as well. Engineers ourself don't tend to have issues with being engineers, with the way others view our profession and don't want to enjoy some glamorous fame from other fields, like entertainment.  Engineer as an career has its principles and a focus on the product it builds. Once that goal is abandoned for hip and cool, it becomes fashion. Do you want to rebuild your system next year because the trend changes?

There are better ways to describe an experienced engineer, ones that don't sound like a childish marketing ploy (and growth hacking is basically marketing, coincidence?)

6. I hate bosses who think of their employees like lego pieces.

True, it is terrifying to think that there are irreplaceable people in your team and the business that you have built over the years would fall apart soon after they have gone. It is easy to think of them as cogs in a grander machine, that you can purchase another standardised cog from the market would one breaks. It is really tempting to objectify people. Only if you can.

But engineers are far less standardized, reliable, and productive than a machine. We have feeling, opinion, and our goddamn personal preferences. And that's what makes us human and better than machine. I tear my hair out whenever a boss has a team of unix-based engineers and a windows-based one and he is like "you are all engineers, now kiss". While one group looks at the other like a band of idiots and the other view them as prehistoric monkeys with pitch black terminal. When the Windows system is out, the boss expects the other team to fix (and to windows guys that have to fix unix system, best of luck!). Interchangeable?

And I noticed this snowball effect where boss only employs people whom he can pull strings. This kills the employee's willingness to question the nature of work and proactiveness to contribute to the project. The boss feels desperate, that he is surrounded by idiots. To save the scene, he pulled more strings, harder. This in turn pushes the employees further into the stage of indifference. No way out of the spiral. It is an autobahn to hell. More on this on legitimacy in management.

7. And I hate other engineers who compromise much bullshit in their career.

We all know that engineer who wrote crappy code that hurts brain's cells and fails to do what it supposed to do, who agreed to OT every night since the very beginning of a year-long project (and spend much of the next morning fixing the bugs he produces the night before), and who hated their boss to the bone and yet accepted his bullshit everyday. And they gather and go on social media to chant about software engineers being 21st century slaves (No we aren't). 

Don't be like this
Because not only will America go into your country and kill all your people. They'll come back twenty years later and make a movie about how killing your people made their soldiers feel sad. Oh boo hoo hoo.

This is not a rage quit. I love and respect my work, and I wish to continue working into my 70s. So it is important to point out things that ain't quite right in the industry and work on it, to reduce burnt out and foster a sustainable environment.