Sunday, October 20, 2019

Development Shop Perks

When you get into the software development industry, you'll realize there's a bunch of different types of gigs.  You could end up in a software consultancy.  You could end up writing tooling for a business whose main product is totally unrelated to software.  You might even end up in one of those software shops everybody knows about -- the Googles and Amazons of the world.  At the big shops, and many others, there are perks that are given to employees that you won't see really anywhere else.

Some Perks

Some of the perks that I've seen dev shops give out include:
  • Free meals -- Breakfast, Lunch, even Dinner
  • Unlimited PTO Policy
  • Open access soft drink fountain
  • Gym on-site
  • Doctor's office on-site
  • Electric car charging stations
  • Fully paid medical
This list is virtually endless.  To people in jobs outside of technology, these perks seem amazing -- but to those that have studied economics -- or even the technology business, these perks make perfect sense.

Be Wary

So, be wary about what you're getting into when you hear about perks like this at a job you're going into.  In my opinion, these perks have three basic categories:
  1. Altruistic perks
  2. What I'll call "Workahol perks"
  3. Cheap perks

Altruistic Perks

Altruistic perks are perks given by companies because they actually want to be a good employer and they want to attract and retain top talent and the best way to do that is to offer a great benefits package.  Among altruistic perks are fully paid health/dental insurance, electric car charging stations, stock options, and the list goes on.  If a perk has no other effect other than improving the employee's well-being, then it is an altruistic perk.  This might be a tad bit confusing, because you may be thinking "don't all benefits improve employee's well-being?"  The answer to that is..... well not really.  Which brings us to...

Workahol Perks

Workahol is what keeps people working all day long and into the night and keeps people sitting at their desks or in the office on comfy chairs.  Once employees get addicted to workahol, they become workaholics.  Pretty soon their entire lives revolve around work and that's all they can think about.  Companies have an incentive to get employees to work as much as possible, especially if they're salaried employees -- because the more employees work, the more the employees produce which then the company can turn into money.  This means that companies are actually have an incentive to introduce amounts of workahol into the culture of the business.  However, it cannot be toxic workahol, or large amounts of employees will revolt and complain they have to work too much.  So, businesses have figured out how to keep employees at the office with subtle amounts of workahol introduced by perks such as:
  • Gym on-site
  • Doctor on-site
  • Free meals from the best restaurants
If a company is giving free food for breakfast, lunch, and dinner, that means the employees are more likely to stay there for breakfast, lunch, and dinner -- thus spending more time at work and increasing their overall productivity.  While these perks may seem amazing, perks that produce workahol should be carefully considered when considering a job offer.  

Cheap Perks

The perfect example of a cheap perk is an unlimited PTO Policy.  To one who has not received this perk, it may seem like unlimited PTO would be something a dream job would have.  While it may be nice -- there are some things to consider.
  1. When your employer gives you unlimited time off, you don't accrue time off.  So, when you quit your job, or heaven forbid, you get fired, they don't have to pay out any of the time off you accrued but didn't use.  In this way, the employer actually saves money by giving you "unlimited" time off -- but they only save money if you take a reasonable amount of time off from your job.  Which leads to...
  2. "Unlimited" time off is not unlimited.  "Unlimited" time off means work with your manager when you really want time off and they will work with you to determine what is reasonable.  This means if you get a jerk manager in a workaholic company, the time that you take off may in reality be less than at a traditional job.  When you accrue time off, you are more likely to take that time off because you earned it and may be saving up for some vacation or other event that you need to take time off for.  When there's unlimited time off, you may not consider how much time you should be taking off for how long you've been working.
So, because the company doesn't have to pay out time off on employee termination, and because workers may in fact take less time off with "unlimited" paid time off, the company actually benefits from this perk and it saves them money.  This is what I call a "cheap" perk, because it's just the company doing something that seems to be in their best interest and it could actually attract some talent to join the company.  When evaluating a job offer from a company with an "unlimited" paid time off system, make sure you get a real feel for how much time people take off and how time off is looked at from a management perspective.  You need to make sure you are comfortable with asserting your ownership over your personal time and taking the time off you need to maintain your sanity, and perhaps your marriage.

Saturday, October 12, 2019

Why Your Code Will be Bad

So... you just got your computer science degree, or you graduated from lambdaschool, or you did codecademy long enough that you think you're ready to get your first job.  You're so excited to get into industry and write beautiful code that won't have any bugs, that will be perfectly unit tested, and will probably be so good you'll get promoted to director-level within the first 6 months.  Then you get that job.

Reality

The truth is, you are, or will be, getting paid to write this code.  Why??  Because theoretically it brings your company money or the ability to make more money.  However, the longer you take to write this code, the more money they have to pay YOU before they can start making money from the code.
So, when you get into industry, you'll find very fast that you code in reality.  As Owl City says, "reality is a lovely place but I wouldn't want to live there."  The existing code bases may be nearly impossible to understand.  There may not be automated processes to deploy code.  There may not be unit testing frameworks in place.  Some services may spontaneously combust once a week to where you have to go restart the server but don't get the time to actually fix the problem.  With all of these problems, you simply won't have the time to write perfect code.  To write perfect unit tests, there needs to be a framework in place.  But product doesn't have time to wait for you to put the framework in place.  You'll just have to write correct, performant code with the realities you face.

Existing Code Bases

Coding performed in reality yields real code bases.  Real code bases can be messy.  They often have bugs, warts, and weird code that exists only because the code didn't just come into being like the universe.  Code bases evolve and in some cases get uglier.  Dealing with code bases, you should remember one rule -- it is the same rule you should remember when you go camping: "leave it as you found it or better."

Life

Sure, developers get paid well.  Sure, you won't have to do any physical labor except get up to get another free fountain drink.  But this is life.  There will still be hard days and hard problems to solve.  Somedays you'll feel like quitting programming forever and starting a goat farm.  Your code might occasionally even be BAD, especially when you're starting out.  It could be really bad.  Such is software development life.