I found out a while back, and this is somewhat paradoxical, that if I care TOO much, I'm less happy. What happens is I notice all the stuff I can't fix, or need to fix, and other people get stressed out making them fix it. The end result is that I stop caring quite as much (I still care), get happy, and then start caring too much again.
It's especially hard at times when you have a lot of energy and want to make something work and you have to fight others who don't want to make it work. 8 hours plus of your day is a lot, so you want it to count, to matter, and that makes you care, to define yourself by that work, and that makes it hurt more. The alternative though, is just collecting the paycheck, which is also bad!
The trick is finding a balance and making sure you also define yourself by other things. And this is a very hard thing for creative folks to do, because it feels like their art, and it's easy to always want to hit the next target/goal/feature, in a never ending wave. The catch is they don't stop. It's a continuum. One of my first jobs as a kid was in a grocery store, and I learned clearing out the line was impossible, and the beeping doesn't stop. It is madness to want the beeping to stop because people from other lanes just come over to yours, and it won't.
I'm not great at this, but you just have to enjoy the people and the things along the way - as there's not a destination.
Corporate code just mirrors corporate structure after a while. More and more lines, where other people are or were responsible, where any reason has been driven out (your learning experience by asking "why is this written or designed like this" gets short circuited with a quick "well, who knows") - which slowly but surely spirals down quality, engagement and fun.
Or at least I should say a lot of OSS projects are corporate, so they feel the same way. The for-fun stuff can be, but it can also wear you down. There's a lot of hate among users of projects that you are directly exposed to, where a paying customer can often be a lot easier to talk to. It's weird.
It's ok and fun when you have a few users, but when you have lots, you find they can be really hard to scale -- so many different points of view, so many different conflicting needs, "managing" people you don't pay, trying to break up disagreements, many more points of compromise, etc.
See the Napoleon anecdote:
http://www.johndcook.com/blog/2010/12/27/dumb-and-gets-thing...
There is nothing smart about faking and pretending to contribute while doing nothing. All the while taking the rewards and benefits which should actually be going to people who do the real work. This even on a short period of time creates an environment which causes the real contributors to go better places leaving the overall ecosystem starved of much needed work.
Programmer: "I managed to migrate the database with the program I wrote over the past two months"
Hacker: "I migrated the database with 3 lines of code"
The enduring tension of this line of work, in my opinion, is how to balance my desire to take pride in my work with my desire not to be a thankless janitor for the chronically cavalier. Not to mention that there's value in a product that gets out the door while the competitors are still trying to make things perfect.
That's a good observation.
Fortunately I've worked myself into the code troll position on my project - nothing goes into the mainline without my approval. Everyone knows I'll reject code that's not well thought through even in the face of looming deadlines.
"They’re interesting for a while, but they’re also the same self-inflicted wounds everyone seems to deal with — why is this slow? why is this broken? how can we keep this old code limping along indefinitely without having to rewrite it? how does this thing a former employee wrote even work? They’re cute puzzles, and I can get into solving them for a while, but I don’t care about them. Because they aren’t my problems; they were just dumped in my lap, along with a canvas sack with a dollar sign on it."
Companies that write their own software create something where nothing existed before--and so by definition, all of their problems are self-inflicted.
Shit gets old, fast.
Decisions which are made after much thought, planning and running things from a long term perspective turn out to last really long freeing your time up to pursue new projects.
Jumping on to a new framework every few months because its trending on the internets is the reason why every one is in a hurry(to achieve a pointless goal) to do work which has already been done, over and over again.
I mean , is it feasible for the ordinary developer to engage in a multi-year risky R&D project that might ultimately fail resulting in nothing ?
Most people barely have any time to code. It's just because Github is your Resume (TM) that makes most people crank out their own Javascript framework so they can have it on their resume.
Could you give any examples of any such long term one man personal R&D efforts ?
This doesn't happen just in the backend. It happens even with FE frameworks. How many people have a use case for react or other jazzy frameworks?
A crude example I can give you is, this is like developing all your applications in awk or sed because that's fashionable currently. You are shoe horning your problems into solutions paradigms they don't belong to.
Programmers have a tendency to detach themsleves from the business where software is there to maximize the profit. It doesn't matter whether it's written in PHP, Ruby, or [language of the year] [0]. But if you let the programmers go wild, many of them have a tendency to pick the hottest thing just because [some reason that has no advantage from business POV]. I guess that's the sign of boredom.
Programming is fun, playing with new toys is fun, but it should not be forgotten that it's part of the business.
[0] Well, it sort of matters. Dev time costs money, good tools and languages will make you write it faster therefore maximizing money. But that's not what I am talking about here.
I was just talking with a friend that is really frustrated because in his view his team is not only trying to deal with a bunch of tech debt, they are trying to move so fast that they net create more tech debt every week. And he feels like he's the only one who will look at this squarely; everybody else just finds their little puzzles to work on. I expect eventually he'll quit and go somewhere modestly less pathological.
The root issue is not that the problems are self-inflicted. The shit-rolls-downhill ethos means that they are to the company, but not really to an individual worker. So most developer experiences are of dealing with an unending stream of unnecessary dumb puzzles, rather than challenging problems with real meaning.
This is not how it has to be. I've been on projects where the code got incrementally better each day. Where we spent most of our time on things that mattered to us and to the business, instead of sweeping up after the elephant parade.
That's exactly what I meant by self-inflicted: thank you for stating it clearly!
I don't mind working on genuinely hard problems, even if we can't get anywhere. It's dealing with lots of unnecessary silliness or trying to get one more month out of the shitty legacy code that drives me nuts.
The solution I have found is to practice losing myself in work (achieve flow) and yet not be attached to the result. If it were your checkout line I'd try to be completely focused on dispatching the clients with efficiency and courtesy without looking at the length of the line.
Focused and productive work is a reward in itself. You leave the office feeling energized and the day flies by. The paradox is that by not caring about the result you often produce your best work.
I think you can try to manage to detach yourself from the negative focus that passion can lead to. To try to numb your passion seems like a less good option.
Until the day I realize all the low-hanging fruit is fixed and everyone else is pretty much content to put up with what's left, making it much harder and much less rewarding to continue.
I have enough trouble with searching for a finish line in projects I start myself, so I guess I'm tired of doing it when it's not even my race.
Pulling back and seeing it as just work, just time you are selling to someone else, clears my head and paradoxically makes me a better co-worker both in attitude and performance. Then I slowly get drawn back in and depressed again.
Its a cycle, but at least I can see it happening now rather than just getting burnt out.
I have a feeling that this realization might be central to a part of Buddhist philosophy/mindset.
If you block these expressions then you get a lecture/dissertation, chock full of info, but not a dialog within a community.
So the question is: what do you see HN to be: a knowledge repository or a place that allows technology-minded people to share and belong?
When I tried bootstrapping my startup years ago with periodic contract work the albatross around my neck wasn't anything to do with the company, it was the mortgage and other home expenses that continually made it harder and harder to go without a steady income.
People always focus on income without looking at expenses as much, but the closer you can get those expenses to zero the wealthier you really are since you NEED so much less cash flow. It's a huge multiplier.
If I had the ability to pay off all my debt overnight, using my time the way I want to would be a whole lot easier. I absolutely sympathize with the author here. There are several things that I want to build but I have a full time job, a wife and 2 kids. At some point I had to decide that being a good father and husband is more important than pursuing those entrepreneurial dreams. There's only so much time in a day.
I'm lucky in that I have a great job with a company who's mission I fully support and ownership that treats their employees better than any company I've ever seen. It makes it significantly easier to put the company over personal ambitions.
Time and a place for everything.
But when I think about really getting that money, I realize I wouldn't do that. If my mortage is $1200/month, I just bought myself 166 months, or ~14 years. If the idea is to quit your job and invest in a company, that's not the smartest move. You're better off stocking away $72,000 so you don't have to worry about your mortgage in 5 years, and investing the rest in the company (you will not be making money for a while, and on top of paying your own salary, you will need to buy advertising).
If the idea is to avoid the interest on your loan, and be completely emotionally free from that debt, than by all means do it. This would work well if you are just going to do consulting since the cash flow swing isn't as dangerous.
I remember when I finally got around to doing the math on my first mortgage and realized I was actually going to pay close to triple the sale price of the house if I waited the full 30 years. The real trick, if you don't want to pay off the whole thing, is to make a lump sum payment to pay down about half of the mortgage early. It's the first 10-15 years on a 30 year where the payments are so interest heavy that you're really just throwing away money.
Get about halfway to payoff as fast as you can though and those payments are a whole lot closer to just paying back a cash balance.
Did you adjust for inflation? Even at today's inflation rates, the dollars you pay in 30 years will be worth considerably less than the dollars you pay today. There's also an opportunity cost issue. Paying off your mortgage means not putting the money somewhere else.
> you're really just throwing away money.
No... you're paying for access to a resource that you don't have yourself. There's more utility in that than in literally throwing the money in the garbage.
I invested with steady 12-14% returns for 10 years and then watched it all get wiped out. The interest rate on paying of debt doesn't change. Granted, at current rates it's a lot tougher to make the argument for mortgage interest vs other types of debt.
Nobody ever shows a compound interest chart with anything other than a steady interest rate (aka - 30 years of 10% return = millionaire!). A single negative or downturn can have a pretty dramatic effect on those projections. If you look at those same projection charts and take the amount you'd look to invest over the first 10 years, but put into into debt payment instead of investing so that you get everything paid off, then take that same amount you would have been investing, start investing it plus the money that you're no longer paying in monthly expenses then you'll find the end of the 30 year period to be an almost identical result. The only difference is that after 10 years you've eliminated virtually any risk of personal bankruptcy.
If you can find something with a guaranteed long term return higher than the mortgage interest then it's another ballgame, but those are pretty hard to come by. Right now dividend investing seems to be the closest approach that generally lets you ignore the actual interest rates over time and instead focus on building cash flow.
But this is one of those topics that is part math, part point of view and part personal comfort level. This was just my perspective.
There was a point a few years ago where liquidating the investments could pay off the mortgage. To me it seems that you can get some of the benefits of the emotional release of being debt free if you have the capability to liquidate and clear debt.
While many people will make the argument that instead I should have paid the minimums and had more money invested with the net effect of reaching the liquidate/pay off point, I agree with the reasoning behind your argument: market volatility will not wipe out debt that has been cleared.
Exactly. NYTimes had an interesting visualization a few years ago that tracked the S&P 500 to show real-world results. It really shows the effect that doldrum years can have on returns:
http://www.nytimes.com/interactive/2011/01/02/business/20110...
I'm guessing you mean that all your gains got wiped out, not that your investments all went to zero.
On the other hand, a lot of people spent years paying on a mortgage only to get foreclosed on and lose everything including their principal. ie, that investment went to zero, or maybe even negative.
There's a lot to be said for paying down your mortgage, but remember that until you've completely paid off the mortgage all of your equity is at risk.
Except the money you spend on your mortgage is year 1 is worth a lot more than the money you spend on it in year 30. Especially with rates where they've been the past several years (our mortgage is 3.25%), cash flow is really the only upside to paying off a mortgage decades early.
In my limited experience, the freedom of not having a mortgage and a car loan, or any other type of debt, far outweighs the benefits of just cash flow. We now have a sense of freedom we didn't have Before. I think it is going to be very individual how one reacts to it, but for us having a minimal mortgage or none has made a big difference for us. Taking risks, having run startups for the last 20 years, this was a major contribution to being able to do this.
I am not saying debt isn't a fundamental part of policy, but in a place like Sweden actually not having more debt than you can handle is possible. http://www.scb.se/sv_/Hitta-statistik/Artiklar/Bostadslanen-...
So it is hard to say exactly who took on that debt, but someone probably did.
For more on how debt creates money, read up on http://en.wikipedia.org/wiki/Fractional-reserve_banking. And the person you replied to is exactly right - our entire economic system only works right if there is a lot of debt to go with it.
Even Mark Zuckerberg has a mortgage...
General rule of thumb when deciding between eliminating debt or investing is to compare if the debt interest is greater than investment interest (investment rate of return).
If (debt.interest > investment.interest ), pay off debt first. Else, invest.
I disagree with this tremendously. With your strategy, essentially what you are doing is buying stocks on margin. This magnifies your profits if things goes your way and magnifies your losses if things go against you.
Think about it this way - Interactive Brokers is an online brokerage with extremely low margin rates which are often half of current mortgage rates (see https://www.interactivebrokers.com/en/index.php?f=interest&p...). Using your logic, the right thing to do is to leverage yourself to the hilt for every penny Interactive Brokers will loan you at 1.63% or less and cross your fingers you make the right investment choices otherwise you're bankrupt.
Buying investments on margin, no matter how it is done, is extremely risky. You might understand those risks and have a high enough risk tolerance but please don't pretend investing on margin is a general rule everyone should follow.
It's the same thing. If it makes sense to keep $300,000 in debt to keep a $300,000 investment then it makes sense to go into $300,000 debt to make a $300,000 investment.
Whether that debt is a mortgage on a primary residence for a tax-equivalent-rate of 2.75% or margin interest for a tax-equivalent-rate of 1.63% makes little difference. This is what people who keep a high mortgage and invest the proceeds of that mortgage don't get. They are doing the equivalent of investing on margin which is extremely high risk. They could lose a large portion (or even all) of their investment and still be left with the debt.
That's not what I meant, definitely wouldn't borrow to invest so much as decide to invest (if I came into a new chunk of money) money on hand.
I'm not sure where the assumption is that I meant to invest on margin - it feels like I'm missing something.
When you do margin trading you take on debt to allow you to buy more stock. In your case, you aren't actually "taking on" debt technically, but you choose not to pay it off so that you can buy more stock.
After all, the scenarios break down to debt + more stocks or no debt + less stocks.
Obviously there are some differences, but I hope that explanation of the analogy made sense. The point is, by investing money instead of using it to pay off debt you are increasing your risk and reward whereas when you pay off debt you decrease it.
You make the world a better place.
If you think you can do better with a different investment then go for it. But remember, someone with a lot more money than you decided that their best bet was to finance your mortgage.
It would have indeed worked out over the past few years. The conclusion for guaranteed or very low risk investment returns is far less obvious and probably has more to do with liquidity and psychological factors.
Infinite Banking (using overfunded, dividend paying, whole life insurance) currently has 4.5% guaranteed floors with actual rates with dividends currently at 5.0 - 5.5%. Lots of other benefits as well, life insurance, and being able to borrow money against your policy any time you want for any reason, no questions asked.
Also, a 4% mortgage is only 4% of the whole balance in the beginning. At the end it is 4% of a very small balance. If you use level payments you effectively cut the interest rate in half to make comparison.
Taking out a $10,000 loan at 5% and investing it at 5% results in a profit.
Year 1 - Make a $1000 payment, $9000 balance (5% is $450). Your investment is $10000 at 5% or $500. $9000 loan and $10,500 in investments.
Year 2 - Make a $1000 payment, $8450 balance (5% is $423). Your investment is $10,500 at 5% $525. $8450 loan and $11,025 in investments.
...
Year 1 - Make a $1000 payment, lose $500 interest for a $9500 balance. Your investment yields $500 interest, but you had to withdraw $1000 to make the payment, so you're at $9500.
Year 2 - Make a $1000 payment, lose $475 interest for a $8975 balance. Your investment yields $475 interest, minus the $1000 withdrawal leaves you with $8975.
And so it goes, down to the end. Compound interest works both ways.
Remember what I said above: somebody thought that investing in your mortgage was the best return they could get. Are you willing to bet against them?
It's simpler and more accurate to say that the interest is added to the loan balance and then payments are subtracted. They don't subtract interest from payments, they add it to the balance. Extra payments don't have any interest applied to them, they go straight to principal.
The comparison though is between paying your extra cash flow towards a mortgage or investing it. You don't take money from the investment to pay the mortgage. You pay the minimum to the mortgage and then invest the difference.
As far as why banks want to do loans, you have to understand how banks work. What banks do is different.
Banks take money from deposits and then loan that out. They pay 1% interest on saving account deposits and charge 4% on loans. They are effectively purchasing something at $1 to sell for $4. That's a huge markup (400%). Of course banks want to do loans. They also have fractional reserve working in their favor. They can loan out more money than they actually have in deposits because the money is created out of thin air.
This is the same model used by savvy investors. They make investments using Other People's Money™.
https://docs.google.com/spreadsheets/d/12NGCBeup3rCygMsSbcOn...
As for the origin of mortgage money, you're forgetting about the secondary market. Lots of loans originated by banks get bundled up and sold off. That's a very lucrative business for some banks, because they can collect fees for the origination and get their money back right away with no risk.
Well, you can take out a HELOC but you're right that's more or less the same thing as getting another mortgage--albeit with more flexibility.
In other words, someone who took a mortgage 4 or 5 years ago are probably now paying close to zero interest, and anyone who takes a new mortgage now has to pay close to 1.5% interest (which is almost completely composed of the margin). And when/if the economy picks up in 3 to 4 years, that person with the 1.5% margin is going to be paying a lot of interest..
It's also very difficult to get a mortgage with a fixed interest at least in Finland. Not unheard of, of course, but the terms are likely pretty bad.
Get an overfunded whole life policy and put the extra money into that. Google "Infinite Banking" or "Cash Flow Banking" to understand how it works.
Current guaranteed rates are 4.5% with dividends it comes out to around 5.5% (in the current market, it tends to follow interest rates very closely). That's 4.5% guaranteed for life from companies that have been around longer and still posted profits through the great depression, dot com crash, and 2008 housing crash.
Gains grow tax free and if you take it out as a loan it is tax free as well. Any money you withdraw is tax free up to the amount you have contributed so far.
You can take out a loan for any purpose, for any reason, at any time. If you don't pay back the loan the company could care less because they are getting the interest and it just comes out of the death benefit. Actually, they prefer you don't pay it back because they make more interest. So it really is win/win. Tax free "withdrawal" for you and more interest for them.
Also, it's a loan against, not a loan from. That means you are borrowing money from the insurance company not your money. The entire balance is still compounding.
And, as an added bonus, you are getting permanent life insurance for your family.
Some risks with paying off a mortgage earlier:
1) Equity in a home earns 0% interest. You're money is not compounding. Got $500,000 in equity. Guess what, that $500,000 is earning 0% interest.
2) Your leverage is decreased when you pay off your mortgage. If you have only 20% down (500% leverage) and your home goes up 10% then you just made a 50% gain. If you pay off your loan then your 10% gain becomes a 10% gain.
3) The money you put into your loan could have been earning interest. Yes, you're paying money on the mortgage interest but the mortgage balance is decreasing while the investment balance is increasing.
You can think of it this way. Should you take out a loan at 5% to invest at 5%? The answer is yes, you will come out ahead. The reason is that you are only paying 5% of the whole amount in the beginning. Towards the end you are paying 5% on a very tiny balance. If you pay in level payments then your loan is effectively costing you 2.5% while your investment is getting 5%. It's net positive.
4) Paying down your mortgage means you have more money at risk and less options. If you have some bad luck and default then the bank gets first right to all of your equity. If that equity is stored in a whole life policy it is protected from creditors (may vary from state to state but most are pretty generous). If the bank stands to lose a lot of money they will work with you and give you some flexibility, lower rate, allow you not to make payments for a while, etc. If they can just foreclose then they will do that. The reason a foreclosure is more favorable when you put in more equity is because they can sell it at a lower market rate and still get their money back. If it is underwater and you have very little equity then they would be forced to take a loss from the foreclosure.
5) Your mortgage interest may be tax deductible depending on your circumstance. You are giving that up.
Todd Langford has a really good series of videos that talks about finance and opportunity costs:
Here's the really short guide to life insurance: http://www.reddit.com/r/personalfinance/wiki/insurance
Plus there are the tax and loan benefits of WL. They are inferior with 401k and IRA plans. You can't take out a loan whenever you want. You can only take out a certain amount (usually up to 50%) and only under very strict circumstances. There are maximum contributions with 401k. No so with WL. 401k's are taxed as ordinary income. There are more fees over the longer run with 401ks (2-3% every year vs just high front load with WL). You can't withdraw before 59.5 without penalties (except for 72t). There are strict provisions on when you have to pay the loan back.
With WL you can take out your money whenever you want with no penalties. You can take out loans whenever you want and pay them back whenever you want or just not pay them back at all. Most smart people will just take out loans against their policy and effectively access their money tax free. You can't get that with 401k and IRAs.
Taking out loans against whole life policies isn't something I was aware of though. I'd be interested to know what type of rates you could get with the loans against that compared to home equity loans or equity lines of credit that you can also use to get at the money you put into paying off the mortgage if you need it.
Using the numbers you're putting out here, if you put 20% down on a $500,000 home ($100,000 while borrowing $400,000) there's a couple of discrepancies.
First, paying off the mortgage early. You're right, once it's paid off you will be earning 0% interest. Assuming you don't pay it off early and go with the full 30 year schedule and I'm going to assume a 4% interest rate here, your total payment price will be about $875,000. By paying off early you're eliminating those losses. It's not that you're earning 0%, it's that you're not losing over -100%.
If your home goes up 10%, regardless of whether it's paid off or leverage you actually didn't make anything. You don't make anything on real estate until you sell it to cash out. Until then, any gains in a home that's paid off or mortgaged are identical. The only difference is if you didn't put 20% down and were also paying extra for PMI then the increase in value could get you out of PMI.
Yes, the money on your loan could have been earning interest. Instead it's losing interest so you need to find a guaranteed return higher than your mortgage rate. Guaranteed is the trick there. If you can pull it off with a whole life policy, then great. Without the guarantee market volatility comes into play. If you're a person who is comfortable taking out a loan to invest in something else, your perspective will clearly differ here though.
#4 is admittedly a very good an interesting point that I had not considered at all.
Regarding the mortgage interest being tax deductible, that only gets you back the equivalent you would have paid in income tax. 80% of it is still full interest.
I'll definitely look into the videos and whole life policies though. Anytime I talk about putting money into paying off a mortgage early I always have an equity line open on the house so that I can pull most if it back out for emergencies, including making the actual mortgage payments in the event of a lapse in income for some reason.
With that, available it makes it easier to avoid the foreclosure because you've got a way to use the equity to avoid default and by yourself time. You just have to open the line of credit when you aren't having bad luck.
1) It can tie up cash flow. If you don't make the minimum payments your policy can "eat itself" until it lapses, at which point you lose that money. That being said, there is a large degree of flexibility when designing policies. Set the minimum low and contribute more. Fall back to the minimum when times get hard. If you are further into the policy it can self-fund (basically the dividend payments can cover the premiums and then some). At that point, you don't need to continue any money whatsoever to continue the policy. Most people still contribute money though since it is effectively free interest.
2) It has high load in the beginning. It typically requires 7 years just to break even. The first 3 years you typically will be losing money. It's only designed for long term.
3) You have to be able to qualify for insurance. If you can't you can insure someone you have an interest in parent, child, spouse, sibling, nephew, etc.
You're basically trading a little bit of flexibility with your cash flow in the beginning. If that money is going to be going towards investments anyway though, it really is a good strategy.
Also, you can always take out a loan against in the policy to invest in something else. If you have a decent investment you're actually getting increased leverage.
See this video for how this strategy can be used with real estate investing to get much higher returns:
Don't fall into the trap of thinking this. It is the case some of the time, but not all of the time.
When I first started working in tech in the mid-90s, it was only a year or two before I was considering going back to school in music or to get an MBA. Since about 2004, I've known that I would like to abandon the tech industry. It is now 2015. I have dreams of opening a restaurant, retail store, starting any kind of business, becoming a professional writer, etc. But, this is where I am.
All that said, I read the tech and science news everyday. My relationship with tech is love/hate. I can't get enough of it and will obsess about it or coding something at home, but I know it makes me unhappy.
I feel I'd be better off just being a caretaker of some sort, or in some sort of service industry. I've talked to several developers over the years that dream of being a groundskeeper. This is reality for some of us out there.
I'm personally dealing with it by losing weight and working towards the goal of being independent from an employer.
Here are some ideas for those that feel burned out or hate their job:
* Get a hobby OR focus on your family/self and stop trying to be so much.
* Pretend you are going to quit and seriously look into how you could make your dream happen, even if it seems financially irresponsible.
* Keep a watch on cheap plane, train, etc. tickets to figure out how to escape your life, or think about where you would go to get away from it all.
* Find a place where you can go to just chill-out and think.
* If you have sleep apnea or feel tired a lot and don't dream at night, consider going to a doc to get CPAP or an oral device and dedicate yourself to losing weight.
* Talk to a psychiatrist and get some meds.
* Find a friend/person you can talk to about it.
* Do your best to stop thinking negatively for some period of each day, or all day, even if it is so normal to be negative that it seems fake not to be that way.
* Don't be afraid to cut back hours at work. If they fire you, so what. And if you think they would kill you if you stopped, run away. You will be ok.
I've talked to several developers over the years that dream of being a groundskeeper.
A little about this. I worked plenty of my summers at a country club (my dad is a superintendent) and there is something to the work. There's some really shitty jobs (how about weed-eating the the creek banks in 90 degree temps and 90% humidity?), but mowing grass can be really enjoyable. When working at nicer clubs there is a certain amount of pressure to cut straight and even lines on greens/fairways/tees which is a nice little challenge and rewarding to look back on when you've done a good job (its art). Being out in the sun and working your body a little bit makes a man feel good and you're done around 3 (you start at 6).It's funny how when we're young we'll look at a job like that with a sort of scorn as if we've got better things to do, but then as you get older you long a little for those nice summer days of cruising up and down the fairways, just you and your machine.
I don't think I'm ready to quit tech anytime soon as I do enjoy it and feel like I might eventually make some lasting impact somewhere, but thinking ahead towards "retirement", there's something appealing about the idea of heading down to the local country club, filling out an application and collecting my $10/hour to cut rough 3 days a week.
As much as I loved that job, though, there's no way I could do it for a living. There's a reason it's only high school and college kids that do it -- the pay is horrible. Which is honestly fair, since the job's not very intense.
But there's a reason a lot of guys end up as golf course rangers in their retirement years.
Totally... also, there are some places that hire summer students and pay kind of lousy money and have rough conditions. But there are other places that will prefer to hire someone older, stabler, long term, and recognize that they won't be able to hold onto such a person without at least paying a living wage. That could be alright. More like $15-20 an hour for relaxed, reasonably well respected work with plenty of exercise and outside time.
The problem with a job like this is the lack of variety. Cruising up and down the same fairways for the seventeenth year can really get to you.
Do you have experience with this? I'm afraid if I'm on meds, I'll end up neglecting my life even more, rather than taking these strong hints from my mind and body that this isn't the way it should be.
I would absolutely love to hear any perspective on this from anyone.
I was afraid to go on meds, but I'm very glad that I did. I have stopped neglecting my life, because I am able to go about my day without that 1000 pound rock on my back. It makes life much, much easier.
They are not "happy pills" in the sense that they make you relentlessly optimistic, but they take away the incredible pessimism and irrational despair that characterizes depression. I still have good and bad days, but they are related to actual events and not just relentlessly bad for no reason.
They are not without side effects (which thankfully for me have been very mild and have gone away after a few months - mild nausea if I take them on an empty stomach, some sexual stuff for a few months) but on the balance it's been incredibly positive.
You might hear some doubts about their efficacy, but from what I've read it's proportional to how badly off you are - the worse you're feeling, the more likely it is due to a chemical problem rather than just everyday sadness.
I wouldn't be afraid of neglecting yourself more. It's difficult to describe the effects of antidepressants, as their onset is extremely gradual (weeks to months) and it's been a while for me, but they basically shift the average mood up from "everything is kinda awful" to a more neutral equilibrium.
Antidepressants aren't the only option. Therapy is also effective, and if you feel that you're neglecting your life it does give you a place to talk about it.
I was trying to do a class a semester and work at the same time at a startup as a junior full stack engineer for something I truly couldn't care less about (advertising).
I think the key thing that's making me look forward to my next position is 1: I found a spot where I'll have an office thus eliminating much of the distractors that are present in these ridiculous open office layouts. Creative people are distracted very easily [0] and the open office layout was really destroying my love for being an engineer. It was very funny because when I'd come home I'd be exhausted, but if I sat and tried to do my homework I'd actually get more done when I was exhausted because there weren't 100 people walking around me.
2. The office has a window. I hated working in this cramped, open, shared space we had for a while. The closest window was probably 25 feet away in a small conference room. And there was nothing on the walls.
3. This new position that I haven't quite accepted yet gives me the opportunity to write one day a week to create entries for a technical blog and writing is something I'd like to do anyways so the opportunity to be able to contribute to the tech community in that manner is tremendous.
4. This is a recruiting firm so I'll actually hopefully get to see some people get hired because of the things I do! How neat to have a real world impact.
5. They do lots of charity events so I can always respect that. Lots of companies focus on the parties but parties are just a way to escape in a lot of ways, I think giving back will feel tremendous.
6. I'll be helping to work out what to do next with the CEO, this could potentially be stressful, but I really love the idea of having the opportunity to develop performance indicators, plan out entire systems, and build a team. This allows me to be more than just a cog in the machine or one man on a team, it allows me to feel like a real god damn fuckin engineer. A contributor. I have so many ideas all the time, why not be employed somewhere where I'm more than just feature X, maintenence Y, and feature Z ad nauseum?
That being said there are a few downsides such as not being able to have a close mentor. I am still relatively junior. This means I'll have to work a bit harder on my own in order to stay fresh and keep building my skills which means some homework time with Code Complete and other resources like that. I may ask for them to hire me a mentor every fortnight for half a day so that I may improve and to keep the quality of everything I do for them up to snuff.
So, while I'm a bit apprehensive about starting up again (thats a lot of weight on my shoulders!), I'm very excited to start at a place where I think I'll really be able to have an incredibly positive impact in the environment that I really feel will have the most positive impact on my performance and well being. If I'm easily distracted by people slurping sodas, why is it that most of the choices for offices for tech workers force me to accept that the only acceptable place for me to do incredibly complex engineering work is near people making jokes and slurping sodas?
I may have taken a small pay cut (although bonuses will hopefully make up and then some if I really shine) but for me to finally have the opportunity to do engineering work in an office, and to be a part of the decision making process, and to have duties beyond just feature A and feature B including nontechnical technical writing, that excites me.
So I guess my advice is, maybe instead of seeking meds (although therapy on its own I'm sure might be incredibly good (I've not been yet (although it wouldn't surprise me if I probably should have))), maybe do some introspection and figure out exactly what it is that is draining you day after day and then try to change those.
For me, I think, it was an inability to get into the zone at work, thus making me spend so much of my energy just on maintaining a decent level of focus. When I'm home, I don't need that and the time flies whenever I actually sit and do work. To get rid of that energy drain should be tremendous for me. Maybe you guys will see some tech articles by me in the future, I sure hope so ;-)
" I stay up hours later than I mean to, not even doing anything, just trying to put off sleeping — because the next thing I experience will be waking up and going back to work."
This is straight up depression. We need to stop using office-cliches like "burnout" and start addressing the very real mental health issues in the tech industry. Maintaining my mental health is like staying in shape, eating right, etc. Only as an adult have I learned how much work it takes to stay mentally healthy and not fall into these traps. Things like pacing yourself, recognizing when you're stressed, being able to say 'no,' taking enough breaks, having a dialogue with your boss/clients on what your realistic expectations should be for this project, self identifying with your job too much, not having outside interests outside of tech, etc all matter.
Techies seem to love stress. We're competitive, asocial, difficult, etc. No wonder stuff like this is so common. How many high profile tech suicides have we had in the past few years? We're doing the opposite of staying mentally healthy. Turns out human beings are incredibly delicate creatures, but no one wants to admit it as to not look "weak."
The funny part is I find myself dreaming of going back to stocking shelves at a grocery store like I did in high school. I'd never make enough money to support myself doing something like that though. I romanticize the Peter Gibbons move to go work in construction even though I know I probably wouldn't be happy doing anything. I long for stress free days. Especially when most of the stress I experience is just completely artificial or manufactured by my boss or company. Most of the problems I have at work shouldn't bother me after hours but they never leave.
It's getting worse though. I've soon reached the point where I really can't give a rat's arse about my job. The software I get to develop doesn't help making the world a better place. It doesn't help people, other than making rich people richer. It doesn't advance mankind. Not does it bring joy or excitement to anyone. It's just so pointless, drab and dull.
I didn't always feel like this. I used to work for a depressing place. But since I started working for my current company, the culture, the people, have made it worthwhile.
> The symptoms of burnout are similar to those of clinical depression; in a study that directly compared depressive symptoms in burned out workers and clinically depressed patients, no diagnostically significant differences were found between the two groups: burned out workers reported as many depressive symptoms as clinically depressed patients. Moreover, a study by Bianchi, Schonfeld, and Laurent (2014) showed that about 90% of burned out workers meet diagnostic criteria for depression, suggesting that burnout may be a depressive syndrome rather than a distinct entity. The view that burnout is a form of depression has found support in several recent studies.
Of course, he still tried to pursue them in his spare time but then he just didn't have enough time to do them as much or as well as he wanted.
Is this really burnout though? I ask because I relate to much of this situation, but I actually love my job, my company, and my coworkers. It's very interesting and I am very happy working. I just wish there were more time because there are still other things I would like to work on and I'm only getting older.
I don't mind inheriting other people's problems, and I don't mind coming into the office - I find it's helpful to swim with the school, so to speak - but sometimes I can better solve a problem out on a good bike ride or will have an epiphany about team dynamics while playing basketball, and after that, the next hour of work is worth more than two weeks of sitting around.
It's difficult to quantify, it's difficult not to get lazy, and when you _fail_ to achieve your goals, people feel better if they watched you toil. I think it's human nature.
Maybe if I did something part time that could work, because I don't want to spend more than 20 hours a week working.
(Shameless plug: one of my arrangements is ending soon and I'll be taking on more devops and automation work; at every place I've been I've added pretty big multipliers to engineering output in a fairly short amount of time, and my email's in my profile if that appeals to you.)
Yelp's business model is quasi-extortionate. Even if the work environment itself was OK, writing code all day for that purpose would certainly leave me feeling pretty crappy about my job. That kind of thing doesn't wash off very easily if you have a conscience.
(Exceptions, anyone?)
We programmers are quite lucky. At its worst our work is only frustrating. And we are well compensated, usually.
Don't get me wrong; programming itself can be lots of fun. But what you get paid for isn't the fun stuff. I doubt there is anyone who gets excited about upgrading and debugging aging Java applications.
a) Even if it's a job I would do for free, you need to pay me because I need money in order to live.
b) Even if it's a job I do because I love it, you need to pay me to ensure that I do it at the pace and with the guarantees you need.
I wouldn't call either of these "nasty", although the first is arguable at a global scale.
It's also a question of time management. I can only do N things in a week/month/year. If you want one of those things to be your thing, you're going to have to convince me to priorities it over other things. Money is a quick and convenient way to do that.
Unfortunately, I can't pay my rent with 'delightful work'.
There are myriad reasons why people form firms and a body of literature around it. Start with Coase's Nature of the firm :
I don't believe this is true. Almost all people need to earn money to live a reasonable lifestyle, society as it is.
Considering the number of hours in the day: enjoyable, non-nasty tasks may be off the radar unless they are paid.
I feel like what you are saying is an excuse for employers to treat employees poorly. "We're paying you, so..."
It doesn't have to be this way.
No, generally speaking, it just means that the work you do has some value for the people paying for it, since they need it done and they lack the skill, the time or the will to do it.
It says nothing about how fun or stressful or nasty the work is for you (it might be fun for you and boring for someone else).
How much fun? Whatever you think is fun, I'm pretty sure I can think of something more fun. That's not me saying I know what is fun, just saying it is a subjective term. Also, what is fun today may not be in 2 weeks time.
I think this misses the point that a) you need people to do the fun awesome stuff at scale (you can't do everything), and b) you may not have the skills to do the fun awesome stuff yourself.
Practically speaking, I think you're right, but you don't have to accept that as the status quo.
>> If it were actually fun, people would be doing it for free
The trick is combining fun with career. Doing fun things for free is not scalable as we do kinda need money to survive.
Even if someone loves doing something they can still ask to be paid to do it for other people
Everyone who works in finance just lol'd.
But seriously, relative to the value a good hacker adds to the business, "huge sums" is probably not an accurate characterization of engineer comp.
I think the reality is probably more complicated. Probably Yelp pushes to much work on its employees and the author allowed it to happen.
To be honest, I think more tech jobs are toxic than not; it's very hard to find a good tech job, and even when you do, a good tech job can turn toxic as quickly as a manager leaving. I've always been aware of this and tried to put myself first, but it's not always an easy or even possible thing to do.
There are certainly roles where software can be an end itself. Academic paths focused specifically on software, open source, perhaps some R&D shops (think Guava guys). But in most companies it's a means to an end.
This article makes some good related points on the topic of technical debt and what amount of it is optimal for enterprises.
http://bigeng.io/post/118399425343/why-the-way-we-look-at-te...
Yeah, I think that's true.
If you work a salary job and don't feel up to it for at the moment, you can coast for half a day and get your shit together. On your own, that's a half a day of lost money. My brain needs breaks, and I just can't do code 40 hours a week and not burn out. I've tried. It just hasn't worked. So that downtime is a requirement, and you lose money for it.
The best part is that a decent programmer can make a moderate income working relatively little. Or you can make a lot of money if you work very hard. It's your choice at any given moment. But don't underestimate the drain of having to work for one to three people at a time, managing your time, and making sure the pipeline doesn't run dry all at the same time. It's pretty annoying/stressful when two important clients have deadlines on the same day. It's not like you can just pull in more help. Or if you can, you then have two problems - you have to go out and find the help, manage it, etc.
I don't think I could bill more than 25 hours a week and keep my sanity. But I'm not exactly a workaholic, and 25 hours a week is a pretty good living.
Milage may vary.
Also: I found it extremely difficult to date or maintain a relationship while consulting.
A full-time job offers some protection from volatility. I'm not going to pretend that nobody has ever been laid off from a full-time job, but if you work contracts you have ZERO job security. And contractors are the first thing to go in cost cutting mode.
If you go the independent contractor route, make sure your emergency fund can cover 18-24 months of expenses. Also, recognize that while the pay may be higher, if you're in the US you also are on the hook for 8% payroll tax that your employer would normally pay on your behalf.
If you go this route, you need to adjust your definition of "well off". If you are looking to keep pace with your friends working at Google and making $150k, that's pretty unlikely. But you can probably pull $60k and still meet your savings goals, and $60k/yr is more than enough to live comfortably on. And that number won't be static; some years you might make $100k and some years you might make $20k. You need your savings to be able to survive the lean years.
All that said, based on your comment I assume you have no work experience. Why would you hire yourself for a short-term contract over someone else? Go work somewhere full-time for at least a few years until you have a good answer for that question. You almost certainly have a whole lot of tradecraft to learn as well. Once you've built up some experience (and some contacts) you can think about contracting.
You are on the hook for more than just that. Federal, state and often county taxes (gross receipts, business licenses) will need to be paid. Plus you will need to acquire health insurance, fund your retirement, pay for needed business expenses, etc. Not to mention, most contracts you sign, will require that you also carry some form of business insurance (errors and omissions for example). All these things will slice and dice your hourly rate down severely.
The problem is it's easy to get worse than that add a 1h each way commute and 10 hour days, and skip vacations that's half your waking life. ~(60 * 50)/(16 * 365) And of course you need a few hours a day just for prep time and meals etc so quickly you only get free time to relax on the weekends.
This is just my opinion and I can only speak from a US perspective, but yes and no. The ones who are able to do this have already gotten a 10+ year head start and have built up a deep network from which to source work from. The ones who are starting out today are more than likely having a very tough go at it. Competition for contracts is much more intense compared to 10, 15 years ago and you really need to bring more to the table than just "javascript developer" or "wordpress consultant".
I know there exists this love-affair on HN with running off to become independent contractor, live on a beach writing code and making your own hours. I'm not saying it's impossible, but the reality though is that in the end you are building a business (even if it's just you). All the energy, time, risk and money that it takes to run a regular businesses will be just the same with running your own consultancy. The downtime you think you will have to yourself in-between contracts will be eaten up by having to find the next contract. If you happen to unfortunately live in or near a city with a high cost of living, the pressure will be even more intense.
The thing you have to understand about contracting (and really any paid work, I've noticed the same effect as a big-company employee) is that people will pay a large premium for a track record of delivering working solutions. When you first start out, your asset is "I know this programming language", your clients just want someone who knows that programming language, and you're competing with all of these people on oDesk and eLance who also know that programming language. After you've delivered successfully on your first couple projects, your asset is "I delivered on these projects and it made my clients $X", your clients want someone with a track record of delivering on projects with minimal handholding, and you're competing only with other people who have had wins of similar magnitude. The supply of these is much lower and the demand is much higher, and so you can charge much higher rates.
I would avoid oDesk type rates at all costs. You're better off going to small business networking groups and making simple brochure sites and wordpress installs for $1000-$2000 a pop.
When we reach a threshold of income and financial stability, some of us forget to evaluate why we're working.
As it turns out, I haven't reached this threshold yet so have to carry on working, but it is probably a good idea to look around and ask "why am I working?" if there's no real need for fulltime work.
I would do it once you have a steady foundation and some savings to fall back on should these contracts not materialise for a while.
Working fulltime is alright (it means you can be stable for a while) but not all of us are paid huge sums :-(
That leaves the contracting route. The issue there is you now end up a salesman. The people I know who are good contractors are businessmen first, software engineers second. They know how to close deals, attract clients,and have excellent "soft skills." They are mediocre developers. Not because they couldn't be excellent developers or were excellent developers before becoming contractors, but simply because their work day is no longer centred around engineering. This is fine if what you want is to run a business and be a businessman. Not so much if you're trying to escape the trappings of business to find more time to devote to focusing on just developing.
This is all anecdotal of course, I'm sure there are contractors who see a wide range of experiences that differ from mine.
Or being in a job or a situation that didn't fit them and they exceeded their capabilities or their ability to deal with stress.
Yelp, or for that matter any job, is not an elementary school that you are assigned to that you can't change because you are 6 years old. It's a job. People have all sorts of capabilities that allow them to work or not work at a particular career or company.
I agree.
Boys and girls, as you likely know, burnout is real. But, you can manage it. I'll tell you what I do. Here's the secret:
Put yourself first.
Now, that sounds quite selfish on first-blush. What exactly does that mean?
For me, it means I take care of my health, first and foremost. Before the day is started, before the family is awake, I head off to the gym to be with The Iron. Henry Rollins wrote about it much more eloquently that I can, so I urge you to take a moment and read his words [1].
Once you've been with The Iron, nothing can stop you. Sure, you will still have rough days. But, I will tell you that, having been with The Iron, you will know that there is nothing that can bring you down. You will know that you have earned it for yourself on that morning. There is very little that can shake you when you know that. When all else fails around you, when software fails, when management fails, when fear, doubt, uncertainty and self-pity come rumbling toward you like a freight train, when friends forsake you... I am here to tell you that you will gently remind yourself in the midst of the storm:
"I rolled out of the rack to bring it. When most of the world around me was asleep, I paid the price [2], and that is what truly matters today."
And, over time, you will build that attitude, and you will find that you are unshakable. You will find that you will manage your time to make it happen. You will find that, even while you work hard at work, you will not let it control you. The work will always be there; the inbox will always be full, so put yourself first.
You will find that you will start eating right, because you realize that there is a price to be paid in order to stave off feelings that certain foods can cause. The roller-coaster of junk food and caffeine will fade from your life, because you will find that they have a net-negative impact regarding how you want to feel and perform. You may even find that you want to start meditating, to balance the mind.
I know it's old advice. I know that it sounds cliche. But I urge you to try it. Do it for yourself. If you can't do mornings, then do it when you can. Mornings just set the tone for me, but do what works for you.
Take time to put yourself first, every day.
[1] http://www.oldtimestrongman.com/strength-articles/iron-henry...
[2] I'm very fond of Vince Lombardi's words here:
Football is a great deal like life in that it teaches that work, sacrifice, perseverance, competitive drive, selflessness and respect for authority is the price that each and every one of us must pay to achieve any goal that is worthwhile.
To achieve success, whatever the job we have, we must pay a price.
Success is like anything worthwhile. It has a price. You have to pay the price to win and you have to pay the price to get to the point where success is possible. Most important, you must pay the price to stay there. Once you agree upon the price you and your family must pay for success, it enables you to ignore the minor hurts, the opponent's pressure, and the temporary failures.
I've never known a man worth his salt who, in the long run, deep down in his heart, didn't appreciate the grind, the discipline.
A man can be as great as he wants to be. If you believe in yourself and have the courage, the determination, the dedication, the competitive drive, and if you are willing to sacrifice the little things in life and pay the price for the things that are worthwhile, it can be done.
Actually, to achieve success, we must do the job.
Some people find lifting heavy weights and whatnot helps them do that. I certainly have. Others find it's quiet contemplation under a tree. I've done that too, in another place, not here.
Time and chance happen to us all, and having a deep toolkit of techniques for dealing with the truly astonishing variety of slings and arrows the world can huck in our direction is at least as important as our dedication to any one of them. Because when we fail--and we will fail, if we truly strive to achieve anything interesting or important--having a different set of techniques to catch ourselves can come in handly.
For myself, the secrect of my success is being able to go on in the certainty of failure, because taking one more step forward is worthwhile, even when I know the destination is unreachable. And sometimes I'm wrong, and reach it anyway.
I wasn't aware of any of the references that you used (e.g., "Brodin", "Wheymen") until I looked them up just now.
I suspect that you're joking, but for the benefit of other readers regarding my intention:
I would personally find it terribly unfortunate if what I've sincerely written in my original post above were to be misconstrued in any way with the Brodin references, which come across as a part of "bro" culture; this was categorically not my intention.
Strength training is for everyone, and both the physical and mental aspects of exercise of any type (e.g., cardio, strength, yoga, etc.) are beneficial to everyone.
All the best :)
The author may find the change refreshing, but I've never been as burned out as I have with my own company. It's like taking all of the other stuff, then adding an order of magnitude to the stress level. This comes from having responsiblity for everything, including the pressure of making it work overall (i.e. the dark side of the control and "freedom"). As well, you can frequently feel unappreciated by customers, staff, partners, etc. And, I've found myself far more sensitive to this than to the same from any manager or employer I've had.
Also you probably have other priorities in life so remember those every day rather than look back two years later saying "how did I forget everything else in my life?" It can be done. Stand up for yourself, and what you want out of life.
[I've worked 20 years in Silicon Valley, currently at Netflix.]
1) Developers cannot reliably estimate software timelines. That often comes with experience and age, but many never learn that skill. It is a skill like programming itself. It comes with practice.
2) Break down in communication between management (product managers) and engineers who are writing code.
On the first part. Usually junior software developers simply have not had experience shipping software in a full software cycle. From initial requirements, to design, to deployment, to maintenance. They did projects perhaps in school and homework exercises. Later some eventually learn that they chronically underestimate the time, and just start adding a factor (2x) to what their initial estimate is. That is a step up. But many never learn. There is also a race to the bottom -- the ones that promise shorter timelines get promoted and seen as smarter, more aggressive, better team players. The ones that are realistic are seen as maybe "taking it easy", "not working hard enough". Then everyone sees who gets promoted and show doesn't and learn -- "Aha I need to be like cool cowboy coder Joe over there, he is now running his own department". And so it spreads. Notice how there is often no feedback loop to punish the cool cowboy coder after the project is not delivered on time.
On the second part -- even if there are engineers who know how to estimate the time, nobody asks them. Because the person who promised the feature already played golf with the customer and told them they'll get the new shiny toy in 6 months. That person might have never been a developer, they might have an MBA or where a football coach or something like that. And they usually have a higher position in the company. So they promise and then everyone is pushed to deliver on that deadline. If it fails the failure is usually attributed to the engineers doing the work because they haven't worked "hard enough".
This is true. But this is the problem that Agile is supposed to help solve -- with the caveat that most companies don't do true Agile. I guess people are now calling it Continuous Delivery, but the idea is the same: you don't tell people when a feature will be done, only when you will be working on it. But even then, even with experienced estimators, the rule of thumb is to add 15-30% to their estimates.
> 2) Break down in communication between management (product managers) and engineers who are writing code.
Totally agree that this is very common. Unfortunately, the best way to solve this is with process, and developers hate process. But developers often don't realize that they can use the process to their advantage: a strong engineering lead can refuse to accept poorly defined requirements. That allows you to push back on product to force them to define the requirement better.
IMO this breakdown is caused by just that: developers who say "oh yeah, I can do that", then start working on the problem and realize that there are a lot of undefined edge cases. If they promised it to the client in 6 months, fine, but define what "it" is.
From the perspective of an MBA, if we have to bring in a contractor to implement it, fine. I know where I can go to hire certified rockstar contract developers at $200/hr, which I will do if the client is lucrative enough. There is no feature I can think of that would take more than 6 months of development.
In a top-down management style, your so-called "Lead Developer" is just the first head on the chopping block. They're leaders of puppet regimes. If the real leaders don't like them, they install a new one. It comes in many forms: layoffs, "performance" related dismissal ("you're not getting enough done!" because of all the rejected requirements docs), even reassignment to "re-engineering initiatives" that have no real chance of seeing the light of day.
Finding a management infrastructure that actually cares about feedback is incredibly rare. I have personally never found it, in 10 years across 6 companies. No amount of process is going to change a bad manager.
You talk about a business like it's supposed to be a democracy. It's not. You need clear direction, and democracy is messy and opaque if your company is too big for you to know the name of everyone who works there. Now the way you describe top down management is a bad implementation of it -- executives need to work to develop their middle managers -- but every company eventually has to convert from a democratic decision making process to a chain of command.
I've been working recently with a number of household-name startups that are having this exact issue. They've hit a plateau in their growth because the culture is dead-set against top-down management, but the company is now too big for people to self-organize. Engineering initiatives that would have taken 2 months in startup mode now take 2 years because they have to go back and rebuild half their systems to make them flexible enough to support the multiple use cases that they now have. Or because they were a startup, they didn't worry about geographic redundancy because that wasn't part of the MVP. So it was put off for later, and now they're a billion dollar company operating out of a single datacenter because their databases and applications were built without multi-datacenter being a requirement. Product can't even reliably tell engineering what features to implement because nobody on the product side has enough authority to shout over the crowd.
So having an infrastructure that cares about feedback is good, but the infrastructure also needs to empower people to do something about said feedback.
For every SV-brand startup, there are dozens of small-time consultoware shops serving their local market. They're the kind of places that have been around for 20 years and still only have 100 employees each. They can't ever seem to grow beyond that size because the one-way communication flow from sales to development keeps them in massive technical debt.
I agree with your second assessment, but it's more of an issue with the consultoware business model than anything. Most consultoware shops start up thinking they're going to get hockey-stick growth, but it turns out every implementation is super-custom and it ends up as a consulting business. Many companies fail to realize this has happened, and end up operating like a software company when they should be operating like a professional services company with hourly billing. Under a professional services model, if a customer wants a feature, you can quote them a price for developing and implementing it. Tech debt gets dealt with because it becomes a bottleneck for revenue growth when you can't charge clients to add functionality.
Estimation (i.e. pulling numbers out of your posterier) is not necessary (or usually desirable). What you want to do break down the problems into roughly equal size pieces -- the more the better. Each piece will take a certain amount of time. You can measure this and record the average. This becomes the estimated amount of time for each piece. Obviously the estimate has an error with some kind of distribution (my sleep adled brain is unable to remember what a likely distribution for the amount of time something takes).
It doesn't really matter because the sum of all the pieces will give you an estimate for the overall completion time for all the pieces. This estimate will have a normal distribution.
If you write down a list of all the pieces in priority order, you can draw a line at one piece of functionality and determine when it is likely to be completed, along with error bars.
Of course you are unlikely to actually to do the things on your list because if you were able to correctly guess all your requirements before you started the project then you would be in fantasy land. So what you do is tell the stake holders that this is what you are going to do unless they tell you that they want to change their mind.
Of course when you start they will say, "We're not going to change our mind. We're 100% certain that this is right". To which you reply, "Excellent". Every 2 weeks or so, once you have done some work and can show it to the stake holders, you should also have a list of new ideas. You should explain these new ideas and say, "Do you want to change the list to add these new ideas". Whether they say "Yes" or "No", you should reply with, "Excellent" and carry on.
Often the stake holders will have an "emergency" and decide that they have new opportunities which change your list. To this you should say, "Excellent" and change the list.
You should release whenever your stake holders are happy to release.
In this way, you have given the best estimate you can to help the stake holders plan. Any changes to the plan will be made by the stake holders themselves at the earliest possible time. You don't get caught up trying to deliver at any particular date because the stake holders are aware that they are changing the deliverables. You may have to ask them where they want to draw the line and give them new estimates for completion every time they change something, just to reinforce this idea.
The really tricky bit is breaking the work down into small enough pieces. This is very, very difficult and requires a lot of experience. The sucess or failure of the above will very likely rest on the ability to do this, so expect to pay a lot of money for someone with a proven track record doing it. It is often worth hiring a consultant if you have nobody on staff with this experience.
Hope this helps.
Disagree. Developers can provide reliable low risk estimates that will most certainly be rejected or truncated by management.
The problem is not estimates, the problem is every manager fantasizing that their Captain Kirk strategy,
"I'll have it fixed in 4 minutes, Captain"
"Do it in 2."
is some form of motivating leadership.> the problem is any manager
If your greater point is that some developers really are poor estimators, I agree, but all of them operate under pressure to err on the optimistic side.
1. Every manager does that
2. Every manager that does that is the problem
I'm specifically talking about projects which go like this:
1) A set of high-level business requirements are put together, and given to a tech lead to estimate.
2) The tech lead's estimate, based on the requirements as-given, is used to determine a budget for the project, and probably a schedule as well.
3) Once the budget and schedule are approved, the project commences.
4) As development begins detailed software requirements are worked out, which usually exposes holes in the high-level business requirements that need to be fleshed out as well.
5) The estimates are never updated, and any attempt to increase the budget due to the new requirements are seen as a sign of failure.
What I see happening in #4 is two kinds of scope creep. The first kind is the sort everyone is familiar with: a requirement was missed, a new feature needs to be added, and since this wasn't in the original budget the budget needs to be increased. It's easy to identify these new/changed requirements, easy to see the big chunk of time needed to implement them, and easy to make prioritization decisions about the new requirement vs the other original requirements, so that maybe something can be dropped in order to avoid increasing the budget.
But there's a second kind of scope creep, and it's insidious. It comes from turning high-level requirements into detailed requirements into implemented and tested code. Every decision a developer needs to make about how to implement a feature is an implicit detailed software requirement, and you just can't know how many of those decisions will be needed or what their impacts will be until you get into the details. The time needed for these all add up, and I consider them to be scope creep because they aren't part of the high-level requirements used for the estimate and budget. We try to add padding for them because we know they're going to happen, but if you add sufficient padding across-the-board for all of the detailed requirement decisions that might be needed your project will never get approved. So we pad insufficiently, hoping that some of the requirements will be easier to implement than we estimate to cover the ones that aren't, and we don't manage this kind of scope creep at all. It's invisible, because it's just adding a few minutes here, a few minutes there, until our estimates have been blown away and we're over budget and we can't really say why.
The two types of scope creep is a good observation, I'll have to remember that idea.
These are all real human struggles. I have them for sure. I just wish you find a place with self aware leadership that endeavors to keeps these emotions in check. Usually startups with leaders who have families are a little better because their family essentially forces them to focus on someone else, at least a little.
3) Developers are expensive. If you have a team of 5 developers each being paid a salary+benefits of $1,500-$3,000 per week and they tell you a feature will take four weeks, management does a little mental math and says holy shit, that's a lot of money and it's understandably tempting for them to want to see if that team really needs four weeks, or if maybe it can be done in three weeks. (Meanwhile, as you said, the feature will probably actually take six weeks because developers cannot reliably estimate...)
4) Developers have a hard time saying "no." We have a culture of working crazy hours. Management knows this and often intentionally or unintentionally exploits it.
I am probably naive, but I think if we say: the situation is now X and I want to be Y, we can find a way to get there.
This works in our context (and has worked for many decades apparently). But I doubt this scales to a large size.
(Unless you work at Palantir, in which case I feel silly).
Of course that was just one variable and it wasn't isolated. There could have been other factors and reasons for the said result and it might not have had anything to do with "no MBAs" rules.
I just presented it as a reference or what others do as a "solution".
I suppose it depends on the business model the software is part of. If you want a pace that is compatible with proper engineering I would suggest looking into companies that deal with products whose lifetime is measured in decades such as CAD vendors or other highly technical software.
All freshmen to software engineering have this weird idea that a piece of code can ship once it builds and just shipping as much code as much as possible is the best road to maximize productivity.
Until they get hit in their faces time and again by recurring bugs and they start to understand that the way to manage long term software profitably is by making sure as few bugs as possible leave the software engineers desk, at which point best practices and long term planning starts to take hold.
That's at least my view, YMMV to a large extent, probably.
Just like juggling is a matter of throwing as many balls in the air as fast as possible ("What do you mean they come down again?")
Not to say that the author's points are invalid; it's a terrible feeling to have to spend your most productive hours working on someone else's problems. He or she may find themselves drawn toward entrepreneurship. There's nothing quite like working on your own idea...especially if that idea is going to make you cash.
Office culture is draining. Some people aren't cut out for it. Additionally, programmers tend to push themselves too hard for too long out of a misplaced sense of loyalty to the company. They're being paid huge sums and sometimes feel that they need to work extremely hard to deserve what they're being paid. They don't see that the work they do is extremely valuable in and of itself. Employment is a business arrangement; a coder doesn't owe the company anything more than their agreed-upon hours of work.
If/when the author does return to work, it's likely they will be much more likely to put themselves first and the company second. They'll likely have a plan to escape working for someone else ever again.