If you can't retire comfortably as a programmer where was all your salary going? I enjoy programming, but also realize I'm limited in how much I will make. I'm ok with knowing I won't own a 5000 square foot house or buy the newest laptop every two years because I'm putting money away for retirement.
Honest [tough] question: Why don't you work for clients that pay more? Just because you're in Southern Europe doesn't mean the person paying the invoices has to be.
I have friends who save ungodly amounts (in the 40k/year range) and their employers/clients still think they're damn cheap.
Example you work for NewYork/SanFrancisco/etc company and live in Italy. You make $80K and save half of that. Depending on how good you are as a developer + finding better clients you can live in a cheaper country, say Bulgaria/Albania/etc and make more than 80K+(ex Salvatore Sanfilipo though he's special). Usually the more you get paid by the clients, the better they treat you as a human/professional. The clients who will pay you the most, are the ones that pay the most local-salaries, which is Sf,Ny,Washington etc, major us-cities. Maybe London a little too, but probably not (I don't know london having 150K salaries locally?).
Thank you very much for the reply. Yes if you move to (or live) in an area in europe that is cheaper than say London, Paris or the other big cities (and most places in Scandinavian :) ) then this is an option.
At the moment really good developers in London can hit £80k+ per year in full-time salary but living costs locally are insane. If you are contracting in London you can make good money but you are still hindered by the high living costs. One big drawback is that I have seen very little remote work opportunities for London companies to anyone not living locally. This gets more pronounced the closer you move to the Data Science / Business Intelligence space, but even for Web Dev etc it looks to be not that common. So as you say it might have to be the big cities in the US as it seems the US are much further in accepting remote work than where I currently am.
My particular friends (and me of old) are located in Slovenia, clients are in San Francisco. You can have a decent life in Slovenia for $20k/year. You can easily get a gig in San Francisco for $60k/year. Probably even easier for $100k/year because of the whole signaling thing.
I wasn't able to save as much as my friends are because of lifestyle inflation, but I sure had a lot of fun. My margin isn't as high now that I live in San Francisco, but my glass ceiling is higher. Tradeoffs :)
PS: as you can infer from above, you can also always move. Nobody says you have to stay in a bad economy.
Thanks for the reply and the info provided. My personal opinion regarding the ability to move from a bad economy is that this is not always as easy as it looks. Even if you are european with an EU passport you are very likely to come up against some high language barriers etc. Although that could be a challenge some people might jump at.
For example I know that the UK (and mostly London) is extremely tolerant of non native English speakers. However from experience I know this will count against you when people are looking to hire (I was on the hiring side at one point so know how my managers perceived this.)
Germany is again another example where unless you speak really good German you will have some pretty tough challenges. I had a friend who grew up speaking German as a second language, who completed his masters in Germany, be told by his boss to go for German writing classes if he wants to get anywhere in their company.
Europe might be one big open job market but Language honestly makes it far more difficult than it seems at first. This also goes for settling into your new country even if you are working for US or UK companies as your day job.
> you are very likely to come up against some high language barriers etc.
This is not a problem I personally experienced for English speaking countries. Started learning when I was in kindergarten, always immersed in the culture via TV and internet, did English and English writing as a hobby pretty much since starting high school. Until they hear my accent, most people assume I'm a native speaker.
So I lucked out on that front.
The hard part for me was the visa. But that is also a solvable problem.
> The hard part for me was the visa. But that is also a solvable problem.
That is something I did not even want to mention due to the challenges it brings. It is not insurmountable but does sometimes come at a high cost of both money, time and stress.
These are specifics and probably not interesting to the rest of HN.
BUT, you can open a sole proprietorship, fill out some forms, and voila: you pay 4% taxes. After all the healthcare and stuff, you end up with 1068 euro net on a $20k (17k eur) yearly revenue.
At $48k/year, you get 3040 euro/month net. Now you're getting paid almost as much as the president. Your taxes will go up a bit next year, so save up, but for the first year you have plenty of extra money in the bank that you can leverage for making even more money.
And if you target San Francisco, you're competing with people who are asking for $130k+/year.
That is REALLY interesting! Quite a useful and nice way to work with tax. What does the percentage increase to in the following year?
It is a shame that the UK does not have anything like this. The best you can hope for is to contract and that give an average tax of around 26% to 30% depending on how creative your bookkeeper is.
Germany as my alternative example is quite a different story, there being freelance is very difficult due to the cost of healthcare that you HAVE to pay and their tax law is extremely complicated, you pay loads more tax than the UK for example. I know some friends who too permanent employment in Germany as it was more beneficial than being freelance.
Invoicing 1500 eur/month as a company, minus operation costs, minus taxes, gives 800-850 eur/month, which is barely livable. Lawful minimum is about 750 eur.
Swizec is right, there are ways to incorporate to pay less tax, but not everyone can go that way.
I work for a international company, mainly based in the US. I get paid what a local developer gets paid, our chinese employees get paid what the local norm is there etc. Do other companies just outright decide salary based on where the company HQ is?
Call me cynical, but I'm a bit skeptical that a company would pay more than they had to.
Note: Assuming of course your role is not super vital for the whole company or some such.
If you are as valuable as a local developer, then they will pay you as such. It's a business. They pay for value.
And no, your salary/rate isn't defined by where the company HQ is. That part defines their price tolerance. The price is defined primarily by how much you ask for and what you can offer in return.
> The price is defined primarily by how much you ask for and what you can offer in return.
I couldn't agree more. I know a lot of developers that have the mentality to just accept what they are offered without negotiating. It's up to you to get a good price for the value you bring to the company. Negotiation is the best way to significantly increase your salary, regardless of your technical skills.
> Call me cynical, but I'm a bit skeptical that a company would pay more than they had to.
I think it also depends on the type of company and what they are after -- are they looking to save money by outsourcing or are they looking to expand their talent pool? If they are looking to expand their talent pool, it is more likely to get closer to what the company HQ is, minus some "remote work" discount.
After all, if I'm the manager of some San Francisco tech. company and I can get a great programmer (even by San Francisco standards) for a 20% discount to local talent, which I know is a 20-30% rate above what they programmer will be paid in their community in a fly over state -- it's win-win for everyone involved and they are much less likely to leave.
I suppose that depends on the definition of a financial 'dent' and the market in which the programmer operates.1000$ is over two percents of my yearly net income (situated in northern Europe).
Even in SV, we should remember that programmer salaries have roughly almost doubled in recent years.
I remember my school stats being that CS new grads made an average of about $70k or so out of school. Pretty sure that number is way up at a top program.
Plus, with 3-9 month contracting gigs, part time freelancing, and remote work, we have more semi-retirement options than any other career field I can think of.
Could be any number of things. An expensive health condition, personal obligations (alimony, child support, etc.) putting kids through school, an expensive mortgage, student loans, on and on. I've been working for close to 20 years and I'm pretty terrified when I look at how little I've actually been able to save.
While I agree that it might be harder for full-time developers to have a lot of material assets (but still make a decent living), that simply is not the case when it comes to impact: just check all the open source projects that are integral to everyone's life these days.
Not everyone wants to contribute to open source projects. I can see two reasons:
1) Major open source projects are usually sponsored by a corporate parent that employs full-time programmers on the projects. The company steers the project. Independent contributors tend to be young people trying to fill up their GitHub profile because a blog told them that's how you do a résumé these days.
2) Small open source projects are often dominated by young people trying to fill up their GitHub profile because a blog told them that's how you do a résumé these days. Experienced programmers may not want to get involved in that.
Either nobody will use it, or you have to be good in marketing. Speaking of which, you'd earn a ton of money being a good programmer with good marketing skills. These can be good consultants.
As a programmer, this kind of reads like a sore lottery loser. I as well didnt score big working at one of these companies, nor did I engage in leadership roles, but thats the way the ball bounces.
Also, I know programmers making 50k, more than those making over 100k, but I live in the midwest.
Cant save much, but I can take care of my family and that is what is important to me.
The frustrating fact in technology is that your career is pretty much a lottery. I know people I went to undergrad with who lucked into the right company and are now independently wealthy. Most of the rest of us are still slogging away, having worked for a string of non-rocketships. Nobody at that time (late 90s) knew which company would mean early retirement, and which ones would go bust. It was a total crap shoot.
Try browsing the "Who's hiring" threads here. If you're looking to join a start-up, 99% of them are companies you've never heard of. One of them will be the next Facebook, and if you go work for it, you'll end up set for life--but there's no way to know and chances are you're going to pick one of the many who will go bust or just sputter around without making money for a few years.
Starting a business is fairly easy, especially one that is service-based with low initial capital requirements. Maintaining a business for the long term is an entirely different beast.
I'm curious what the path is to move from developer into a CTO/VP/Product Lead type role, for anyone here who has made the jump from nuts and bolts. How did you go about it? Did it just happen, or did you actively need to push for it? Would love to hear more from someone experienced, because from where I sit, it's hard to figure out how to jump that divide.
One possible path is to push for a senior developer role and then afterwards a tech lead (or similar) role (perhaps not at the same firm). That will then open up CTO or dev manager roles in startups. It won't "just happen" - it will require a whole load of work on your behalf (you'll need to learn your way around a broad selection of technologies rather than focussing on mastering one language and one platform, as well as learn a number of managerial skills including effective communication, negotiation etc.). Good luck! Disclaimer: I'm not a CTO but have been offered a number of CTO and dev manager roles at startups and small companies.
Short TED-like version: do not follow, be followed. Easier said than done :)
I know what it is like to transition from an intern to sort of Product Lead in a small shop.
Such role will not be simply handed down, though the opportunities will. Collect worthiness points. Dress for the job you want, not the one you have. Some possible general opportunities I see (not everything applies in every company):
1. Assess whatever is important to your direct management and be reliable. The idea is to have more or less consistent performance.
1.1. e.g. Say they think feature A takes 100 hours, feature B takes 50. You know they both take 75. Do A first -> spend 25h on B -> release A -> finish B.
2. Make others happy. This is important to reduce resistance for growth.
2.1. If you have options to make solution elegant and easy for others to use/integrate with, take the latter. Code has to be maintainable, but if you are the sole maintainer, others will judge public API, not the internals.
2.2. Be helpful. Do not help with every struggle everyone faces, you have your own tasks (and to maintain worthiness points), but if you personally can do this task in an hour while it would take the one assigned much more take the responsibility. Maybe their solution is suboptimal or they lack knowledge/expertise.
2.3. Make yourself authoritative source. Do not give advice/answer where someone else could give better one, but rather direct the question to someone who could actually answer that. Unless it is an opinionated matter, e.g. git vs hg.
3. Increase you scope.
3.1. If you see a better solution or problems down the road - communicate those. Might be an oversight or might be judged unimportant by management. Show that you can assess the situation and that you care.
3.2. If you see an opportunity to work on broader issues - take it. This might mean jumping to a smaller project, but taking [small] managerial and architect-like responsibilities.
4. As a new hire you have a unique possibility to grow really quick: instead of doing what you were hired to, you can attempt to prove being able to take "higher" role. Most probably this would mean taking more responsibilities for the same pay.
5. Collect trophies.
5.1. Finish projects. Then you can say "I've done that" instead of "Worked in a company doing that".
5.2. Jump ships if the company/product is going to fail, but assess. Even if Tesla would have failed, engineers working there would still be valuable for creating awesome product. There is a difference between product failing because of being flawed/suboptimal/unsuitable for the purpose and failing because of poor marketing, sales or other market reasons. Git quite possibly would have failed as a commercial product.
Similar to rheesyb. I'll speak mostly towards CTO/VP as I think Product Lead is fundamentally different path and I have no personal insight to offer there.
Work your way through direct technical leadership positions within squad/team/mod/whatever structure your company uses. Team lead is generally easy for technical folks as you can mostly fall back on technical expertise. Then try a multiple team leadership role, where you start to exercise more management, social, and coordination muscles. This will probably feel harder, and if it doesn't, check to ensure that you're actually doing it and not just leading from a pure technical point of view.
This should also give you exposure to budgeting, more experience hiring/promoting/coaching/firing and a clue of how much you like it and how much the employees working for you appreciate your style. If you leave drained of all energy more than a couple days a month, maybe it's not for you and you might want to stay at the team/squad or tribe level leadership roles.
Of course, all of this is in the context of "join a growing company, as that's where opportunities internally are constantly being created." It's much harder to be hired in from the outside into a leadership role if you've never led. The path to people leadership involves internal promotions along the way, IME.
What does the "non-programmer"'s job look like on a day-to-day basis?
I like coding because there's relatively little time management. It's not super chaotic except the few instances where there's a deadline. You just have to think and code, preferably in the zone for as long as possible.
Being a CTO or CEO sounds a lot more painful to manage. Lots of deadlines, people to manage, people demanding things on time from you.
Definitely good advice. Corporations are often not structured for you to have an impact outside your tunnel: they're too top-down. (Of course, many workers internalized that during school, which was much the same, so they seem happy with the arrangement.)
There are many more jobs as programmer than as CTO/CIO/VP. Furthermore, what makes you think that you would be as good at politics as you are at coding? People in management positions are often in competition with each other on a kill or be killed basis. OK, not that extreme but you get the idea. Politics is important in that game.
Number one point from that post: "Imagine you spend a full day in back-to-back 1:1s talking to people. Does that sound awful or awesome?" If the answer is not and "long for the days when you were able to manipulate something directly — pixels, words, lines of code, bars of music — quietly and with headphones on", management is not for you and your management career will suffer.
Another way to look at it: Do you hate those one or two hour-long meetings that management puts on your calendar and insists you go to? Now imagine your entire day from 8AM to 6PM chopped into these hour long meetings, 5 days a week. If you think that would drive you crazy, don't get into management!
If you have 1000 jobs that pay $100/hr each and 100 jobs that pay $1000/hr each, and you qualify for both (the former more easily than the latter), which would you rather try for?
He would have been unhappy with the other choice as well, because then it is the programming side he would be missing out on. I would advise everyone to read The Road Not Taken by Robert Frost.
You chose one option out of many, and the others may no longer be a possibility. However, the writer's unhappiness does not spawn from his inability to be successful at what he does, but what the never-manifest possibility of what could have been. Maybe he would have been terrible at that kind of work. That doesn't matter, because in his head, he had the skills but made a bad decision. Instead of looking at what he has achieved in his life and career as a programmer, he is pondering what could have been in a reality that is not, never was and never will be.
This kind of thinking leads one astray.
>My sister started as a programmer 30 years ago but jumped into management [...] My sister has 10X the assets I have.
I got sick at a similar time as the big IT death. I took time off to study organic chemistry and biochemistry. The subject really bored me in high school, but it really interested me after reading a pile of books.
I always felt a lack because I never studied something related to reality, just about abstract symbols. That I got a chance to go back to uni to study a second subject, real science, makes me feel grateful.
(And regarding 10X assets -- it was probably one of the worst decisions in my life if you consider only money. :-) )
When one retires, there are lots of more interesting things to do with your life than spending the remaining days of your life in front of a computer screen.
Like what?
The more I know about things outside programming, the more I see how interesting it is and how much boring, repeating stuff you have to go through to have fun in other parts of life.
And you never have to do anything boring or repetitive as a programmer. Sure we can automate a lot of things away once we know how to do them. But the task of staying up to date or learning in the first place involves a ton of repetition. And then there's the repeated task of learning when you get to a new project with a new language and new hardware.
Of course, you could just be repeatedly implementing the same thing with slight variations for years so minimal repetition in learning but maximal repetition in doing.
That's stupid. I am not willing to suffer for 20 years to then enjoy the remaining 30-40 whatever there will be. You don't know how long you will live, and what is your old days worth if you broken in your youth trying to be safe when you are 50? I'd rather work, as some do, 3-4 hours every single day for the rest of my life, than 12 hour days for 10 years and then compensate my lost youth, health and relationships with yachts or whatever money could buy.
That is what socialism->communism was about in my country. We have to suffer just a little more and then we'll get there. Guess what. We never got there.
Well, I'm sure you make some "enjoy the present" vs. "enjoy the future" tradeoffs (e.g. safe sex, hopefully). This trade-off will simply be different for each person. In any case, the author wasn't very clear on this, but it's not necessary that his sister (a manager) actually worked more; plenty of programmers work a lot as well (overnight support, weekend work, "we have a deadline next month" sprints, ...).
"I am not willing to suffer for 20 years to then enjoy the remaining 30-40 whatever there will be."
I know people who suffered for many years, retired and then died within a couple of years. Don't be so sure you will live 30-40 years after retirement. You can never tell.
To be honest, this is a first world problem. Most people on Earth (and honestly, at least the in US, the majority of people http://money.cnn.com/2010/01/05/news/economy/job_satisfactio...) work at a job they hate because they feel they have to for whatever reason be it survival or their kids or their bills, etc.
My job is easy (for me), requires little from me and very occasionally is worth getting out of bed for. I'm probably one of the lowest paid people here. But, I take lunch when I want, I wear what I want, I have a situation that is somewhat flexible (not because the employer wants it to be and actively dissuades it, but because my co-worker and I will mutually look out for and cover for each other). The benefits are bad. Treatment by management ranges from indifference to overtly hostile for the most part.
I'm not a programmer and would put myself somewhere in the middle satisfaction wise. The money sucks but I've had worse jobs and the time off (2 months a year), while unpaid, is great.
$.02, my ultimate point was not worrying where your next meal is coming from is a luxury most people don't have - so worrying that you're not doing something fulfilling becomes a secondary concern at best.
>>and what is your old days worth if you broken in your youth trying to be safe when you are 50?
Far more worth than being 50, out of cash or very little of it, competing with a impossibly competitive new generation. Living in perennial fear of layoffs, making ends meet and having a roof above your head. All the while watching your peers who made sound investments already retire and having a gala time now.
>>I'd rather work, as some do, 3-4 hours every single day for the rest of my life, than 12 hour days for 10 years and then compensate my lost youth, health and relationships with yachts or whatever money could buy.
Retirement has rarely meant turning into a vegetable these days. Retirement only means financial freedom to do what you want. Imagine how valuable your relationships will be when you spend quality time with your friends and family, instead of running into old age expecting help from everyone starting from family, friends to government.
>>That is what socialism->communism was about in my country. We have to suffer just a little more and then we'll get there. Guess what. We never got there.
As a Indian who lived through socialism I can tell scores of people 'got there'.
My dad never really retired, but lets just say he got extremely picky about the contracts he picked up and the people he would work with. Being able to do what you want, rather than what you need to do to survive, is pretty nice.
I'm still coding after almost 20 years in the job, and have no intention of stopping. I tried some other options - teacher, artist, entrepreneur. None of them give me the thrill that I get from programming. I still get locked into a flow where time shifts, and before I know it hours have passed.
The only other activity that does that is Civ, and no-one is going to pay me to play that ;)
If 10x assets is what drives you, more power to you. For me, being happy right now is more important that any imagined future happiness that a fat bank account could provide. And let's be honest, you can still make a pretty decent salary as a developer.
You might be dead tomorrow; you might as well enjoy today.
Also, it's easy to forget that being a SW developer today has a lot going for it - especially the demand. At least here in Stockholm, if you are good at what you do, you can pick and chose where to work. So no reason to stay at a place where you are not happy. http://henrikwarne.com/2014/12/08/5-reasons-why-software-dev...
Same here, but it is a big fight to convince the others why you want to stay that way. Right now I get the feeling that long term, going consulting might be the only option left as regular companies tend to only keep juniors coding.
> You might be dead tomorrow; you might as well enjoy today.
Just for this remark I wish I could have upvoted you more than once.
This is something that those that live for the job, without paying attention to family and friends seem to forget.
Likewise here. I'm 47, been programming since I'm 12. I'm very good at it. I also know I'd be a bad manager, unless I work with /very/ good people.
And yes, Ican relate to the article; I've seen (I still see) junior managers who can barely tie their shoes make more money than excellent engineers with 25y experience, but that's the way the world is...
Basically 'engineer'/'programmer' is a calling for some; it is for me. People for whom this is not a calling will never be /really/ good at it (for one thing, they don't spend their spare time doing it!) and eventually gravitate out of it.
But the ones for whom it is a calling, well, sod the money, give me some nice project/people to work on/with and I'm happy.
Or, do that but also get the money by going consulting. That's what I do for the last few years. It's quite exciting being a 'mercenary' in a way, and you can dissociate yourself from the companies/products and focus on the engineering.
I started working at 17. So that's 30 years for me! Darn, I should have some sort of celebration ;-)
My very first paid project was designing the PA audio system in the Lille (france) metro. It was a fancy Mac SE/30 with a IEEE GPIO card. That was driving two big Revox Tape machines, and was playing one, rewinding the other etc. Occasionally it would also play a digital audio file (w000t!).
It was all in Pascal at the time, and I had a whooping 4MB of ram. System ran for well over 10 years!
My first program was written in Dartmouth
Basic. The original version of Basic. In college, for the first 2 years I used punched cards. Then after college I programmed a jet fighter. Then realtime embedded avioinics stuff. I got tired of working with custom hardware which was challenging distinguishing between hardware and software bugs. After 20 years of Windows programming, I re-invented myself as a HTML, CSS, CoffeeScript, Javascript, LUA, PHP, Angular, Ember and iOS developer.
Coding as a child often makes you a better junior developer. It very rarely makes you anything but a junior developer, your first few years full time at it.
This is very true. I had my first full time internship last summer and although I wouldn't say I was unprepared, it opened my eyes to all the things I don't know. Code reviews take some getting used to when you're coming from a purely academic world. From reading hacker news I knew there would be blindspots in my education. It felt good filling in some of the blanks.
I started coding at the age of 10 with Timex Basic, Z80 and everything evolve from there.
On my first internship after high school while waiting for university applications to come out was done in Clipper and Access/Visual Basic. Also starting OS/400 backup jobs.
Not the set of languages that I already enjoyed most, but it kept myself busy during the Summer.
I'm 58 too. First program: HP25 assembly (calculator) in 1975; second: Dartmouth BASIC (horrible) in 1976. After a degree in zoology, I went back for a MS in CS part time. I've been programming in various forms of R&D since.
I can't imagine having done anything else. Sure, many other careers sound appealing. But software has been stimulating and sustainable while affording me a managable level of stress and downtime as needed. (Try doing that as a physician or veterinarian, both careers that I once considered).
That said, I sympathize with the OP's frustrations. Software jobs usually imply a rather flat hierarchy, with little opportunity for advancement other than leads or principals. Any further rise in responsibility requires that you leave tech behind and spend your days in meetings. Not for me.
However if you work in R&D without a PhD, I've found a severe glass ceiling (especially at larger companies). In general, no advancement beyond lead staff for you. If I'd known that 10-20 years ago, I would have handled that differently (get a PhD, work at smaller firms, or leave R&D). The road not taken, I guess...
Noob, 58 and 40 years under my belt!
I have been down the VP route, started my own successful company (at someone made a lot of money from it, not me).
But I choose to program, I sleep well at night, I feel great about what I do (usually, every once in awhile I hit some problem that is incredibly frustrating). And I love to create things! I worked as an electrical engineer for a few years, but the turn-around time on my creations was weeks if not months. With software ware its hours or days.
What is it about flo? That your life goes by so quickly, but you feel so good about it?
> What is it about flo? That your life goes by so quickly...
The past is just a memory, the present moment is so fleeting that it cannot be grasped, and the future hasn't happened yet:) I think being in a flow state is about living with this fact, in the moment, as it is, without all the mental overhead that is past and future. You're not 58, you are brand new, right now, just as you are.
Stick with it - it really pays returns down the line. Specifically, do some real soul-crushing busy work for a while (Excel is a good place to start) and then realize that you can automate large chucks of that in just a few minutes. It'll take days/hours at first, but eventually hours/minutes.
It's hard to beat the feeling of having a computer make your life easier. There's a triumph in it.
"I've seen (I still see) junior managers who can barely tie their shoes make more money than excellent engineers with 25y experience, but that's the way the world is.."
This attitude works out if your extremely good in your Spezialisation. I had kept track of my own ROI for the companies I worked for, granted them a bit of that and the rest should be for me. It worked because I always had the digits at hand. Basically "I need a raise, I have 3 jobs offers lined up, your making this of me and I demand x% of that otherwise you loose y over the course of z. Deal?"
I think people who are picking up on the 10x assets thing are missing the point... Money can help you feel better about things when things in general aren't going well.
What he says about missed opportunities, and working for idiotic management, that's the big thing here. You work your ass off, the management does dumb things, so the thing you're working on never really pays off, in money or fun.
The fact that his sister has 10x the assets is kind of an insult after injury kind of thing.
I think the disconnect between management and the developers is worth discussing.
Its important for management to understand the difficulties and decisions made by a development team to properly create a roadmap for the business. I think the author is expressing that the lack of respect for the programmers opinions can be detrimental.
It's more that in a business (which is a power structure optimized for efficiency - meaning hierarchical power structure) the programmers are at the bottom of the pyramid. Involving their input would take far too many layers of overhead; so the decisions get made further up where there are fewer people to consult (and hence more efficient).
IMO it is essential in today's world to have competent engineering management in the room whenever any major product decisions are made.
That sounds like the underlying problem at heart and is why I started down the path of being more customer facing (combined with getting quickly tired of all the nerd stereotype personalities as my immediate coworkers). The reward for incompetence and the perception-driven careers that is so common with professional managers is a slap in the face to everyone that not only are under them but to those that have to live with the consequences of their negligence. There are some that get kicked down, but typically they'll just find another sucker and continue on and on with self delusion that they've actually brought any value besides some vague association with some rich people to the company.
The problem that really bugs me as well as a lot of others is perhaps more deep-seated - that the popular kids from high school really do win anyway and become your bosses, and stories like Steve Wozniak or Bill Gates where smart, technical people can get ahead of the incompetent but very personable charlatans are becoming less and less common. That confidence / arrogance really are enough to succeed (many do work hard but so do the majority of technical workers too with almost none of the rewards) in the eyes of US society is a lingering thought.
I'm in my late forties and have been a professional developer for 25+ years. I agree with what you said in your comment, but this stood out:
"You might be dead tomorrow; you might as well enjoy today."
This is not a bad way to live, but as I get older I am increasingly aware that there will be a day when I'm dead tomorrow. And for that reason I'm increasingly less interested in spending time in the state where "time shifts, and before I know it hours have passed." Instead I want to fill those hours with real-time concious, experienced enjoyment. Because I can't live them again.
Being in the zone and cranking out great code still feels good, but only at the time. Which I guess makes me conflicted or something.
I'm only in my late 30s, but have also been thinking a lot about this. I see older people and wonder what they are thinking. Are they happy with the choices they made, the memories they have? What will I think when I'm 50, 60, 70?
Then I remember how lucky I am. I started with next to nothing, worked through college, and now basically get paid to play with computers all day (something I would have done for free anyways). I get to travel and have other amazing experiences. Biggie said it best, "when I was dead broke man, I couldn't picture this".
One of the reasons I think programmers always end up in this existential plight is that we are successful enough to have time to think about it. When I was young and worried about eating or having enough money to put gas in the car so I could get to work or school (or even having a car) I never thought about these things.
I'm about to turn 30 in just over a month. I got my first programming job at 20 and am seriously wondering where my twenties went? Honestly it terrifies me how quickly they went. All of my twenties went about as fast as tenth grade. I blame the time shift of programming. I hear about all the adventures my wife had before we met and just think "well I was busy programming". Since getting married in September I have spent much less of my home time programming. I've gone from initially resentful to grateful more recently. Time seems to have slowed.
Great realization. I'm in a similar boat. On the upside, 30 is still quite young, there's lots of time to do other stuff and slow things down ever more.
I can't say I had exactly the same experience. My 20s seemed to drag, my 30s? My 30s are flying by. Between moving continents, establishing myself in a new market, getting married, buy a house, having kids. I feel like I've blinked and I'm in my mid 30s.
I can't say I had exactly the same experience. My 20s seemed to drag, my 30s? My 30s are flying by. Between moving continents, establishing myself in a new market, getting married, buy a house, having kids. I feel like I've blinked and I'm in my mid 30s.
I'm about the same age as you. The passage of time is shockingly fast unless I do things to slow it down.
I remember moments from my college days that I can pinpoint to the year they happened. That thing that happened sophomore year? I know it happened sophomore year because I did it with my roommate at the time.
But nowadays I'll watch a movie on Netflix thinking it came out just in the past year or two, only to discover it came out in, say, 2007 or worse 1997.
A close friend of mine's daughter just turned 16. I remember her birth like it was yesterday. But the intervening years... not so much.
I think having kids, which I have not done, might slow time down a bit. Travel helps too.
As a father of 3 I agree. Children in my experience just makes you more aware of how quickly time is passing. My oldest is now in junior high, but it seems like just yesterday she was a baby.
I agree with that. My days are dense, long, tiring and slow, but I can't believe a full year has passed already.
Before having my daughter, days were fast, weeks were faster, and years slipped through my fingers. Time goes faster when you daily routine is always more less the same, and that is more difficult with a child.
I think, if we have enough leisure time, to an extent we get bored, results in us feeling time passes slowly. I used to get that feeling during summer vacations in school/college days. Not so much now.
So I also struggle with this exact same problem, i.e. some thing which I feel is recent is actually 5/10 years back. I am trying to work on it, so far not so successfully.
I find that if you hang around long enough and pay attention, you start to see the shape and patterns of your life. Not an original or profound observation, but it can be surprisingly easy for many of us to defer thinking about such things. What you gain from this you pay for with time, though.
In a similar experience to yours, I watched The Matrix with my son recently and was shocked to discover that it was released in 1999 - but I think of it as a recent thing. Holding my niece when she was a newborn baby and showing her Christmas tree lights, and now she's making an independent life in a big city.
In my experience, and as others have commented, having children doesn't slow time down. You're so busy with them for so long, and they rush towards their future so fast.
I'm reminded of a phrase that Sam Altman used: The days are long but the decades are short [1].
“As your perspective of the world increases not only is the pain it inflicts on you less but also its meaning. Understanding the world requires you to take a certain distance from it.
Things that are too small to see with the naked eye, such as molecules and atoms, we magnify. Things that are too large, such as cloud formations, river deltas, constellations, we reduce. At length we bring it within the scope of our senses and we stabilize it with fixer.
When it has been fixed we call it knowledge. Throughout our childhood and teenage years, we strive to attain the correct distance to objects and phenomena. We read, we learn, we experience, we make adjustments. Then one day we reach the point where all the necessary distances have been set, all the necessary systems have been put in place.
That is when time begins to pick up speed. It no longer meets any obstacles, everything is set, time races through our lives, the days pass by in a flash and before we know that is happening we are forty, fifty, sixty...
Meaning requires content, content requires time, time requires resistance. Knowledge is distance, knowledge is stasis and the enemy of meaning. My picture of my father on that evening in 1976 is, in other words, twofold: on the one hand I see him as I saw him at that time, through the eyes of an eight-year-old: unpredictable and frightening; on the other hand, I see him as a peer through whose life time is blowing and unremittingly sweeping large chunks of meaning along with it.”
Glad...or sad...to hear that I'm not the only one who feels this way. 25 to 35 seems to have gone twice as fast as high school graduation to college graduation. The only way I'm able to slow time down is by travelling on the weekends or vacation. Otherwise I blink and the seasons have changed and another birthday candle is blow out.
QUESTION for people like you: +20 YEARS OF PROGRAMMING EXPERIENCE that like to be in the zone, cranking code and building, releasing stuff to the world and then enjoy the impact of that when people use it.
Have you noticed that now more than never before there is plethora of amazing libraries, frameworks, language, tools, platforms, clouds, etc. that are easily available to use and if you like to build stuff WHY NOT CREATE YOUR OWN THING and come up with your own ideas and build them instead of continuing working for one company probably using the same software stack? Why limit yourself? have you entertained a regret like this?
I ask this, because I'm in the same boat as you and this is my small regret though I'm working on the side, slowly, to build my own thing in the free time that family and my day job allows it.
Thanks for brining this up. 'Flow' seems such a great state when I am in it, but I sometimes wonder if I'm missing out by not trying to create memorable experiences instead...
The thing is, you "tried some other options - teacher, artist, entrepreneur". I think "trying" is the key. It helps you be more satisfied with the road you are on when you've been on the other roads (at least a for a little bit).
there is also 'you might become too sick to work, but not sick enough to die tomorrow' which is what makes me more and more worried as I get older and society provides less and less safety nets
To me the 'my sister has 10x the assets' is like saying 'my sister is going to be ok in her retirement years, while I hope I'll be able to keep working for as long as I need to', but maybe I am reading that through the lens of my concerns/fears
The roads are equally travelled; Frost says that at the beginning of the poem. Life is a process of narrowing possibilities, and looking back at a particular decision doesn't have a lot of meaning.
There's a contingent of people who believe that Robert Frost was lamenting the fact that he took the road less traveled by, and had a worse experience. There's a good reason why certain roads are more traveled, and by not going the common path, his life was much harder.
It's a statement about memory, and the narrative we weave about our lives. The full stanza for the last line:
I shall be telling this with a sigh
Somewhere ages and ages hence:
Two roads diverged in a wood, and I—
I took the one less traveled by,
And that has made all the difference.
He is imagining that he will say the last sentence in the future, "Two roads diverged in a wood, and I- I took the one less traveled by, and that has made all the difference."
He is imagining this despite the first three stanzas being about how similar the two roads are, how equally traveled, and how he regrets that he'll only be able to take one. He knows he's making the choice at random, and knows that in the future he will remember otherwise.
At the risk of being "that guy", this actually misses the point of the poem.
Quoting:
"Though as for that the passing there/Had worn them really about the same/And both that morning equally lay"
The poem states that the two roads are basically the same.
Further points of interest...
"I shall be telling this with a sigh/Somewhere ages and ages hence:/Two roads diverged in a wood, and I—/I took the one less traveled by,/And that has made all the difference."
The author knows his own folly: that he'll look back and say it was an important choice, that he picked the path that was more special. When of course in fact he did no such thing. It's a poem about how people self-aggrandise and think their choices more important and better than they are.
Of course, no-one ever actually reads anything other than the last two lines, so the point of the poem ends up being missed. Which is ironic, given the actual message.
Fun fact: the poem was written with Edward Thomas, a good friend of Frost's, in mind. Frost said of Thomas:
"No matter which road you take, you'll always sigh, and wish you'd taken another."
Thomas was invariably lamenting how he should have taken the other option in any case where there were two things to choose. Which sheds a little light on the humour in the poem.
To clarify, the part I was referring to more was that the roads are basically the same. This is different, as there's a manifest difference between being a programmer and being a manager. Should have made it clearer that's the bit I was referencing, whereas the rest is more a divergent note about the poem more generally.
In my experience, most (not all, but most) of the people who have a lots of money acquire it by working long days and having little free time. They also have little freedom because they are so tied to their job.
Again, everyone with lots of money doesn't have this problem, but in my experience most of them do.
This is one of my favorite things about Frost and his poems. The same thing happens with "Mending Wall" where people only remember "Good fences make good neighbors".
While that's entirely possible I don't think one can conclude it with certainty from his post. You say he'd be missing the programming side if he went the other direction but the only reason he listed for choosing programming was because he considered it easier. Looking at what he has achieved in his life and career as a programmer doesn't do much if those achievements aren't aligned with his values.
Picking the wrong career path is entirely possible. Some people absolutely love technical problem solving, he doesn't mention it at all. For all we know it's worthless to him and just something he has to do to earn a cheque.
I do think you might be on to something with
>Maybe he would have been terrible at that kind of work.
though. He makes it sound like in 1994 he signed a document stating that assassins should murder him if he ever tries to manage anyone. I find it hard to believe that if he was good at managing people and influencing decisions that he would have went the rest of his career unable to break back in to management. Convincing people to give him the job is part of the needed skill set!
Well, the author seems to feel like he wanted to make a difference on the product side, and in that way the roads are not at all the same.
If your goal is to build software products, how do you make the biggest impact?
This feels like the question the author is answering with his observation that, as a programmer, you rarely have the clout to make the decisions necessary to drive the best product (or any at all) to market, outside of intentionally writing back code.
He could of gone into management/leadership, and failed miserably. The cherry-picked success stories don't mean success is more likely.
If he had gone into leadership, he might now be looking at examples such a notch, who got rich from dev work without becoming a 'manager' - at the same time indie dev startups are very competitive.
I guess you have to balance risk and reward. If you focus on the best examples of an option, you have to also compare it to the risk (how many fail).
> If he had gone into leadership, he might now be looking at examples such a notch, who got rich from dev work without becoming a 'manager'
A well-paid manager saying, "But I could have made more developing Minecraft!" might as well complain, "But I could have made more if I won the lottery!"
If high compensation is the goal, being a manager is simply a much more straightforward and reliable path than being a programmer.
The highest paid jobs, without disproportionate barriers/gatekeepers/high-bars are jobs that become desired; demand = X, but where supply is low; supply <~ X.
Which means job that used to be either low-demand, low-paid, or (usually) both. Otherwise demand has to keep rising, because without barriers, an increase in pay will cause a delayed increase in supply (as people are attracted to the field) which then meets the demand, or at least evens it out, reducing pay in turn, unless demand keeps increasing.
My own 2$ ameteur micro-economic theory there :-)
Anyway, the point is this; Is hard to predict which jobs will pay well when you start on that path. well paid jobs now might be lower paid by the time you and every other chaser-of-the-dollar goes into the same field, increasing supply, pushing down pay. The opposite can happen too.
Builder/labourer might not be seen as too lucrative in the past, yet in some times it certainly has been. And I wonder how many BAs actually fail to get high paying jobs?...
That's a great theory, but in the real world, certain professions and job roles have categorically enjoyed much higher compensation than average over long stretches of time. Upper management is an obvious example; it's been well compensated for as long as the concept of upper management has existed, and as much as we might fantasize about it, there are no signs that managers around the world will suddenly be paid less than their subordinates.
Yes, there may be micro-fluctuations where every company is suddenly scrambling to hire the latest flavor of the month (e.g. data analyst is now data scientist). These are hard to predict. But you know who will reliably earn more than the data scientist in three years? The data scientist's boss.
Ah, but there's a lot of politics and personal-influence-opportunity in management, that's the barrier.
> But you know who will reliably earn more than the data scientist in three years? The data scientist's boss.
I'm not 100% sure of this. There will be a boss in the chain that earns more, but actually I suspect that this isn't always true, given one assumption - the boss, as a job requirement, has to have a good knowledge of DS (maybe an ex/senior DS?), in which case this barrier ensures management will get higher pay - otherwise they'd just stay/go into in DS.
I took a management path at first, thinking it was a natural progression upon obtaining over a decade and a half of experience and being enouraged by my peers over the years. I was never unhappier. I gave it everything I could. My team loved me and I shielded them from mountains of pain and frustration. I got sick from stress and mildly depressed from lack of a technically creative outlet. It took me over a year to recover physically and now I am fully back in the game developing as a technical lead. I still manage, obviously, but within a different context.
From my standpoint, I do not regret anything. I learned from these experiences because I love to explore and am not afraid to fail along the way.
I see so many that seek advice when they have the power to take action themselves. So much time wasted really.
I was the same. Its great you shielded all the crap from the team, but it didn't turn out very well. Next time I'm going to try and shield but also delegate lots of crap guilt free!
I think it would depend in large part with how active you keep your programming skills and how up to date you stay on industry changes. Sure, your initial reaction to reading this is that you would stay sharp as ever, but management is a different kind of grind, and it tends to wear on your soul. Perks are good, trade offs not so good.
Personally, I'm glad I got our of management and back into the nuts and bolts side of the house.
I think it's a function of time and effort. Every day you're not in a dedicated developer role, you will lose a tiny bit of "free" updating about what developers do, use, love, hate, etc. You can offset this somewhat by your own efforts, but they will be limited because the process of working with other developers bringing something to production is its own thing, separate from just keeping tech skills sharp.
I've always been quite active with side projects and moved back into development after about 5 years being in management. It went OK. Everyone was younger than me, stuff had obviously changed and I was out of my comfort zone for sure, but it was a successful transition. If I'd not been so into development on the side (i.e. constantly writing tools and apps with new technologies), I feel it would have been pretty difficult to switch back.
I agree. In my mind, I felt a lot of self-doubt at first, but after digging in, that fear helped propelled me. I suppose if it wasn't for that fear of not being good enough and side projects, I would not have transitioned easily. I also underestimated my ability to adapt quickly.
Today I am very much hands on and I make it known that writing code and designing is my passion.
I secretly stayed active during that role. It takes dedication. Some of this comes from work ethic. I had that drilled into me with the family biz growing up. My tolerance for abuse and failure is high. I focus on looking at myself as a business entity even if I work full time somewhere. Sometimes it isn't enough, but I think going through a tough upbringing had pulled me through. I always find myself asking the question, "Do I want to just want for the rest of my life or do?"... I also still dream and dreaming is key to driving forward. My wife fills the entrpreneurial role right now with escessive travel trying to build something in a new market. I help where I can...so this is me trying something new again ;) We never know where life will lead us so best to take it by the horns and find out :)
Working harder doesn't always mean working more hours. After 8 hours sitting at a desk programming, sometimes I realize how lucky I am to not have to hand-load semis all day in a blistering hot distribution center. And then sometimes, after a particularly grueling programming session working on the same bug for 8 hours, I yearn for a day of work where I can shut my brain off and chuck some boxes.
Having chucked boxes in my youth, and currently a programmer, I can relate. As my skills have improved over the years it doesn't happen as much, but there are still those moments where standing in the back of a 52' trailer, calling off tags, and making tidy stacks of electronics doesn't sound so bad.
As mindless as work like that tends to be, there is a kind of zen quality to it. I think the trick now is to find a hobby that lets me turn off the left side of by brain for a while to do something so simple, yet satisfying.
I have an alternate point of view: my desire to remain engaged in an interesting and problem is high so that anything resembling monotony quickly bores and frustrates me. I question what I had done wrong in a previous life to be condemned to a latter day Sysiphian punishment. This is primarily why I rail hard against processes - they appear as manifestly unjust punishment.
In my opinion, our brains have a way of painting the bad old days in a nostalgic light. I would posit that if you were forced by circumstances to chuck boxes for 8 hours a day with company-specified arrival and departure times plus company-specified breaks, you would not relish it. But that's just my opinion.
I have programmed, and I have worked in factories, such as a door factory.
Programming is 100% beyond a doubt harder. My brain is mush at the end of a good day of programming.
Making doors? Physically tired but mentally fine.. and I find the physical side was easier to recover from.
So I get the door making -> programming is "harder" and I make about 10x the money.. but I would not say it was 10x harder, maybe 1.3x harder.. so clearly programming is a better job for me than door making.
Why does anyone need to be "the asshole"? Neither of them seem like assholes. No one is doing anything wrong... One guy is saying "What if?" and the other is saying "Perhaps that wouldn't happen like you imagine it?".
These are both perfectly valid ideas and thoughts and I don't see why anyone has to be wrong.
Yep, I made the same realization as the OP in that changing things to any large extent required being part of the management. I got my break 10 years ago then 6 months after that I quit to go and work overseas to be with my wife & family.
Turns out being a programmer is a very portable skill, and good ones get paid well. Life isn't so bad.
I imagine if I'd spent the last 10 years in management I probably wouldn't have changed jobs and be just as frustrated, just in a different way.
But let's not get carried away here, the OP (and I) might have been pretty poor management material after all.
he quotes Frost, but I don't see why he thinks "remaining a programmer" is "the road less taken". In most hierarchical promotion systems, one is chosen to lead many... leadership is always the road less taken, even if it is the road most desired.
And without this attitude we wouldn't have the things we have today. Trust me, Gates, Jobs, and a slew of others who built our modern world didn't do what they did for fun. They did it for (mostly) money. The same way the successful people in revolutionary fields today are doing so for money.
We can't have progress if we sit back and just judge everyone as "greedy" and expect good things to happen. Without these attitudes we wouldnt have the internet, the mobile revolution, commercialization of space, or the upcoming robotics/AI revolution. Maybe this guy should have migrated to management. Lots of people do and they're happier there. Not everyone is cut out to be some salty bad-ass coder until retirement. For most people this stuff is just a job, not a religion, and as people get older their social skills, wisdom, etc increase and many of them simply find being a manager or a mentor to be a more fulfilling use of their time. Society recognizes this and pays accordingly.
There's nothing wrong with the profit incentive as a motivator. In fact, competing in a capitalist technological market is one of life's few meritocracies and has paid humanity back in so many ways, its probably impossible to understand how vast the changes its brought us truly are. This conversation and everything you take for granted in your life right now would have been impossible without it. So maybe layoff with the holier-than-thou attitude?
Steve Jobs had plenty of character failings, but to say that he did what he did "for money" is a gross misunderstanding of what really drove him (a yearn for exceptional design, often at the expense of user choice).
I think he said in his youth to Woz that he wanted to 'one of the important people' - owning and running a multibillion company allowed him to achieve that.
The attitude presented in the article is indeed typically American -- but not for the reason I think you intended.
The quintessential American quality is the belief that every person has the right to control their own destiny. Fuck, it's right there in the first sentence of the first document declaring this country's independence.
Americans are often seen as greedy relative to our European counterparts. But you have to remember that there's a different social contract over in the USA -- if you fall, you're on your own. Therefore, money is seen primarily as a means to self-determination.
Now, this all gets fucked when you throw in consumer culture on top of it, but the desire to accumulate large sums of money is not uniquely American -- but we're damn good at it because the cultural message we get sent early on is that once you're an adult, you're on your own. If you want to control your destiny, you'd better learn how to make money.
But notice that the author's main complaint wasn't about money -- it was about all the wasted opportunities where if he had more power (in the form of a management role) he could have had more influence on the outcome of situations he was involved with. The loss of self-determination is the big gripe -- and the entire reason I hit the eject button from engineering early in my career.
Like you, I don't think the author of the blog post wanted money or power for their own sake. Relevant to your final paragraph: People Want Power Because They Want Autonomy [1].
Right. If you get a lot of money it doesn't mean you have to go buy a bunch of crap you don't really want. Rather it can give you influence. You can invest in charities or companies you believe in to shape the future. For example http://www.nytimes.com/2015/05/26/us/tangelo-park-orlando-fl...
The only amount of money people really need for autonomy is the amount of money it takes to supply their immediate needs and some reasonable wants; the amount of money necessary to provide for a normal middle-class lifestyle. I would ballpark this around $80k/yr. It's not enough to make big donations to candidates, companies, or charities, and it won't buy the most expensive stuff out there, but it's plenty to keep your life running reasonably comfortably.
Big money is a different ballpark and I don't think that's what most people want. I think they just want to be comfortable in doing what they want to do.
I feel like $80k must be an outdated number. My wife and I pull in just under $100k together, and we can't even (comfortably) afford a home.
Between rent, student loan payments, health insurance, bills, and car loans, and food, I think we maybe have $500 left to throw around each month. If we were paying against a mortgage, that would basically be zero.
Mortgages are usually cheaper than rents on comparable units. The issue is that they require a big upfront chunk of cash to get into.
And, as a sibling comment stated, it depends on location. I think $80k is right for most areas of the country. If you live in NYC, SF, LA, or another place with really high cost of living, adjust accordingly (which is probably like 2.3x).
It's definitely outdated, or at least location dependent. The average rent in Manhattan in 2/16 was $3,850. Landlords won't rent to you unless you earn 40x the monthly rent which is $154k. In Brooklyn, the average is $2,716 which ends up being $108,640. (http://www.mns.com/brooklyn_rental_market_report)
Most people don't live in Manhattan or Brooklyn. If you live in a high COL area, adjust accordingly. I suggested using an approximate 2.3x multiplier elsewhere.
The most financially effective way to be a programmer is to work remotely for someone who pays SF or NYC salaries and live in a moderate COL area.
I've always seen the rental income requirement you stated phrased as "monthly income must be at least 3x monthly rent", in case the 40x thing threw anyone else off (40/12=3.33).
There are whole communities of people dedicated to answering this question [1] and most of them seem to think that they'd be content with $40k/year in passive income.
I make more than $80k and I can certainly say that I was less stressed before I took a huge pay cut. On the other hand, I like my job more so I guess I might actually still be happier. All else being equal though, if I made more I imagine I would be much less stressed..
You are mixing up the amount of money required to not be worried about money and the amount of money required to just let you do whatever you want. Yes, an 80k salary means you aren't worried about how you will survive, but it still has you tied to a job that will limit your autonomy quite a bit. To achieve the level of autonomy being discussed here, you would need the 80k/yr without any obligations.
I think you have defined autonomy in a very specific way. That is not everyone's goal (what they want control over, or to feel like they are accomplishing).
I think the OP wanted control over building/shipping/creating products. Not life comforts, house, food on the table, free time. His goals would not be helped by a middle-class income, but more control over the products he was building.
Yes. In post-industrial society, we seem to have lost the true sense of independence. Almost all of us now depend on the good graces of an employer to be able to pay for our needs. That is not independence, it is fiefdom. Meanwhile, true independence is derided as families who provide for their own and are able to pass an inheritance on that grants their children and their grandchildren a degree of autonomy are mocked, which honestly can only really be attributed to jealousy.
I hope that I am able to pass a sizable estate to my children and grandchildren, so that they will not be dependent on banks, universities, and employers that will charge them outrageous fees in time and money just so that they may have a hope at a normal middle-class lifestyle. True independence for ourselves and our posterity should be the goal for all of us. For most of human history, it has been; these days, we are confused and pretend that being enslaved to usurers is the ideal.
If I have a skill that a large number of people are willing to pay for them that in itself represents independence. Earning potential is far more valuable than money. And guess what, if your children decide not to use those banks and universities, and don't get jobs then they may be "independent, but they are also dead weights. If they don't have skills that contribute to society, they are irrelevant. I agree that people should have access to enough money to realize their potential, but not more than that.
>If I have a skill that a large number of people are willing to pay for them that in itself represents independence.
No. Having an in-demand skill is a tool to obtain and keep independence. It's not independence itself. There are many people out there with high-demand skills who still find themselves unhappily slaving away in a job where they must do someone else's bidding for 40%+ of their waking day. Once they have the property and assets to make that an optional activity that they can leave at any time, they are independent. Having the ability to go find a new master if you get fed up enough with your current one is good, but it's not really independence. Independence is the freedom to control how you spend your days, and unless you're debt-free, own your living space outright, and have a consistent, sustainable source of food, you don't have the option to not work.
> If they don't have skills that contribute to society, they are irrelevant.
Define "contribute to society". I think you're being way too exclusive here. There are ways to contribute to society without being part of the industrial workforce. Just ask the big bosses, who, incidentally, are the ones pushing this narrative that life is meaningless without their patronage. You don't have to be a professional to make a meaningful contribution. In fact, I would argue that being a good parent has a far greater positive social effect than being a good professional.
>And guess what, if your children decide not to use those banks and universities, and don't get jobs then they may be "independent, but they are also dead weights.
A bank provides people with very little actual value, so I'm not sure why you included it. I will be immensely pleased if my children can go their whole adult lives without having to pay a cent of usury. It's a massive hidden tax on the middle class, making every major purchase cost about 2-3x its sticker price.
If you think about it, you'll see that much of our industrial culture is based on guaranteeing this effortless income to usurers, and I want to break that cycle for my children. This is also a large part of why the media wants to promote negative images of independent wealth; they're trying to protect their dirty income streams and reinforce their position as a hidden cost that people just accept as an implicit requirement.
Of course the children of independent people should be taught to do something useful with their time and lives. I think that by and large, they are. You don't hear about that because it doesn't please the massive indentured population to hear about it on TV, but if you look around, you'll see that it's generally true.
And in the age of welfare, you don't have to be independently wealthy to be a layabout or a loiterer. It's no longer an exclusive privilege, so providing a decent estate that will allow your posterity to have its freedom and control its own destiny is not really any more dangerous to individual productivity than not doing so.
>I agree that people should have access to enough money to realize their potential, but not more than that.
I absolutely do agree that too much money in the wrong hands is a recipe for disaster.
I agree with you on most of these points but I do want to clarify a few things. Banks circulate money, they don't just hold on to it, and that is good for the economy. Don't get me wrong Banking as a reality is among the scummiest parts of the modern economy, but as a concept they provide invaluable services.
To respond to your point about contributing to society, I totally agree that parenting is among the most important contributions you can make to society. But I don't think that you can be a very effective parent without the wold view provided by interaction with both people and knowledge. And this interaction is very difficult to find outside of the university and workplace setting. As a parent you should absorb as much knowledge and experience as possible so that you can pass that on, and your children can build on that rather than wasting time re-learning it.
Finally, you are right that welfare allows people without money to live while making basically no contributions to anything. But is not a comfortable life. Anyway my point was less that you shouldn't give your children money because it will make them Deadbeats, and more that you should try to get as much value from each dollar as possible and I don't personally believe that giving all of your money to your children is likely to be the best way to achieve that.
I apologize for my formatting. Writing this on a phone.
But gaining power means losing autonomy. It means more interdependence to lay off risk.
True autonomy is its own discipline.
The problem with gaining power is that you now have to steer into the maelstrom of human foibles for a living.
"The Turks pay me a golden treasure, yet I am poor! Because I am a river to my people! " - Auda abu Tayi in "Lawrence of Arabia".
No, people pursue power for status, not for autonomy.
Just read the articles on that. It's one of those things that sounds reasonable, but comes from a study that's based on things like online surveys and playing games with college students. I'm not going to take that one too seriously just yet.
I'd like to see a concrete defense of the position that going into management gives you greater influence on the outcome of situations. I'm inclined to believe in this quote from "Days of Thunder" (1990):
Agreed in a lot of circumstances. How many bad managers think that yelling to get things done is actually accomplishing something on their part? Good managers have the ability to shepherd their people and resources in a way that gives them a better chance of success and minimizes the potential stumbling blocks. It still requires good people, clear goals, and lots of other things that may or may not be 100% under your control, but even with those caveats, you can generally assume that you'll have a bit more control in management, though parts are more indirect (you're not involved in writing the actual code as much if at all depending on the company, etc.).
But it's really easy to over-estimate that control and your ability to wield it. If the Peter principle is accurate, and people are promoted to their level of incompetence, then it also indicates that people assume their level of competence is higher than it actually is. And then you get project failures, screaming managers, and lots of lost money.
OTOH people I know with a lot of money have serious relationship issues. Money distorts your social connections. It's really not worth it. At the end of the game, the king and the pawn go back into the same box (old Sicilian proverb).
"The quintessential American quality is the belief that every person has the right to control their own destiny."
So you don't think you have this right? I believe you have the right of opportunity, but not of outcome.
I learned what this guy learned pretty early on: If you are an employee (developer or not), you will be paid to do things you are against and people less intelligent and experienced than you will be making decisions for you at some point...and you can't do anything about it.
This is the sole reason I started my own company. I was sick of being forced to go down a path of failure..after every attempt to do otherwise was ignored.
After our failure, management never wanted to look bad, so they almost always picked someone to blame. Sometimes it was me or my team, sometimes someone else. Speaking up about it meant you weren't a 'team player' and you would probably be on the chopping block during the next round of layoffs.
I was able to survive most layoffs because I learned how to play politics, but at the cost of never feeling satisfied with my job.
I've had my own company for 5 years and I don't regret a thing. It was the best decision I ever made.
"I just have to say this: So typically american"
Really? I was thinking it was typically Chinese. My wife's family is from China and they pretty much all try to one up/compare each other in terms of assets, money, or jobs.
"If you want to control your destiny, you'd better learn how to make money."
This message is pretty truthful. The more you rely on someone to support you (the government, friends, family, job), the less control you have over your life. Money gives you the ultimate power and freedom to do what you want.
Regardless of your culture, this doesn't change. If you have more more money, you will always have more options/freedom.
> So you don't think you have this right? I believe you have the right of opportunity, but not of outcome.
I do think I have this right; as an American it is the #1 thing that makes me an American. It's why we ignore the rules we don't like. It's why we lust for power and for money, lest some other person beat us to the punch and have power over us.
And while no rational person thinks they can control every factor that goes into their own outcome, we at least want to have some influence. If you're an engineer and your company goes belly-up because your marketing guy was a moron and you didn't have the power to make him listen to your ideas... that's the position many Americans strive to avoid.
> Really? I was thinking it was typically Chinese. My wife's family is from China and they pretty much all try to one up/compare each other in terms of assets, money, or jobs.
I feel that this no longer an American trait. 30 years ago, yeah, but with the whole backlash against the 1% and the hipster movement where bankers making $500k/yr dress like homeless musicians... it's not as cool to flaunt money anymore (unless you're a musician; then it's just part of the whole consumer culture thing because you're selling a life of luxury to poor people...) My household income last year was over seven figures, but I live in a house worth less than half of that and drive a 5 year old base model Subaru. Once money buys you autonomy, it's not really worth much (and that's a modern American perspective that's backed up by research).
> Regardless of your culture, this doesn't change. If you have more more money, you will always have more options/freedom.
I absolutely agree. But the single most important value that America was founded on is self-determination: the idea that each person is in control of their own destiny. Outside forces may get in your way, but it's your obligation to figure out how to get around them. American business culture is the same way: if you want to limit your chances of being fired through no fault of your own, you should probably get more power so you're higher up on the decision making chain.
> I believe you have the right of opportunity, but not of outcome.
I may be assuming too much, but in most don't really believe this.
For example, I'd wager you firmly believe you have the right to a safe and secure society such that you are relatively confident you will no be randomly murdered in your sleep with no consequences for the murderer.
This is exactly a right to the outcome of a minimum level of security in your person and property.
If you do hold this belief then you believe in right of outcome in society. Though you may not agree with others what outcomes we should be guaranteed.
You have a right to not have violence initiated against you (e.g. to not be murdered in your sleep). In order to keep this right, you just can't initiate force against someone else.
Do you have a right to a "safe and secure society"? I'm not really sure precisely what that is or how it is achieved, but that sounds an awful lot like a privilege.
For example, you most certainly do not have the right to be guarded in your sleep by armed guards. Nor do we all possess the right to be guarded in our sleep by armed guards.
> You have a right to not have violence initiated against you
This is a right of outcome. The outcome of not having violence committed against your person or property.
Rights of outcome vs rights of opportunity are a false dichotomy. All rights are a right for some specific outcome and are considered violated when that outcome does not occur.
> Therefore, money is seen primarily as a means to self-determination.
And even deeper down, it's a means of survival. The safety net here has pretty much disintegrated since it began to be dismantled in the '80s. A lot of people in the US haven't saved enough for retirement considering this new reality... they haven't even saved enough to get them through a few months of unemployment. There's a loss of hope in rural America now in places where it can be very tough to find decent paying work. It's starting so show up in a decrease in lifespan and in many ways it's very similar to what happened in Russia when the Soviet Union collapsed. The drug of choice there was/is alcohol. Here it seems to be prescription opiates (in addition to alcohol).
> The drug of choice there was/is alcohol. Here it seems to be prescription opiates (in addition to alcohol).
These situations are not even remotely comparable.
The fraction of Americans who abuse opiates is tiny compared to the percentage of Russians who abuse alcohol.
As a rough approximation, about 2.5 million Americans have an opiate abuse issue in 2016[1], out of a population of 319 million. This is about 0.8% of the population.
Statistics from the Soviet Union are hard to find due to the government's indifference to the problem, but even official news sources -- which routinely greatly underreported the true magnitude of social problems -- put alcohol abuse rates at 19% of the population.[2] Also note that the amount of drinking you have to do to be considered "abusing" alcohol is far, far greater in Russia than in the US.
My big problem with what the writer says is that he assumes power comes from position. Most power, and the most useful power, is soft power. In those cases he cites, such as the startup store, where he thinks he could have made a difference as a leader - sorry, but he could have made a difference as a peon if he built credibility and stuck to his guns. Clearly he didn't have that kind of personality, or has too narrow a view of his job.
Tried and found difficult or thought difficult and left untried?
Building up soft power is something anyone should do if they care about their work. Building big things means collaborating, and collaborating means persuading other people when you're right and recognizing when you're wrong. Do that and you become a leader, regardless of your position on the org chart.
Stuck to his guns? This is very naive and is really not a good criticism whatsoever. On some level, putting yourself into a position where you have to be, as another commenter wrote, Sisyphus, is probably something to regret in itself late in your career.
He didn't realize the other guy hadn't committed code in two years? He simply didn't care enough to do a good job.
My guess is that this fellow felt like his having set aside his leadership position in a role should simultaneously have given him instant authority and at the same time allowed him to shrug and ignore problems he saw but wash"the directly responsible for.
It's a very interesting dynamic. Humanistic psychology focuses extensively on ideas of locus of control (Rotter) and self-actualization (Maslow). The perspective has its shortcomings, but I think it manages to hit on a point that many of the others either miss or place little emphasis on. People in general tend to underestimate just how significant that can be.
For example, I've always found the argument that certain voters (commonly poor white working-class) who vote for small-government are voting against their own economic interests to be rather interesting from a psych perspective. I'm a libertarian so I don't put much faith in the idea, but I think that issue could be traced back to the concept of locus of control. Voting for larger social spending might benefit them financially, but it also means accepting the belief that control over their life is externalized.
The alternative--that control is internalized or even just the perception that it's internalized--is likely more palatable psychologically as a core self-evaluation, with a more beneficial influence on other CSEs (neuroticism, generalized self-efficacy, and self-esteem). That leads to better life satisfaction, and can contribute to later economic success according to the research.
Reality is a lot more nuanced than that, but perception is absolutely fundamental in terms of how it can affect personality.
Interesting point. The idea of a meritocracy is pretty ingrained into the tech world, and that means control over life is internal, not external.
But tech is not a meritocracy. [1] [2]
Accepting that you have less control over your life may change some of your outcomes, but I doubt it would completely crush one's spirit.
I've accepted that I'll never flap my arms unaided and fly like a bird. I'm not depressed because of that realization. It's a known limitation of my life, and I can live with it, and I won't spend my weekends practicing my flapping and running skills. It actually helps me focus on areas I can affect change... such as building a jetpack.
Knowing which things are outside of your control should help you realize what is and is not within your ability to change, and then you can figure out how to make the most success given which variables are mutable or immutable.
You mention research about one's perception can affect later economic success; I'd be very interested in a reference.
But just like any other institutional problem (racism, sexism, etc), it does no good to simply ignore it while it negatively impacts you. Instead, acknowledging your current situation, and working to make it better, is key.
Some people say it is, until you ask them if tech interviewing is sane. We can't even find a tech interview process that correlates well with performance and that's just who we let in the door before they even get to rise up as their value merits.
Then you add questions of if who is chosen for promotion is sane, if what products a company chooses to focus on is sane, if what products the market chooses to make popular is sane. None of those are optimal in the sense that the "best" thing wins out. Marketing (of a product or self-promotion) and being in the right place at the right time dominate each of those steps.
So how on earth would you take that and get a meritocracy out the other end?
1. I think tech interviews are sane and screen for very specific skills - ability to master topic (everyone asks the same algo questions - there is no excuse not to master them even if you do not use knowledge day to day. It's no different from learning any other domain), ability to perform under pressure and ability to feign enthusiasm (it really suck to work with smb who visibly hates his job). Lack of those skills make person less productive in corporate environment. There is some randomness but overall process works very well.
2. Being good at self-promotion is a merit. Some have it and some not. You could not define merit as just technical skills.
The fact that the people who perform best in interviews aren't also the people who perform best on the job doesn't invalidate meritocracy; it simply means that interview environment/tasks are a poor approximation of job environment/tasks. Non-meritocracy would mean that you don't choose the people who interview the best, but instead choose people you (1) like most, or (2) have a particular skin color, or (3) have perticular interests, etc.
The second part of your comment is less relevant, as I think most "tech" people would say that e.g. promotions (management), product development (marketing) and the general market dynamics are highly "non-tech". But in many of these areas, people do try to choose the best - at least as far as marketing is concerned, companies dislike wasting money and choose to promote those people/products that they expect will produce the most profit. Companies' "profit", of course, doesn't correspond to a person's "merit" ("profitcracy"?), but the basic mechanism is the same.
It's ironic to me the reputation for American pragmatism when compared to attitudes in many areas, particularly in the area healthcare. For better theoretical independence from government, we suffer for reduced practical independence due to healthcare costs, and lack of sick leave & vacations, etc.
While Europeans seem to have come to the opposite balance of concerns on independence.
sorry for late response, but thanks for this.
locus of control is always a false story we tell ourselves, right? let's ask the archetypal solitary mountain man about his ability to control his environment.
You've identified for me two of the basic hustles of the usa's right wing :
- providing the illusion of locus of control
- disassociating people/society from nature
- homesteader mauled by a bear = heroics!
- getting mugged in the city = decadence
> The quintessential American quality is the belief that every person has the right to control their own destiny. Fuck, it's right there in the first sentence of the first document declaring this country's independence.
... and then took nearly a century to getting around to the idea of not owning people. There are a lot of caveats to that American belief.
I was a programmer, and then spent a year and a half as a games producer, and could have kept going down that path, but decided to go back in programming.
Half the time I spent as a producer I was worried about the fact that I wasn't doing any programming, and my skills were atrophying.
Production had some real perks in comparison, being able to meet a lot of people I admired, going on business trips, etc, but I got frustrated with only trying to cajole developers to add certain features that I thought would make the game better, instead of being able to dive into the code and add the feature myself, and iterate until all the kinks came out of it.
You'd be surprised how many times you can say "this game is too hard, you have to make it easier" or "the text in this UI is too small, you need to make it easier to read" and developers still won't do it, or will only tweak it marginally to say they did it, instead of sitting down and actually trying to make the game easier.
And then the game comes out, and it gets blasted by critics for being "too damn hard".
If I were in that position today I'd be a lot more specific, but I can only iterate when they give me a new build, which usually takes days. I can't change a variable and rebuild it in 30 seconds like I could as a developer.
Unfortunately, in the vast majority of places, you can't have both. You're either making the decisions about content or you're implementing other people's decisions. In my experience, very few companies have engineering roles where you get to say, "This is best for the product" AND go off and implement it.
> If I were in that position today I'd be a lot more specific
That isn't the job of a producer or manager. Maybe quality assurance or testing? It sounds like you were micromanaging them.
If I were in that position I would try to educate them about what makes a game hard and how hard games should be. I would educate them about typography. I would not tell them what to do. They must find the solution themselves.
Hm, I'm violating my own advice with the paragraph above. :)
As a developer, I hate it when somebody gives me too vague problems "game is too hard" or too detailed assignments like "make the font size bigger". I need an accurate problem description with all requirements. If it isn't accurate, my solution will probably miss the point. If I haven't all requirements I will probably violate some of the unspoken rules.
Essentially when I said I'd be more specific, I would provide requirements. But this is a game, not a business app, and writing up the requirements for 'fun' and a 'good experience for the gamer' is not exactly easy.
We were a bit more specific than 'make it easier', I just have a vague memory exactly what we said because it was 8 years ago and a lot has happened since then.
And we were a super small company. I had to wear many hats; overseeing QA was one of them.
Micro-managing is an extreme term, and I don't think we were. We weren't telling each developer what their tasks were for the day, we were communicating with their project manager and saying which bugs or features had what priority, and by the way we played the build and we think the font looks too small, could you please increase the size, it's okay if the UI takes more space, please remember not everyone will be playing this on HD tvs, thank you.
And I was playing each build to do some internal verification that the bugs they say they fixed did get fixed, yes. Personally I think it's better the publisher knows what's going on with their own game (keep in mind, the developer didn't pitch the game, they were hired) than blindly trust that everything is going the right direction, until it's time for a milestone payment and "holy shit, that's nothing like what we asked for! you don't get paid until it's fixed!"
I understand the authors frustration, and it's not really about money as some here believe.
In my 6 jobs as a programmer I've also seen so many incompetent managers, so much time wasted, so much bullshit, so much backstabbing and narcissists galore.
But the problem is not really about THEM managers, but about ME and my maladaptive cognitive schemas (commonly known to everybody as lack of social skills, subjugation to authority, procrastination, lack of discipline and so on).
The bitterness results from the fact that even if you're a great programmer, most companies will try to stamp you into a predictable, replaceable and interchangeable little cog and will use you as it sees fit.
If you're not happy with that, if you think you posses great insight and you can do better, you either develop your own product or you take on some sort of leadership role.
I am in my early 40s, and I thought 40s would be different as I will have less home pressures, and more time to myself. Also, I will be mature to take on challenges.
Doesn't work that way. Please start today.. don't hope for a things changing in 40s as it will come to your very very fast.
Lol, that poem. That poem is meant to be taken literally, the poet wrote it for his friend who wouldn't shut up about nature hikes.
You had a much better saying at your disposal "The grass is always greener on the other side". Alas, you chose not to use it and now we don't know how your comment would have turned out, had it made sense.
>My sister started as a programmer 30 years ago but jumped into management [...] My sister has 10X the assets I have.
It's so hilarious that he calls himself a "programmer". With 30+ years of experience, you're a software engineer, an architect, and best of all, a consultant.
Then you charge 5x the normal rate of a salaried engineer, work normal hours, and start accumulating real assets.
He needed to put down the technical books, read a book about personal branding and then he could have had his cake and eaten it too.
>>Then you charge 5x the normal rate of a salaried engineer, work normal hours, and start accumulating real assets.
This is dream which happens only when you are asleep. In real life an older person is less energetic, less enthusiastic, can't do weekends, has health issues, has responsibilities, has family commitments etc etc.
Young people work insane hours, they do that for cheap, they show up on weekends and are more flexible in general.
In most cases. Like in everyday cases experience doesn't pay well as you think. Even in professions like medicine and law that is true.
The assumption that experienced people get paid well applies for a minority few people who for nearly all practical purposes are an exception to the whole rule.
>This is dream which happens only when you are asleep. In real
>life an older person is less energetic, less enthusiastic,
>can't do weekends, has health issues, has responsibilities,
>has family commitments etc etc.
>Young people work insane hours, they do that for cheap, they
>show up on weekends and are more flexible in general.
Your assumption that income is directly related to your output is wrong. Making better, more qualified decisions is one way to differentiate yourself as you get older. Another is to quantify your output; maybe you do less programming but the pieces you do write can provide the company with a million+ lift in revenue?
Or you position yourself as writing a cleaner implementation, without having to rewrite 3 or 4 times to get it correct (ehem, those "energetic" youngins).
Company's pay for experience all of the time; and when it can be tied directly to increases in profits/revenues, you're way ahead of the game (especially ahead of any Jr. programmer that just blindly pumps out code).
> This is dream which happens only when you are asleep. In real life an older person is less energetic, less enthusiastic, can't do weekends, has health issues, has responsibilities, has family commitments etc etc.
This is complete nonsense. The best and most productive engineers I know are in middle age or beyond. In addition to raw technical ability--which does not decline in my experience--they have a level-headedness about making decisions that is rare to find in younger people. It's a critical success factor, especially for complex projects.
If someone has been developing for 30+ years, learning to best describe their track record, position their skill set, and demand a premium for the time isn't hype. It's merely capitalizing on their legacy.
There is an issue with calling yourself a "programmer" when one of his main complaints is the lack of monetary return on his career. Don't choose a commodity title if you want a higher than average return on your time.
I never said "demanding a premium for their time" was hype. I said having to call yourself a "Software Engineer" or "Architect" instead of a programmer was hype, and I still think it is.
I'd personally rather have someone show me the real work they've done to convince me that they knew what they were doing, rather than giving themselves a meaningless title to convince me how good they are.
There are plenty of "Software Engineers" and "Architects" out there that couldn't program their way out of a wet paper sack.
Fundamentally our disagreement is on the importance of the title. Yes, I will concede that there are some people who will be impressed by it, and maybe even be a bit more likely to hire you because of it.
I just don't think that's a good thing.
I know too many people who have been burned by others who used such language, who actually didn't know what they were doing, and as a consequence others who did know what they were doing lost their jobs, and the company spent millions to try to recover, or just plain went out of business.
We're actually on the same page. Proof of performance is a definite must while interviewing.
The title does the initial framing of expectations, that's it.
There's always going to be idiot consultants. And anyone who doesn't properly vet any candidate is likely to get their expectations crushed.
I'm talking more about the title and language that frames the career.
There's a big difference between "I'm a programmer with 30+ years experience. My last project was a rewrite of my employers checkout API."
vs
"I'm a consultant specializing in Ruby on Rails. For my last client, I rewrote the entire checkout process that supports $400 dollars in transactions. I decreased the time it took to process the initial check out by two seconds. With that increase in checkout speed, I provided an additional 10% lift in revenues."
Both could be describing the same process, but with the latter much more in line with the prospective client's goals.
My point is that the title should not frame the expectations at all, because so many people plaster "Software Engineer" or "Software Architect" on their resumes that the terms have become mostly meaningless (assuming that they ever had any real meaning in the first place), and in many cases are an indication that the person thinks more highly of themselves than they should.
I also think that describing the term "programmer" as a "commodity title" gives it an unnecessarily negative connotation. Despite what marketing people think, it is a perfectly valid description of what many of us do, and does not at all necessitate thinking of a person's skills as "run-of-the-mill".
"because then it is the programming side he would be missing out on"
Look on the bright side. I can do all the programming I want at night and on weekends, in fact I technically have more time away from work to do it, than at work, and most employers consider "learn at home" to be mandatory, but your average nuclear engineer, infectious disease researcher, forensic accountant, or organic chemist is pretty much screwed in that regard.
For decades I've been expecting capitalization to freeze out home computer users by making everything too expensive for hobbyists yet cheap for a company to afford (think of the example of CNC milling machines, or electronics), and the cloud comes close to ruining hobbyists, but you can still pretty much keep up with the bleeding edge at home in programming, if you want.
This is a bad case of "the grass is greener on the other side...".
I learned long ago never to chase the money. Do what you enjoy and you will never work a day in your life. Obviously, life is never quite this simple and in any job you will have periods when you do not enjoy some aspects, but the point is, do what makes you happy, follow your bliss.
Of course there is another point to this the author does not seem to be considering, just because you go into management, does not mean necessarily you will be good at it, or be prepared to do the things that might be needed to get ahead. For example can you fire a friend just because it is what is best for the company? You get good managers and you get bad managers. Good managers can make a lot of money but there is no guarantee he would have made a good manager.
TL:DR: There was no road less traveled by they were equally the same, but he fooled himself into think he made a special choice.
Just some poetry discussion. "The Road Not Taken" is considered the most misunderstood and misinterpreted poem. (It was great to make freshmen tackle this poem in freshmen Theology Class. Then we went on to most misinterpreted scripture verse :)
So, in the end, while he was very clear in the present that the two roads were identical with no real reason to take one over the other, later in life he knew he’d once again fool himself, this time successfully, by instead remembering that one road was “less traveled by” and that this influenced his decision, when in fact he really decided on a whim. http://www.todayifoundout.com/index.php/2015/09/robert-frost...
Well I got to be the instructor for that day's class :)
My favorite is short example:
In that way, you will be acting as true children of your Father in heaven. For he gives his sunlight to both the evil and the good, and he sends rain on the just and the unjust alike. Matt. 5:45 (NLT)
Rain in a semi-arid agriculture area was a good thing. People read it and think God sends bad things to also. So when something bad happens people will quote this verse.
I also like the Prodigal Son (It really is the Parable of the Older Brother). People miss the main point and think it is about bad children coming back to the Father (Its a side point) The main point is the Older Brother was mad that the Father was nice to the bad son.
Tangential, but the most misquoted text is 1 Timothy 6:10 "For the love of money is the root of all evil". Most people elide "the love of" which totally changes the application.
>My sister started as a programmer 30 years ago but jumped into management [...] My sister has 10X the assets I have.
This also has SO much to do with OPs lifestyle / propensity to save. "The millionaire next door" goes a long way in explaining how even lower income households can accumulate much more wealth than many high income earners with simple lifestyle differences.
I dunno, I'm Jewish and I wouldn't mind this particular remark, and a sister comment claimed it seemed typically Chinese just as much and claimed to be Chinese themselves.
One point here is that it's seemingly OK if it's not derogatory plus one is talking about one's own group. Another point is there's a continuum between nationality and culture, and it ought to be OK to point out that something is specific to a culture, and American specifically is very likely to be used to label a culture and not the people as in a bunch of guys and gals with specific genes. This is not to say that one ought to agree with grandparent's views on American culture, just that those views probably aren't racist.
BTW I personally try not to say this sort of thing since people might be offended all too easily, so I guess I agree with you in that way.
That's funny. I'm from the US and when I got to that line, I found myself assuming the author was an immigrant or foreigner.
Talking publicly about financial success isn't something I associate with people natively from the US. Certainly, among the people I grew up around, it would be considered unconscionably tasteless to do so.
I think referencing Frost is a little dismissive here. The writer has some pretty clear reasons and description of his regret that probably many should pay attention to.
I recommend also reading "The Most Misread Poem in America":
Most readers consider “The Road Not Taken” to be a paean to triumphant
self-assertion (“I took the one less traveled by”), but the literal meaning
of the poem’s own lines seems completely at odds with this interpretation.
The poem’s speaker … has already admitted that the two paths “equally lay /
In leaves” and “the passing there / Had worn them really about the same.” So
the road he will later call less traveled is actually the road equally traveled.
The two roads are interchangeable.
I keep hearing stories of non-technical managers making elementary mistakes when it comes to technical decisions.
Many of the things are so widely established, they can be learned by spending a little time reading a few books, talking to a few people. So I have to wonder what the obstacles are here.
An aversion to reading? Inflexible management dogma? Distractible lifestyles? Poor critical thinking in general?
Those things that we don't know that we don't know. If the managers don't have have appreciation for that what their underlings do require some skills then they won't bother to try to learn.
In many cases a non-technical manager will report to a chain of other managers who are also non-technical. It should not be surprising that the criteria on which they are judged do not include technical decision making.
Instead, important metrics may include size of team, number of hires per year, revenue of business unit, number of customer-reported defects, etc. I worked at a place where bugs reported internally were not eligible for the highest levels of severity, because after all no customer had noticed (yet). So mistakes reported by customers counted against managers, but ones caught by developers did not, regardless of how much effort was required to fix them.
> It should not be surprising that the criteria on which they are judged do not include technical decision making.
Absolutely. Even individual technical contributors are judged on vague criteria. I'd argue that 'being liked by your manager' is more important than being technically excellent.
> So mistakes reported by customers counted against managers, but ones caught by developers did not, regardless of how much effort was required to fix them.
Exactly. Also, I've never seen technical debt (myopic technical decision-making) affect evaluation of management.
Reflexively, I keep hearing stories (and seeing some firsthand) where technical managers are making elementary mistakes when it comes to people matters.
Many of these things are so widely established....
It's a problem in both directions. In my view, the non-technical managers need to learn to take more counsel from the technical experts working for them, since most technical matters can be openly discussed. People matters, at least some of the sticky ones, can't be openly discussed with a panel of experts.
Right, but as the article points out - you get compensated (10x) better for it in the management track. There are outliers of course, but they are just that - outliers.
It is biased. Middle management makes usually less that senior programmers. His perspective is biased, he compare senior developer to VP/CTO roles. It way more difficult to become someone high in management structure. Since manager ratio is 5-10 to one manager, and high level manager is for every 50-100 employees you need to very lucky, in right place and time.
Aw, this is a sad story. I'm sure there are more positive things in life this guy could look back upon. Starting his own company sounds cool to me and he is obviously a caring brother.
> So yes I regret not taking that choice and seeing where it would have led me, yet I would have missed all the fun of writing code and the soul-draining jobs that often come with it where you can’t really fix anything.
I believe there will more often be good jobs than soul-draining ones for programmers in the future. Tech people will become better leaders and create better positions for young programmers. Even janitors are sometimes very happy in their positions. It depends on management and your state of mind.
I have a little bio myself on the subject of being "just a programmer" [1]. Everyone makes mistakes and wonders how life would've been different. The trick is to not dwell on them. Stay curious, take breaks, read some self help books, seek out new friends and activities, etc. It's not easy but a little hard work to get out of some bad habits can feel great.
Regrets as a programmer:
1. Every piece of unpolished, unfinished code that management decided should ship to the customers regardless
2. Ever using node and npm.
3. Seeing and living through the train wreck of J2EE and the XML horrors that ensued.
4. Not seeing the beauty in simple functions early on. Not everything needs to be a class or module.
5. Most business problems are political/social - regret every time we were called in to try and provide a "technical" band aid to those same problems.
6. Again, any project with node and npm.
I used to hate npm with the burning heat of a thousand supernovas. I think maybe they changed the way it works because now it tends to work instead of assaulting you viciously with a massive cascade of dependency errors every time you try to install a package.
Until recently it was quite the absolute worst experience of software ever for me and I used DOS and Windows 1.0.
Every time I realized I had to use npm I would be filled with deep dread and the knowledge that I was about to have my time burned in a bonfire of errors, confusion and complexity.
Someone needs to make a sincere apology for npm.
Why has it not bothered me lately? Either it has been improved or I am using it differently somehow.
> JavaScript is actually an incredibly flexible and effective language.
== vs ===
No integers.
Assignment is declaration.
Prototypes.
Curly brackets & semicolons.
Semicolon insertion.
It may be flexible (in the sense that an Alfa Romeo driven into a telephone pole at 120 mph is flexible), but it sure as heck ain't effective. JavaScript is the great shame of the computing industry: that it exists, and that it is used, and that it is used in more than just the browser, is an indictment of our entire profession.
JavaScript: take off and nuke it from orbit. It's the only way to be sure.
JavaScript: you'll envy the dead.
JavaScript: a mistake, carried out past the point of absurdity.
No amount of cute phrases will change the fact that it is being spread by people who actually understand its flexibility instead of focusing on something that rubs them the wrong way (which, most of the time is the result of working with other, often shiver enterprisey language(s) and thinking that that's how it's done) quite effectively and there's no sign of stopping for its growth.
And that is good.
With things like rust and go backing us up in places where more verbose and static code is beneficial (for performance?) we are finally entering new age which leaves closed corp-controlled "enterprise" things (java, net - looking at you) behind.
My litmus test for whether an argument for JS is valid is replacing "JS" with "PHP" in my head and seeing if it reads the same. PHP did all the same things, but that doesn't make it a good language, it just makes it a language that's easy enough to learn for it to get popular.
I think the main reason for the popularity of object-oriented languages is that the design corresponds more closely to the physical world, which makes it easier to reason about the architecture of the software.
The flexibility of JS is not how the language is designed, it is the hole that the language is filling.
The fact that using JS you can write a browser based app, a mobile app, backend software, configuration files and flat data files (JSON) without switching gears is the flexibility.
I would also argue that if you really don't like JS, you are using the wrong tool for whatever job you are trying to do.
That'd be fine, if there was any other tool that worked in a browser. Sure, you can transpile from some other real language, but it's still javascript when you finish up, with all the foibles and warts that haven't been fixed in twenty years.
Unfortunately, instead of going back and fixing core deficiencies in the language standard, it looks like ES6 & 7 are thick cakings of lipstick on the pig.
> "Unfortunately, instead of going back and fixing core deficiencies in the language standard, it looks like ES6 & 7 are thick cakings of lipstick on the pig."
Single inheritance is awfully limiting which is what Javascript's prototypes provide. And structurally copying multiple prototypes into a single object to achieve multiple inheritance is an awful hack.
Not exactly. You can declare variables separately, if you want. In fact, a "var x = 42" statement will actually be split into "var x;" at the top of the scope and "x = 42" wherever you actually wrote it by the interpreter. The specified behaviour is a little weird and non-obvious, but once you know it, you know it.
> Prototypes.
That's a matter of taste (plus the problem of optimisation at the VM level, admittedly). Besides which, you can basically use prototypes to do classes, if that's your bag, and of course we have class syntax now anyway.
> Curly brackets & semicolons.
Semicolons are optional, which however you complain about below. So are some curly braces. The only alternative to having some kind of block delimiter would be significant whitespace, which is a perfectly legitimate preference but has its own warts.
> Semicolon insertion.
Around which the rules are fairly simple to understand. It's possible there's just a better way to do it (I know Go has ASI, for instance, but have never heard anyone complain).
---
I find this a most peculiar list of JS warts (what, not even a shout out for ==, bizarre implicit type coercions, etc?) There's no doubt it is a deeply flawed language, a big part of learning it is learning about the various spike-pits lying in wait for you, and the extra tooling required to mitigate its flaws comes with its own set of costs.
At the end of the day, though, you can write pleasant, readable and - yes - effective code in JS. There are worse languages to be stuck with, as long as you watch out for the spike-pits.
> You can declare variables separately, if you want.
The issue is that 'fop = 1' is not an error (outside of strict mode), even when I mean 'foo = 1.' Automatically creating variables makes what could be compile-time errors run-time instead.
> Besides which, you can basically use prototypes to do classes, if that's your bag, and of course we have class syntax now anyway.
Which I also find to be a mistake. Generic functions are the right way to do OO.
> The only alternative to having some kind of block delimiter would be significant whitespace
The block delimiter I prefer is () grin
> It's possible there's just a better way to do it (I know Go has ASI, for instance, but have never heard anyone complain).
Yes, whereas good practice on JavaScript is to always use semicolons (because its semicolon insertion is wrong), good practice in Go is to never use them (because its semicolon insertion is correct).
Bizarrely, I misread it as an overcomplicated ASCII art divider. Looks like I've got a JS VM in my head...
The fop typo - while I acknowledge that there are plenty of gotchas of this kind in javascript, a gotcha that will be caught by strict mode barely even counts in the grand scheme of things. Strict mode then gives you slightly better protection than in many otherwise more robust languages (Python and Ruby, for example).
On the ASI side, I don't see how it can be 'incorrect' - it's a well specified behaviour obeyed consistently, so far as I can tell, across the vast bulk of implementations. It may be a bad design, but that's a different thing. Go's version is certainly easier to explain in a paragraph or less.
I'm assuming by generic functions you're talking about eg. Clojure protocols or Haskell typeclass functions or stuff like that, which I also prefer (I also like round parens). But at this point, you're just criticising JS for not being $LANGUAGE_I_LIKE, which it isn't, obviously, but does not count as a terrible sin in and of itself.
I return to my main point - no, JS is not a great piece of language design, but it's hardly 'nuke from orbit' bad. There are certainly things I'd rather be working with, but equally there are worse fates that we could have been stuck with after the browser wars. "Life — the way it really is — is a battle not between good and bad, but between bad and worse".
> Bizarrely, I misread it as an overcomplicated ASCII art divider.
No worries!
> Strict mode then gives you slightly better protection than in many otherwise more robust languages (Python and Ruby, for example).
I really dislike that aspect of Python; IMHO it's a pretty bad flaw.
> On the ASI side, I don't see how it can be 'incorrect'
I think it's incorrect in the sense that it's such a bad design that the Right Thing to do is to always use semicolons manually (with the corollary that if the design is such that one never uses them — as with Go — then it must be correct).
> I'm assuming by generic functions you're talking about eg. Clojure protocols or Haskell typeclass functions or stuff like that
I'm thinking Lisp's multimethods. Behaviour doesn't really belong to one object or another, an uniquely privileging the first argument is just weird.
> I return to my main point - no, JS is not a great piece of language design, but it's hardly 'nuke from orbit' bad.
If it weren't for the installed base, I think JavaScript would be only two steps ahead of INTERCAL …
Even using Class syntax you're still locked into prototypical inheritance model. There is no classical inheritance in JS. (Probably a backward step in UX to call it "Class")
Yes, but you're locked into the subset of prototypal inheritance that basically is class inheritance. A class is, fundamentally, just a prototype of a particular kind.
I think with the "No integers" part that isn't entirely true JavaScript has typed arrays now. So you could get an array of ints that way. I'm not familiar with them and whether they behave in a similar way as an int in a typed language like Java or C++, but from my reading it seems the integer view behaves (output wise) in much the same way as other typed languages integers.
Your assertion that the language is not effective appears false.
ALL the major players and financial forces in our industry have put time and effort into quite solid solutions built with JavaScript, rather than solving those problems other ways (and in some cases AFTER trying to solve those same problems other ways). Two of those companies build browsers and sit on the W3C and WHATWG. They could have presented both suggestions for alternatives and lobbied as hard as anyone can for their adoption. Neither did that.
Back in the day when I was just learning to program, I wrote a BBcode library in JavaScript. Not knowing any better, I made very liberal use of globals throughout my code.
I later went to go port my code to PHP 4 (that was current at the time). To my surprise I was getting all these errors about how crappy of a programmer I was (both from globals and from misspellings and related problems).
I'm honestly not sure how people hate PHP so hard and yet don't mind JavaScript.
For me it was things like "function_returning_array()[0]" working in JS but not PHP and other unexpected parsing weirdness like that. (Though I don't really mind PHP, just much of the code written in it :-) )
PHP7 is ok. They rewrote the parser to use a real AST which fixed a lot of the weirdness and inconsistency, threw out a ton of deprecated stuff, and made error situations saner by replacing errors by throwables. I like also that php is gradually getting strict typing as an option. Function signatures are strictly typed now, with class properties getting it soon. Plus, PSR guidelines have made the popular libraries object-oriented, namespaced and consistent. My main complaint with php these days is that it's starting to look too much like java with dollar signs.
The only truly terrible part of JavaScript is all the implicit coercions around equality checking. It would actually be a decent language if it reported type errors instead.
There are a few other smaller issues that are nuisances, like not being able to actually check if a value is a number, but I think coercions cause the most headaches for discoverability and debugging.
It would stop working if you did it NOW. That's irrelevant to the point that that's how JS should have worked from the beginning. Also, they can add these semantics to JS now too with a new type of strict mode without breaking anything.
As for how painful it would be, your claim is a total fabrication. Other dynamically typed languages are a pleasure to program in without implicit coercions everywhere. JS is widely considered a pain. Coincidence it is not.
I find that is widely enjoyed by the "silent majority" and decried as a pain by a very vocal subset of developers. It's a little surprising that 1 + '1' is '11', until you spend a little time and learn the rules instead of fighting them - then you start doing your work in a way that uses that to save time. It's not great for everyone, but I like it - and I know a lot of other good devs who prefer the answer '11' (when you understand the fairly simple rules) to 'OMFGNOIQUIT'. I find "Number beats bool, string beats number" for implicit coercions covers 95% of cases where it would actually matter. For the other 5%, just type it in the console.
Because I like it that way, doesn't mean you have to as well - but it also doesn't mean that because you don't like (or even most of the commenters on HN) it it is "widely considered a pain".
> It's a little surprising that 1 + '1' is '11', until you spend a little time and learn the rules instead of fighting them - then you start doing your work in a way that uses that to save time.
You are omcpletely underestimating the complexity of JS's implicit coercions. If you haven't already seen it, watch the Wat talk [1].
Finally, the fact that you need the console to even understand the meaning of a code fragment is a perfect example of language failure.
> Finally, the fact that you need the console to even understand the meaning of a code fragment is a perfect example of language failure.
Isn't that the case for every language with polymorphism? Even C, once you add function pointers to the mix.
I've certainly heard polymorphism and OOP criticized on these grounds, but unless you're a hardcore kernel or embedded developer, that ship sailed about 25 years ago. Everybody uses debuggers and log statements these days. Expecting to be able to look at a code sample in isolation and know what it does is unrealistic for any large-scale system.
> Expecting to be able to look at a code sample in isolation and know what it does is unrealistic for any large-scale system.
My number one favorite thing about Go: you can look at a code sample in isolation in a large-scale system and know what it does.
Why? Every identifier is either lexically scoped or lives in a module. There are about 6 control structures and they all do what they look like they do. Operators are all defined over a small set of well-defined primitives, they can't be overridden. Closures, callbacks, and non-linear control flow are rare and obvious. There is no way for code to be skipped by exceptional control flow apart from the single escape hatch called panic().
It's really like no other language I've ever coded in. You can work in large codebases that are as clear as your average Go code, if you have strong guidance about what kinds of code complexity are acceptable and you are ever-vigilant about avoiding language pitfalls, but nothing is quite as freeing as knowing for a fact you will be able to parse someone else's code because there wasn't any way for them to write something you can't understand.
You still have interfaces. When you invoke a method on an interface, you don't know exactly which code will be called. It could do anything from crash to format your hard drive. In theory, the semantics of the interface should be well-specified and any implementation that doesn't conform to them is a bug, and Go culture holds pretty strictly to this, but there's nothing in the compiler that imposes solid restrictions on what the implementation of an interface can do.
If you're disciplined, you can write solid, easy-to-understand code in any language, Javascript included. I've worked on million+ line Javascript codebases and been productive (as a developer new to the codebase) within 3 days. But this imposes trade-offs in verbosity and flexibility that are often not worth it for most (non-Google-scale) JS codebases.
> Expecting to be able to look at a code sample in isolation and know what it does is unrealistic for any large-scale system.
I don't know why you'd think that. In a typed language, you simply look at the types and you know exactly the intended meaning of a code fragment ie. what inputs are needed, what outputs are produced, etc. That's not remotely the case for JavaScript due to its implicit conversions.
I'm with you except for wanting type errors. I like ducktyping and in coffeescript -- I know, I'm not cool -- you get the existential operator `?` which makes ducktyping really nice.
I really think the problem with javascript really boils down to the fact that it's still in beta and will never have the breaking changes necessary to move it to a 1.0 language (i.e . the ECMA committees commitment to not breaking the web). But, it's easy enough to get around that in new projects by using linters that get rid of the bad parts.
Duck typing for methods and such is fine if that's what you're into, but if you're checking for equality, you want type errors, period. Only like equals like. Doesn't matter if your language is statically typed or dynamically typed, equality means something very specific and it's very surprising when those expectations are violated.
Thank you for this post. We have a really bad habit of chasing "cutting edge" fads as an industry. It must come from the tendency of programmers to burn out and bow out, which exacerbates the tendency of young bucks to lack any respect for their elders. Software dev is still a very immature industry.
I respect Brendan Eich a great deal and I truly appreciate what he did for NetScape in 1995 by introducing JavaScript. What I don't appreciate is that we decided to extrapolate that madly-rushed, designed-and-implemented-in-less-than-a-week-of-all-nighters language not only into the default client side language for the web for the last 2 decades, but we have also allowed very badly informed people to start using it for server-side applications.
There has to be a way to bring order to this chaos. Any ideas?
I can't say that Javascript is the most fun language to use, but I think that's because given the way it's positioned, it has a bit of a hoarding problem. It's picked up the millenial issue that the stupid things you said in your teens are never ever going away, because they are permanently spread through the internet. Fun.
The amount of "Bad Things" does make stumbling hazards, which is why I'm completely convinced that if you can, you should use a saner language, but there's no <script type="python"> (yet?). In those cases, we need to fence off the trash, put up warning signs on the exposed wiring, tape a post it note to "v instanceof Array" and try to write the sanest javascript we can.
JavaScript was supposed to be a sane language (Scheme), but it is what it is because Netscape's management decided (twice) they need to be competitive with (first) Java and (later) Microsoft right fucking now.
When I worked at DEC as an MIT intern many years ago, we wrote the PDP-10 OS in Assembly Language (MACRO-10); I wrote the spooler. Look at some things from http://pdp-10.trailing-edge.com/ - you can see how we did it: a lot of appropriate abstration, and great in-program documentation, built around a sound system architecture.
My question: IF we all (mostly) don't like JS, why don't we simply take Webkit or something and build-in our own (presumably) better language? Call it the "Hacker News Language for the Web" or something; the goal being to replace JS inside the browser. Naturally, we'd need a JS-to-HNL converter; but done properly, both front-end and back-end could be the same, and could be built on the 'natural' structures of The Web, 2020-style (and beyond!) (Maybe HNL is [a descendent of] ARC? Just riffing here...)
One more idea: If browsers would permit batches of signed and authenticated code to be made part of the browser semi-permanently (e.g. node.js, other JS/HNL libraries), then that would save the download time, speeding up sites. In fact, if the code were truly trusted, it could even be in assembly language(!!!! tie in, above) for some totally kick-ass performance. Assumes security issues properly solved.
> JavaScript is actually an incredibly flexible and effective language.
My problem with people who say such things is that they almost always have been saying the same thing for many years, while the language itself did several 180° turns and backflips.
"Classes are stupid, we don't need them!"
"Look, we have fake classes in ES6!"
"Asynchronous code is awesome!"
"Asynchronous code is horrible!"
"Prototype mutation is awesome and powerful!"
"Everything should be functional and immutable!"
If someone considers the current direction of JavaScript good, then they should have considered several previous directions absolutely idiotic. If, however, they are simply oblivious to the incessant flip-flopping of the "mainstream" JavaScript, their opinion about quality of any language is worth very little.
I feel the contradictions in JavaScript and it's community is actually a reflection of the background of any one who uses JavaScript coming from other languages. Those people bring their paradigms to JavaScript. I like that about it. Though I know many other languages JavaScript is my favorite language and I use it at work. It's the first language that I took a deep dive into programming with.
I just don't understand all the JavaScript hate. I've used languages like java and python, basic and pascal, c, c++, assembly, and for the past 15 years JavaScript... I can say without hesitation, that it is my favorite language... I have a hard time explaining exactly why that is... sort of like trying to explain why chocolate is my favorite desert, I mean I like all kinds of ice cream, but chocolate is my favorite.
Java, Basic, Pascal, C++ -- you're not exactly listing very good platforms in the first place. Python's a bit better but still seems antiquated, like Go.
Try Haskell or an ML. Heck, even C# isn't that bad these days.
JavaScript's just a minefield of pitfalls. To be fair, it was designed in 10 days, and progress on it has been slow to say the least. (Hence the silly crap like having a "left-pad" thing as a 3rd party "module" instead of part of a proper stdlib.)
Other stuff like using "function" as the lambda identifier just make me shake my head. Or not having integers. Just poor decisions all around.
Same here. I've been a professional developer for 20 years. I love JavaScript. To me, programming is mostly just about functions and simple data structures. The hard part isn't getting the machine to work, or having easy access to powerful programming constructs. The hard part is finding the simplest model that will get the data where it needs to go, and that requires not programming language features but good design practices.
Generally, unless you're doing systems or realtime programming, or you are writing a serious fast path for a lot of data, the only reason you'd need more than the very basic features present in every programming language is that you're trying to do something more complicated than you should be.
Many programmers seem willing to take on almost any amount of complexity in their toolchain if it will allow them to express an idea in a slightly more concise way. I would prefer to stay much closer to the basics and just take the time to make really beautiful and powerful functions, rather than rely on a rickety stack of concepts that, if not confusing to me, will be confusing to many of the people who end up interacting with my code.
I am not node developer, but I don't think it solves the problems it is supposed to.
Serving pages rendered with node via webserver (nginx, apache) is not the most pleasant experience compared to e.g. python + wsgi
npm packages are not packages. It is simply a dependency definition + repository. Pull in package from npm and it is nowhere near usable until you figure out where it actually puts the files you care. You only know it's somewhere in `node_pacakges/`. Compare to e.g. gulp or python pip. You just pull in a package and it's usable.
> Pull in package from npm and it is nowhere near usable until you figure out where it actually puts the files you care. You only know it's somewhere in `node_pacakges/`.
Not usable for what? All you need to do is `npm install package` then in your project `const package = require('package')` and it's usable. Also, it's `node_modules`, and gulp itself is a task runner for... Node, so I don't understand your point there.
> 5. Most business problems are political/social - regret every time we were called in to try and provide a "technical" band aid to those same problems.
Why? Social and political problems are really hard to solve. If you can use technology to sidestep them, that's exactly the right way to do it.
I think GP was suggesting that technical bandaids were being placed on compound fracture type injuries, rather than addressing the root issue.
If you sidestep the problems entirely, sure, but I think that's the minority of cases where a genuinely hard social/political problem exists, a technical approach attempted, and the outcomes measured. We can all readily recall Uber as an example in the positive direction. What we are worse at is seeing or recalling the hundreds of times humans struggled with a technical solution that hacked away at the visible leaves while the root remained unaddressed.
I've been in many situations where people thought that the solution lay in something technical, whereas the actual issue was social/cultural. In the worst case, time and energy is spent on the technical thing, which then simply fails when it hits the 'market' (so to speak). In the best case, the technical solution papers over a few cracks and merely kicks the can down the road.
OP must be very young. In corporate environments there is no sidestepping.
Say there's 20 pounds of work for 10 pounds of (recently downsized) people across multiple departments. The way you'd like to see technology work is turn 20 pound of work into 10 or less pounds of work for the entire company. The way technology is actually used in the real corporate world is your boss has you automate procedures and policies such that you push work out of your department and onto even more overloaded competing departments. That's how the strongest competitors are determined for promotion and bonus.
To some extent its a startup vs old company problem. Trust me, if technology could be applied to solve the whole company wide problem, grandpa would have already done it with punchcards decades ago, the only innovation that happens in old companies is pushing work and blame onto other departments. Hey, I have a number that proves we're now better, and that's all that matters.
The other way it works is as a weapon / scapegoat. They don't wanna work with us and I don't want to force them, or can't make them. But I can tell my programmer to change the bounds checking on that input field and they'll be forced to cooperate or shut down. If it works and they cooperate with us, I'll take the credit, if it fails, I'll blame and fire the programmer. Or if you don't want them to work with us (as in dump work on us) the programmer can sabotage their system, and again you can guess the different pathways for reward and punishment.
Oh, I've worked in big companies. I was just trying to be an optimist here.
As an example where my optimism is warranted: broken builds. You can either make it a `people problem' and tell people to be super careful; or you go for the technical solution and automate the whole thing, so that only commits that build and pass tests get merged into master.
Of course, there's no office politics in my example; so this was easy.
The humble spreadsheet liberated white collar workers to do automate simple (and not so simple) calculation tasks themselves. No begging the computer folks necessary any more, who can hold your department `hostage' at will.
You can bet that from the point of view of spreadsheet adopters, they sidestepped a whole host of political problems.
This is so true. It also explains the revolving door of CIO/CTOs at many places. Every 3-5 years, a new one comes in, makes minor changes and avoids the elephant in the room. On and on we go.
Politics at every level is nowhere close to being a solved problem.
Most business training still seems to rely on parables and cool stories, larded with huge doses of Standard Business Vocabulary to make it convincing (win, compete, achieve, aspire, excel, lead, inspire, and on and on.)
If people really knew what they were doing there would be a lot less noise and a lot more quiet wise action.
>1. Every piece of unpolished, unfinished code that management decided should ship to the customers regardless
Looking back, I view this as a pro. You get to work on more projects that way. I spent five years working with an "ideal" manager that trusted coders to make the deadlines. When I look back on that, while it was the only time I've ever gotten to code things to "perfection", it was also a big black hole of working on a single project for way longer than it really needed.
Of course there's a limit beyond which the lack of polish and finish makes everyone less happy.
I'm currently in this situation. My manager(s) and colleagues have been angels and incredibly patient with me rewriting the same library several times. I just need to get this out of my system and they seem to have understood. But you're right, it's not always best to set your own limits.
That is a very reckless attitude - people will use that software, and lose much more time on the problems than it would've taken for the programmers to fix them. And then we go and criticise Apple and other upstream vendors for doing the same thing…
Granted, in a decade, if you'll still be in this profession, you'll remember J2EE and XML and Node and npm and pip and git and Golang and JavaScript and code polish and functions-vs-methods debate as tiny specks on what actually constitutes you career. The author of the linked article tries analyzing his entire life from a standpoint of being a programmer, and your comment analyzes last few years of your life staring at /r/programming.
I agree completely with you. I think the answer is you can't help some people. It's just sort of a myopic view. Could you imagine in 50 years someone asks you what regret you had about your career and you said "that I ever used node that one week in 2015"? I mean, wow.
If you spent a couple years building everything you could on top of Node and then realized you completely disagreed with some of its basic design then that would be a memorable experience.
This may be hard to understand if you are still in love with Javascript.
"I can still feel the regret of not seeking the challenge of just leadership." He's right. Programmers need to get into leadership, because they have a chance of knowing what "just leadership" might look like. When non-technical people lead technical people, the chance of getting into a good flow is less (though by no means impossible).
The problem is that many technical people are not "people" persons. Part of that may be personality, some of it is background, but a lot of it is study and thinking too.
My brother builds huge buildings. He's very proud of them. He often (gently) gives out about the marketing people and their mad notions and lack of technical understanding. But, as I point out to him, if they don't sell the apartments, he doesn't get to build the buildings in the first place.
Ultimately, therefore, if you're going to put your skills into a corporate enterprise (of any size), you need to accept that it all originates with selling. "Business is simple", says Alexandre Dumas, "it's other people's money."
Progammers should either accept that they love playing in the intellectual sandbox of coding and that the material rewards will be variable. OR they should seek leadership.
Lawyers, Bankers, and Doctors get to play in intellectual sandboxes, and they get paid really handsomely for it, even if they are completely anti-social people.
The reason we get paid less is that we don't have any of their safeguards:
- Lawyers aim to become partner. It's very socialist-y this way. The goal working in a firm is to become an owner of the firm and share in its successes.
- Doctors have a guild. They keep their bottom end tight by regulating who becomes a doctor, keeps them always in demand.
- Bankers know how much things are worth. That's their business. They know how much they generate, even if they are far from the point of sale. They also aren't squeamish about asking how much their co-workers make, and negotiate aggressively.
Programmers should start realizing that the main reason we make little is that we undercut each other a lot, and are outright hostile to many tools that other professions use to safeguard their position.
I think Lawyers and Doctors I think are much similar to programmers than you think.
Regular front line grunt work employees work long hours and get paid decent professional wage. As you said they can get promoted to Partner, a partner is a part owner of the business, they don't do much technical work, they do a lot of management. There are similar opportunities for Software people to start small companies and make money too. its not quite the same as there aren't the big company partnerships, but big startups with employee stock are close.
The biggest difference is the half life of knowledge in Software is much shorter.
Both lawyers and doctors have powerful associations that control and regulate the labor supply via a certification process. Technology doesn't have this. In fact, technology has the opposite: a H1B program that brings in more and more labor supply to keep wages low.
You could go further regarding lawyers: they're a government jobs program. On balance a beneficial one, but a government jobs program nonetheless. If there were no government there would still be doctors and programmers (albeit probably fewer), but there wouldn't be any lawyers.
People also seem to value experienced Doctors and Lawyers. They just see the front of a web application, and if it looks OK they assume that it has been put together well.
Yep, this leads me to my biggest regret as a programmer: going into engineering instead of medicine. I really should have become a doctor or some other kind of hospital worker instead: the money would have been at least as good, and I would have gotten to work in a place with lots of women.
You would also have had to go to school for several more years, incur massive debt in the process, and work insane hours for virtually no pay as a resident.
Yeah, but the long-term rewards definitely seem worth it. Also, they cut back on the residency requirements a while back because sleep-deprived residents were making fatal mistakes.
You are the first person who ever described the lawyers' dog-eat-dog up-or-out competition for parter as "socialism" -- unless you meant it as a sarcastic analogy to Chinese Communist Party
'Leadership' is not a job description. I hate it when people act like it is. Even if your job is making decisions; leadership isn't making decisions, it's making them in such a way that those under you feel empowered by them, rather than powerless in the face of them, and that you take responsibility for any fallout from those decisions rather than letting that shit role down hill.
Everyone I know who has wanted to 'bring leadership' in their role, and nothing else, has been a complete waste of space, at best useless, at worst an obstacle. I have never been glad to have such a person working with me.
As a 30yo dev, I started getting pains in my wrist, and numbness on one side of my hands (the pinky and finger-next-to-it).
I switched to a ball-mouse at work, and no longer get this. I believe the large amount of time using a mouse had compressed and damaged my nerves somehow.
I'd recommend the switch for anyone spending hours with a mouse.
Usually after using the mouse or my hands for a couple of hours or so while. If it started happening, anything that compressed my wrist (or something) could begin to set it off.
Do you have anything on or around you arms when you sleep (or lie on them?).
I have been using a trackball for many years (logitech marble mouse) because of the issues I was starting to have in my wrist. That, and typing correctly helped avoid wrist pains for me. It is something I haven't thought about in years.
I never learned to touch type, and type pretty erratically.
I sometimes wonder if the inefficiency of movement is actually better wrt spreading the load. If the closest digit always presses the same key, there maybe a bias towards the same, repetitive movements which are often bad.
Just for your info - that numbeness is your ulnar nerve flaring up. There are three main nerves in your arms, the radial, median and ulnar. If you start having those issues again, there may be an issue in your ulnar tunnel, aka where your funny bone is in your elbow.
Typically, if the issue is worse when your arm is bent, you know it's that. Just wanted to save you some trouble googling things if it happens to comes back.
I used to get the same thing playing ultimate (frisbee).
when I caught the disk, the edge would snam into my wrist. I hear volleyball players get the same thing. I made a wrist-protector from tap and bandages. Eventually though, the numbness still came, maybe even worse due to the false protection from the protector (like how boxing gloves actually harm boxers more in the long run by allowing fights to go on longer).
Do you know of a resource that explains all of the causes of various RSI symptoms and how to avoid them? Like how did you learn about the ulnar issue?
I've found that there isn't an RSI doctor you can go to easily or look up on yelp, and when you go to doctors they can be pretty useless in this category.
Oh man, do I feel you on that. Doctors are fairly worthless in my opinion for these issues. I say this having dealt with various RSI/nerve pain issues for over 6 years, and tens of thousands of dollars in out of pocket medical bills. They'll pretty much always be like "just take an Aleve", or "I don't know, do some physical therapy or wait and see if it gets better. Next patient please!". Your health and getting better will be on your shoulders.
With that in mind, I'd like to preface all of the following by saying: I am not a doctor. This information is for educational purposes only, and is not meant to be a substitute for professional medical advice.
Here is a long, varied guide on everything I've learned and things that have helped. Most of my knowledge has come from trial and error, and reading books and medical papers.
I have had tingling, burning pain throughout my arms and hands for many years. I also had several bouts of nerve pain in my legs. RSI and nerve pain stuff seem to go hand in hand. A lot of this advice ties into reducing nerve pain as well. I've had three surgeries total to move my ulnar nerves out of their ulnar tunnel so they would stop snapping over the bone and causing me pain. This wasn't the only cause of my issues though.
A lot of pain in your arms actually originates in your neck/shoulder area. There is an issue called Thoracic Outlet Syndrome that is suspected to be the cause of most of this kind of arm/hand pain. Chances are, you have bad posture.
Things that helped:
- Using a macbook pro for all computer use. Using a mouse or raised keyboard is awful for your hands. The trackpad placement with the keyboard, and the fact you can set the trackpad to register a touch (without pushing down) as a click are very helpful. Make sure you're not bending your wrists to the left or right when typing. It's a hard habit to break, and you're probably doing it now, but ideally you want your hands to be straight in line with your arm. Wrong - https://ehs.okstate.edu/modules/ergo/hand4.gif. Right - https://ehs.okstate.edu/modules/ergo/hand3.gif. Also, don't raise up your hands when typing or using a mouse, it stresses out your forearm muscles.
- No keyboard or mousepad wrist pads, they just constrict the nerve pathways in your wrists.
- You want to make sure your posture is good. When working at a desk, you actually should be sitting back against the seat, with your arms supported by the arm rests. You shouldn't be sitting straight up 90 degrees, but leaning back a little, with your back supported against the chair. This picture kind of shows it - http://cdn.makeuseof.com/wp-content/uploads/2013/06/computer... - though I would say you should be a bit less far back than the 135, maybe like 110.
- General posture stuff: when walking make sure your hips aren't tilted forward or backwards, make sure your shoulders are slouched forward, make sure your head isn't tilted forward (99% chance you do this one and don't even realize). Make sure your shoes' soles aren't worn down - if you see they look uneven buy new shoes.
- TMS (Tension Mytostis Syndrome) - basically is stress and anxiety making your brain subconsciously cause your body pain. Really helpful with me way after my surgeries in getting from 3-4 pain level to 0-1. I read this one - mahyarm↗
Wow thank you! I'm not at that level of pain myself, but I've started to notice symptoms that started to worry me, one of them being that numbness you originally described. I want to prevent a disaster before it happens, since my livelihood depends on it.
I have been working as a programmer for 8 years. I agree with him. It is exciting to learn new things and implement elegant code but if the bottomline is money, my experience is that you have to get into leadership roles.
Ouch, that was a sad post. "Yes, and actually we have two ladders of advancement here - you can deepen your technical expertise and go up the technical ladder if that is your thing", an enthusiastic recruiter tells you. But when you reach the bifurcation point, the management path seems fairly clear - just try and get more people under you and you will be ok, but the technical path is murky as hell. I'd argue that this third path (becoming a genuine world-class expert as opposed to staying "just" a programmer or going into management) is the hardest. Not in the least part because at most places real technical challenges are scarce (and management challenges are in abundance). I would love to hear some thoughts on how to pull it off.
I imagine that a core skill is the ability to communicate clearly and prolifically about technical topics to a mix of technical and nontechnical audiences.
Sometimes the cause of that is management, and I long to be on that side defining the missing specs, building out the absent project plans, speaking to customers, allocating resource, championing it all and pushing it forward. At those times I despise being a programmer because being a programmer isn't enough to get product shipped.
Other times (but it feels less frequently) the cause is the programmer. And we all know well enough how frustrating it can be to watch someone not do what you think is easy, and how quickly we want to stop managing, stop designing, stop everything and just code our way out of whatever mess a project is in. A sole programmer is not usually enough though, and I stray back into wanting to manage so that we can ship.
Either way, just having that desire to ship, to make a difference, I feel has kept me in a limbo where I straddle both and am frustrated and hampered by both, and never quite shining at either.
Still I regret not shipping more, and rush into the areas that I hope will help product be shipped.
My greatest career joy was running my own company. I know I failed at the sales and marketing, but we did ship. We shipped a lot, and made a lot of people happy. A massive achievement in a short amount of time, and a good mix of both management and programming. A joyful time even though it was hard work for little pay.
It's a shame positions that really blend these skills seem quite thin on the ground or that they don't really value those who can move from one to the other.
So true. I think a lot of programmers (myself included) fall into the pit of wanting to perfect their code too much. As you look back on your career, you realize ten shipped projects with decent code would've been better than three shipped projects with perfect code. (This is probably true of more than just programmers and code too).
Seventeen years ago a programmer much senior to me told me: "Don't let the best be the enemy of the good." It's probably the best programming advice I ever got, and I should look him up and thank him.
I think this discontent stems from wanting to fix the problems that you see on the other side, and you make a good point. If you're a programmer, you look at the bad manager and say "I could fix this if I were in his shoes". If you're the manager, you look at the bad programmer and say the same.
Maybe there is a way to just fix problems where you see them?
I take the constructive approach, I really only care about the problems that are holding up shipping, that impact critical path... however you want to define that.
It's the set of problems on the "other side" that are causing delays that are the ones I care about. The ones that don't cause delay I don't mind.
It's only constructive to focus on that which holds us up, slows us down. Then I want to fix those.
The frustrations stem really from the wedge that we collectively seem to shove between engineering and other parts of a company, including middle-management (or worse, that we destroy middle-management and lack well-seasoned processes that actually help).
The walls we've built within companies, between skill sets, leads to a powerlessness to get things done faster, better.
I would have this dilemma too.The choice of whether to take up a Technical Management role to remain in coding is something every hacker will face.I say hacker because I consider a hacker different coder on the basis that a hacker loves what he is doing.What you need to realise is that context matters a lot:
For example,from the OP's link "When I pointed this out the manager said [...] Eventually I gave up and left.
This change could be brought about without being a VP/CTO too.It would involve taking up more responsibility than what your current job description dictates.If you as an employer care enough to bring about change and be considered responsible for such changes ,then you will be able to bring about the change you wanted.
The OP also says "(I knew several people) but they were afraid to make any changes".This shows that those people were not ready to take up the responsibility for the matters discussed.I feel that the difference between a programmer and the rest of the professions that the OP mentions is the difference between "People Management" and "Code Management".Something which commonly intersects in the role of a "Technical Lead".
Also keep in mind that it commonly happens that one of the first few programmers become a CTO? .That is not only because of the requirement of such a position but also a genuine care for the product which leads to him shouldering responsibility for the same.
So now if you were doing this responsibility shouldering and people management for 10 years,you cannot expect yourself to up-to-date and be tech savvy forever.
Some people move to that position to also ensure relevancy.
-It is much harder to remain relevant as a programmer in comparison to being in a managerial position.
TLDR;It all depends on how much you like to code in comparison to see through a finished product which sells.Both are symbiotic fields which need specialists in each area.
633 comments
[ 4.7 ms ] story [ 322 ms ] threadI have friends who save ungodly amounts (in the 40k/year range) and their employers/clients still think they're damn cheap.
Income arbitrage. Look it up :)
At the moment really good developers in London can hit £80k+ per year in full-time salary but living costs locally are insane. If you are contracting in London you can make good money but you are still hindered by the high living costs. One big drawback is that I have seen very little remote work opportunities for London companies to anyone not living locally. This gets more pronounced the closer you move to the Data Science / Business Intelligence space, but even for Web Dev etc it looks to be not that common. So as you say it might have to be the big cities in the US as it seems the US are much further in accepting remote work than where I currently am.
My particular friends (and me of old) are located in Slovenia, clients are in San Francisco. You can have a decent life in Slovenia for $20k/year. You can easily get a gig in San Francisco for $60k/year. Probably even easier for $100k/year because of the whole signaling thing.
I wasn't able to save as much as my friends are because of lifestyle inflation, but I sure had a lot of fun. My margin isn't as high now that I live in San Francisco, but my glass ceiling is higher. Tradeoffs :)
PS: as you can infer from above, you can also always move. Nobody says you have to stay in a bad economy.
For example I know that the UK (and mostly London) is extremely tolerant of non native English speakers. However from experience I know this will count against you when people are looking to hire (I was on the hiring side at one point so know how my managers perceived this.)
Germany is again another example where unless you speak really good German you will have some pretty tough challenges. I had a friend who grew up speaking German as a second language, who completed his masters in Germany, be told by his boss to go for German writing classes if he wants to get anywhere in their company.
Europe might be one big open job market but Language honestly makes it far more difficult than it seems at first. This also goes for settling into your new country even if you are working for US or UK companies as your day job.
This is not a problem I personally experienced for English speaking countries. Started learning when I was in kindergarten, always immersed in the culture via TV and internet, did English and English writing as a hobby pretty much since starting high school. Until they hear my accent, most people assume I'm a native speaker.
So I lucked out on that front.
The hard part for me was the visa. But that is also a solvable problem.
That is something I did not even want to mention due to the challenges it brings. It is not insurmountable but does sometimes come at a high cost of both money, time and stress.
Rent and utilities in Ljubljana cost us about 800 eur. What is left is maybe enough for one person, who will never own any property.
$20k/y is close to a welfare level in Slovenia, except maybe in countryside.
BUT, you can open a sole proprietorship, fill out some forms, and voila: you pay 4% taxes. After all the healthcare and stuff, you end up with 1068 euro net on a $20k (17k eur) yearly revenue.
At $48k/year, you get 3040 euro/month net. Now you're getting paid almost as much as the president. Your taxes will go up a bit next year, so save up, but for the first year you have plenty of extra money in the bank that you can leverage for making even more money.
And if you target San Francisco, you're competing with people who are asking for $130k+/year.
;)
It is a shame that the UK does not have anything like this. The best you can hope for is to contract and that give an average tax of around 26% to 30% depending on how creative your bookkeeper is.
Germany as my alternative example is quite a different story, there being freelance is very difficult due to the cost of healthcare that you HAVE to pay and their tax law is extremely complicated, you pay loads more tax than the UK for example. I know some friends who too permanent employment in Germany as it was more beneficial than being freelance.
Sure, you'll always be renting, but this is still significantly better than working for most local companies.
Swizec is right, there are ways to incorporate to pay less tax, but not everyone can go that way.
Call me cynical, but I'm a bit skeptical that a company would pay more than they had to.
Note: Assuming of course your role is not super vital for the whole company or some such.
And no, your salary/rate isn't defined by where the company HQ is. That part defines their price tolerance. The price is defined primarily by how much you ask for and what you can offer in return.
I couldn't agree more. I know a lot of developers that have the mentality to just accept what they are offered without negotiating. It's up to you to get a good price for the value you bring to the company. Negotiation is the best way to significantly increase your salary, regardless of your technical skills.
Patio said it best: http://www.kalzumeus.com/2012/01/23/salary-negotiation/
If you have no other opportunities and no one is offering anything better than you have to accept that. Than they capture the rest of the value.
Companies will not pay more than they have to, but if you demonstrate your worth they will be happy to pay it.
I make high six figures and am completely location independent.
I think it also depends on the type of company and what they are after -- are they looking to save money by outsourcing or are they looking to expand their talent pool? If they are looking to expand their talent pool, it is more likely to get closer to what the company HQ is, minus some "remote work" discount.
After all, if I'm the manager of some San Francisco tech. company and I can get a great programmer (even by San Francisco standards) for a 20% discount to local talent, which I know is a 20-30% rate above what they programmer will be paid in their community in a fly over state -- it's win-win for everyone involved and they are much less likely to leave.
Developers get paid dick all here.
I remember my school stats being that CS new grads made an average of about $70k or so out of school. Pretty sure that number is way up at a top program.
1) Major open source projects are usually sponsored by a corporate parent that employs full-time programmers on the projects. The company steers the project. Independent contributors tend to be young people trying to fill up their GitHub profile because a blog told them that's how you do a résumé these days.
2) Small open source projects are often dominated by young people trying to fill up their GitHub profile because a blog told them that's how you do a résumé these days. Experienced programmers may not want to get involved in that.
If the goal is to learn about public projects and write something one needs and feels important, then, sure, that's awesome.
Also, I know programmers making 50k, more than those making over 100k, but I live in the midwest.
Cant save much, but I can take care of my family and that is what is important to me.
IMHO he is trying to explain how being just a programmer, didn't let him change (in better) the faith of the companies he used to work for.
Try browsing the "Who's hiring" threads here. If you're looking to join a start-up, 99% of them are companies you've never heard of. One of them will be the next Facebook, and if you go work for it, you'll end up set for life--but there's no way to know and chances are you're going to pick one of the many who will go bust or just sputter around without making money for a few years.
Such role will not be simply handed down, though the opportunities will. Collect worthiness points. Dress for the job you want, not the one you have. Some possible general opportunities I see (not everything applies in every company):
1. Assess whatever is important to your direct management and be reliable. The idea is to have more or less consistent performance. 1.1. e.g. Say they think feature A takes 100 hours, feature B takes 50. You know they both take 75. Do A first -> spend 25h on B -> release A -> finish B. 2. Make others happy. This is important to reduce resistance for growth. 2.1. If you have options to make solution elegant and easy for others to use/integrate with, take the latter. Code has to be maintainable, but if you are the sole maintainer, others will judge public API, not the internals. 2.2. Be helpful. Do not help with every struggle everyone faces, you have your own tasks (and to maintain worthiness points), but if you personally can do this task in an hour while it would take the one assigned much more take the responsibility. Maybe their solution is suboptimal or they lack knowledge/expertise. 2.3. Make yourself authoritative source. Do not give advice/answer where someone else could give better one, but rather direct the question to someone who could actually answer that. Unless it is an opinionated matter, e.g. git vs hg. 3. Increase you scope. 3.1. If you see a better solution or problems down the road - communicate those. Might be an oversight or might be judged unimportant by management. Show that you can assess the situation and that you care. 3.2. If you see an opportunity to work on broader issues - take it. This might mean jumping to a smaller project, but taking [small] managerial and architect-like responsibilities. 4. As a new hire you have a unique possibility to grow really quick: instead of doing what you were hired to, you can attempt to prove being able to take "higher" role. Most probably this would mean taking more responsibilities for the same pay. 5. Collect trophies. 5.1. Finish projects. Then you can say "I've done that" instead of "Worked in a company doing that". 5.2. Jump ships if the company/product is going to fail, but assess. Even if Tesla would have failed, engineers working there would still be valuable for creating awesome product. There is a difference between product failing because of being flawed/suboptimal/unsuitable for the purpose and failing because of poor marketing, sales or other market reasons. Git quite possibly would have failed as a commercial product.
Work your way through direct technical leadership positions within squad/team/mod/whatever structure your company uses. Team lead is generally easy for technical folks as you can mostly fall back on technical expertise. Then try a multiple team leadership role, where you start to exercise more management, social, and coordination muscles. This will probably feel harder, and if it doesn't, check to ensure that you're actually doing it and not just leading from a pure technical point of view.
This should also give you exposure to budgeting, more experience hiring/promoting/coaching/firing and a clue of how much you like it and how much the employees working for you appreciate your style. If you leave drained of all energy more than a couple days a month, maybe it's not for you and you might want to stay at the team/squad or tribe level leadership roles.
Of course, all of this is in the context of "join a growing company, as that's where opportunities internally are constantly being created." It's much harder to be hired in from the outside into a leadership role if you've never led. The path to people leadership involves internal promotions along the way, IME.
I like coding because there's relatively little time management. It's not super chaotic except the few instances where there's a deadline. You just have to think and code, preferably in the zone for as long as possible.
Being a CTO or CEO sounds a lot more painful to manage. Lots of deadlines, people to manage, people demanding things on time from you.
There was also an interesting post on HN a few days ago about the hurdles of management: https://medium.com/the-year-of-the-looking-glass/unintuitive...
Number one point from that post: "Imagine you spend a full day in back-to-back 1:1s talking to people. Does that sound awful or awesome?" If the answer is not and "long for the days when you were able to manipulate something directly — pixels, words, lines of code, bars of music — quietly and with headphones on", management is not for you and your management career will suffer.
http://www.poetryfoundation.org/poem/173536
You chose one option out of many, and the others may no longer be a possibility. However, the writer's unhappiness does not spawn from his inability to be successful at what he does, but what the never-manifest possibility of what could have been. Maybe he would have been terrible at that kind of work. That doesn't matter, because in his head, he had the skills but made a bad decision. Instead of looking at what he has achieved in his life and career as a programmer, he is pondering what could have been in a reality that is not, never was and never will be.
This kind of thinking leads one astray.
>My sister started as a programmer 30 years ago but jumped into management [...] My sister has 10X the assets I have.
I just have to say this: So typically american.
I got sick at a similar time as the big IT death. I took time off to study organic chemistry and biochemistry. The subject really bored me in high school, but it really interested me after reading a pile of books.
I always felt a lack because I never studied something related to reality, just about abstract symbols. That I got a chance to go back to uni to study a second subject, real science, makes me feel grateful.
(And regarding 10X assets -- it was probably one of the worst decisions in my life if you consider only money. :-) )
Of course, you could just be repeatedly implementing the same thing with slight variations for years so minimal repetition in learning but maximal repetition in doing.
That is what socialism->communism was about in my country. We have to suffer just a little more and then we'll get there. Guess what. We never got there.
I know people who suffered for many years, retired and then died within a couple of years. Don't be so sure you will live 30-40 years after retirement. You can never tell.
My job is easy (for me), requires little from me and very occasionally is worth getting out of bed for. I'm probably one of the lowest paid people here. But, I take lunch when I want, I wear what I want, I have a situation that is somewhat flexible (not because the employer wants it to be and actively dissuades it, but because my co-worker and I will mutually look out for and cover for each other). The benefits are bad. Treatment by management ranges from indifference to overtly hostile for the most part.
I'm not a programmer and would put myself somewhere in the middle satisfaction wise. The money sucks but I've had worse jobs and the time off (2 months a year), while unpaid, is great.
$.02, my ultimate point was not worrying where your next meal is coming from is a luxury most people don't have - so worrying that you're not doing something fulfilling becomes a secondary concern at best.
Going by the trends you will likely live long.
>>and what is your old days worth if you broken in your youth trying to be safe when you are 50?
Far more worth than being 50, out of cash or very little of it, competing with a impossibly competitive new generation. Living in perennial fear of layoffs, making ends meet and having a roof above your head. All the while watching your peers who made sound investments already retire and having a gala time now.
>>I'd rather work, as some do, 3-4 hours every single day for the rest of my life, than 12 hour days for 10 years and then compensate my lost youth, health and relationships with yachts or whatever money could buy.
Retirement has rarely meant turning into a vegetable these days. Retirement only means financial freedom to do what you want. Imagine how valuable your relationships will be when you spend quality time with your friends and family, instead of running into old age expecting help from everyone starting from family, friends to government.
>>That is what socialism->communism was about in my country. We have to suffer just a little more and then we'll get there. Guess what. We never got there.
As a Indian who lived through socialism I can tell scores of people 'got there'.
Lifetime earning potential is almost never linear.
The only other activity that does that is Civ, and no-one is going to pay me to play that ;)
If 10x assets is what drives you, more power to you. For me, being happy right now is more important that any imagined future happiness that a fat bank account could provide. And let's be honest, you can still make a pretty decent salary as a developer.
You might be dead tomorrow; you might as well enjoy today.
I've been programming professionally for 25 years, still love it! http://henrikwarne.com/2012/06/02/why-i-love-coding/
Also, it's easy to forget that being a SW developer today has a lot going for it - especially the demand. At least here in Stockholm, if you are good at what you do, you can pick and chose where to work. So no reason to stay at a place where you are not happy. http://henrikwarne.com/2014/12/08/5-reasons-why-software-dev...
> You might be dead tomorrow; you might as well enjoy today.
Just for this remark I wish I could have upvoted you more than once.
This is something that those that live for the job, without paying attention to family and friends seem to forget.
And yes, Ican relate to the article; I've seen (I still see) junior managers who can barely tie their shoes make more money than excellent engineers with 25y experience, but that's the way the world is...
Basically 'engineer'/'programmer' is a calling for some; it is for me. People for whom this is not a calling will never be /really/ good at it (for one thing, they don't spend their spare time doing it!) and eventually gravitate out of it.
But the ones for whom it is a calling, well, sod the money, give me some nice project/people to work on/with and I'm happy.
Or, do that but also get the money by going consulting. That's what I do for the last few years. It's quite exciting being a 'mercenary' in a way, and you can dissociate yourself from the companies/products and focus on the engineering.
My very first paid project was designing the PA audio system in the Lille (france) metro. It was a fancy Mac SE/30 with a IEEE GPIO card. That was driving two big Revox Tape machines, and was playing one, rewinding the other etc. Occasionally it would also play a digital audio file (w000t!).
It was all in Pascal at the time, and I had a whooping 4MB of ram. System ran for well over 10 years!
On my first internship after high school while waiting for university applications to come out was done in Clipper and Access/Visual Basic. Also starting OS/400 backup jobs.
Not the set of languages that I already enjoyed most, but it kept myself busy during the Summer.
I can't imagine having done anything else. Sure, many other careers sound appealing. But software has been stimulating and sustainable while affording me a managable level of stress and downtime as needed. (Try doing that as a physician or veterinarian, both careers that I once considered).
That said, I sympathize with the OP's frustrations. Software jobs usually imply a rather flat hierarchy, with little opportunity for advancement other than leads or principals. Any further rise in responsibility requires that you leave tech behind and spend your days in meetings. Not for me.
However if you work in R&D without a PhD, I've found a severe glass ceiling (especially at larger companies). In general, no advancement beyond lead staff for you. If I'd known that 10-20 years ago, I would have handled that differently (get a PhD, work at smaller firms, or leave R&D). The road not taken, I guess...
The past is just a memory, the present moment is so fleeting that it cannot be grasped, and the future hasn't happened yet:) I think being in a flow state is about living with this fact, in the moment, as it is, without all the mental overhead that is past and future. You're not 58, you are brand new, right now, just as you are.
It's hard to beat the feeling of having a computer make your life easier. There's a triumph in it.
Screw that. I'd never work for a place like that.
What he says about missed opportunities, and working for idiotic management, that's the big thing here. You work your ass off, the management does dumb things, so the thing you're working on never really pays off, in money or fun.
The fact that his sister has 10x the assets is kind of an insult after injury kind of thing.
Its important for management to understand the difficulties and decisions made by a development team to properly create a roadmap for the business. I think the author is expressing that the lack of respect for the programmers opinions can be detrimental.
IMO it is essential in today's world to have competent engineering management in the room whenever any major product decisions are made.
The problem that really bugs me as well as a lot of others is perhaps more deep-seated - that the popular kids from high school really do win anyway and become your bosses, and stories like Steve Wozniak or Bill Gates where smart, technical people can get ahead of the incompetent but very personable charlatans are becoming less and less common. That confidence / arrogance really are enough to succeed (many do work hard but so do the majority of technical workers too with almost none of the rewards) in the eyes of US society is a lingering thought.
"You might be dead tomorrow; you might as well enjoy today."
This is not a bad way to live, but as I get older I am increasingly aware that there will be a day when I'm dead tomorrow. And for that reason I'm increasingly less interested in spending time in the state where "time shifts, and before I know it hours have passed." Instead I want to fill those hours with real-time concious, experienced enjoyment. Because I can't live them again.
Being in the zone and cranking out great code still feels good, but only at the time. Which I guess makes me conflicted or something.
Thank you for making me think about this.
Then I remember how lucky I am. I started with next to nothing, worked through college, and now basically get paid to play with computers all day (something I would have done for free anyways). I get to travel and have other amazing experiences. Biggie said it best, "when I was dead broke man, I couldn't picture this".
One of the reasons I think programmers always end up in this existential plight is that we are successful enough to have time to think about it. When I was young and worried about eating or having enough money to put gas in the car so I could get to work or school (or even having a car) I never thought about these things.
The days are long the years are short.
The days are long the years are short.
I remember moments from my college days that I can pinpoint to the year they happened. That thing that happened sophomore year? I know it happened sophomore year because I did it with my roommate at the time.
But nowadays I'll watch a movie on Netflix thinking it came out just in the past year or two, only to discover it came out in, say, 2007 or worse 1997.
A close friend of mine's daughter just turned 16. I remember her birth like it was yesterday. But the intervening years... not so much.
I think having kids, which I have not done, might slow time down a bit. Travel helps too.
Speaking from firsthand experience, it seems to do just the opposite.
It's a paradox best expressed by the old adage: the days are long, but the years are short.
Before having my daughter, days were fast, weeks were faster, and years slipped through my fingers. Time goes faster when you daily routine is always more less the same, and that is more difficult with a child.
So I also struggle with this exact same problem, i.e. some thing which I feel is recent is actually 5/10 years back. I am trying to work on it, so far not so successfully.
I find that if you hang around long enough and pay attention, you start to see the shape and patterns of your life. Not an original or profound observation, but it can be surprisingly easy for many of us to defer thinking about such things. What you gain from this you pay for with time, though.
In a similar experience to yours, I watched The Matrix with my son recently and was shocked to discover that it was released in 1999 - but I think of it as a recent thing. Holding my niece when she was a newborn baby and showing her Christmas tree lights, and now she's making an independent life in a big city.
In my experience, and as others have commented, having children doesn't slow time down. You're so busy with them for so long, and they rush towards their future so fast.
I'm reminded of a phrase that Sam Altman used: The days are long but the decades are short [1].
[1] http://blog.samaltman.com/the-days-are-long-but-the-decades-...
Things that are too small to see with the naked eye, such as molecules and atoms, we magnify. Things that are too large, such as cloud formations, river deltas, constellations, we reduce. At length we bring it within the scope of our senses and we stabilize it with fixer.
When it has been fixed we call it knowledge. Throughout our childhood and teenage years, we strive to attain the correct distance to objects and phenomena. We read, we learn, we experience, we make adjustments. Then one day we reach the point where all the necessary distances have been set, all the necessary systems have been put in place.
That is when time begins to pick up speed. It no longer meets any obstacles, everything is set, time races through our lives, the days pass by in a flash and before we know that is happening we are forty, fifty, sixty...
Meaning requires content, content requires time, time requires resistance. Knowledge is distance, knowledge is stasis and the enemy of meaning. My picture of my father on that evening in 1976 is, in other words, twofold: on the one hand I see him as I saw him at that time, through the eyes of an eight-year-old: unpredictable and frightening; on the other hand, I see him as a peer through whose life time is blowing and unremittingly sweeping large chunks of meaning along with it.”
― Karl Ove Knausgård, Min kamp 1
Nope. Makes it go even faster, and you remember even less.
Have you noticed that now more than never before there is plethora of amazing libraries, frameworks, language, tools, platforms, clouds, etc. that are easily available to use and if you like to build stuff WHY NOT CREATE YOUR OWN THING and come up with your own ideas and build them instead of continuing working for one company probably using the same software stack? Why limit yourself? have you entertained a regret like this?
I ask this, because I'm in the same boat as you and this is my small regret though I'm working on the side, slowly, to build my own thing in the free time that family and my day job allows it.
Cheers!
To me the 'my sister has 10x the assets' is like saying 'my sister is going to be ok in her retirement years, while I hope I'll be able to keep working for as long as I need to', but maybe I am reading that through the lens of my concerns/fears
> I came to a fork in the road and took the one less traveled. Perhaps now I realize why.
He seems to disagree with Frost that the road less traveled is the one worth taking, judging from the title and overall tone of the post.
But everyone get it wrong: https://news.ycombinator.com/item?id=10071717
> I took the one less traveled by, And that has made all the difference.
Very much the in the same theme as the Monty Python gag:
He is imagining this despite the first three stanzas being about how similar the two roads are, how equally traveled, and how he regrets that he'll only be able to take one. He knows he's making the choice at random, and knows that in the future he will remember otherwise.
Quoting:
"Though as for that the passing there/Had worn them really about the same/And both that morning equally lay"
The poem states that the two roads are basically the same.
Further points of interest...
"I shall be telling this with a sigh/Somewhere ages and ages hence:/Two roads diverged in a wood, and I—/I took the one less traveled by,/And that has made all the difference."
The author knows his own folly: that he'll look back and say it was an important choice, that he picked the path that was more special. When of course in fact he did no such thing. It's a poem about how people self-aggrandise and think their choices more important and better than they are.
Of course, no-one ever actually reads anything other than the last two lines, so the point of the poem ends up being missed. Which is ironic, given the actual message.
Fun fact: the poem was written with Edward Thomas, a good friend of Frost's, in mind. Frost said of Thomas:
"No matter which road you take, you'll always sigh, and wish you'd taken another."
Thomas was invariably lamenting how he should have taken the other option in any case where there were two things to choose. Which sheds a little light on the humour in the poem.
> "No matter which road you take, you'll always sigh, and wish you'd taken another."
There's no disagreement here. It's the same interpretation of the poem.
Reality is, some choices really do effect our lives and don't lead to the same place.
In my experience, most (not all, but most) of the people who have a lots of money acquire it by working long days and having little free time. They also have little freedom because they are so tied to their job.
Again, everyone with lots of money doesn't have this problem, but in my experience most of them do.
Picking the wrong career path is entirely possible. Some people absolutely love technical problem solving, he doesn't mention it at all. For all we know it's worthless to him and just something he has to do to earn a cheque.
I do think you might be on to something with
>Maybe he would have been terrible at that kind of work.
though. He makes it sound like in 1994 he signed a document stating that assassins should murder him if he ever tries to manage anyone. I find it hard to believe that if he was good at managing people and influencing decisions that he would have went the rest of his career unable to break back in to management. Convincing people to give him the job is part of the needed skill set!
My experience is that companies (many, perhaps most) are falling all over themselves to give senior programmers a shot at managing people.
If your goal is to build software products, how do you make the biggest impact?
This feels like the question the author is answering with his observation that, as a programmer, you rarely have the clout to make the decisions necessary to drive the best product (or any at all) to market, outside of intentionally writing back code.
If he had gone into leadership, he might now be looking at examples such a notch, who got rich from dev work without becoming a 'manager' - at the same time indie dev startups are very competitive.
I guess you have to balance risk and reward. If you focus on the best examples of an option, you have to also compare it to the risk (how many fail).
A well-paid manager saying, "But I could have made more developing Minecraft!" might as well complain, "But I could have made more if I won the lottery!"
If high compensation is the goal, being a manager is simply a much more straightforward and reliable path than being a programmer.
Which means job that used to be either low-demand, low-paid, or (usually) both. Otherwise demand has to keep rising, because without barriers, an increase in pay will cause a delayed increase in supply (as people are attracted to the field) which then meets the demand, or at least evens it out, reducing pay in turn, unless demand keeps increasing.
My own 2$ ameteur micro-economic theory there :-)
Anyway, the point is this; Is hard to predict which jobs will pay well when you start on that path. well paid jobs now might be lower paid by the time you and every other chaser-of-the-dollar goes into the same field, increasing supply, pushing down pay. The opposite can happen too.
Builder/labourer might not be seen as too lucrative in the past, yet in some times it certainly has been. And I wonder how many BAs actually fail to get high paying jobs?...
Yes, there may be micro-fluctuations where every company is suddenly scrambling to hire the latest flavor of the month (e.g. data analyst is now data scientist). These are hard to predict. But you know who will reliably earn more than the data scientist in three years? The data scientist's boss.
> But you know who will reliably earn more than the data scientist in three years? The data scientist's boss.
I'm not 100% sure of this. There will be a boss in the chain that earns more, but actually I suspect that this isn't always true, given one assumption - the boss, as a job requirement, has to have a good knowledge of DS (maybe an ex/senior DS?), in which case this barrier ensures management will get higher pay - otherwise they'd just stay/go into in DS.
From my standpoint, I do not regret anything. I learned from these experiences because I love to explore and am not afraid to fail along the way.
I see so many that seek advice when they have the power to take action themselves. So much time wasted really.
In contrast, I fear that once I try management, it will be hard to move back to being a developer.
How easy / hard was it for you to return to being a developer?
Personally, I'm glad I got our of management and back into the nuts and bolts side of the house.
I've always been quite active with side projects and moved back into development after about 5 years being in management. It went OK. Everyone was younger than me, stuff had obviously changed and I was out of my comfort zone for sure, but it was a successful transition. If I'd not been so into development on the side (i.e. constantly writing tools and apps with new technologies), I feel it would have been pretty difficult to switch back.
Today I am very much hands on and I make it known that writing code and designing is my passion.
That gave me pause as well. Work 10x as hard for 10 assets? Not worth it for everyone.
'Harder' is subjective.
As mindless as work like that tends to be, there is a kind of zen quality to it. I think the trick now is to find a hobby that lets me turn off the left side of by brain for a while to do something so simple, yet satisfying.
In my opinion, our brains have a way of painting the bad old days in a nostalgic light. I would posit that if you were forced by circumstances to chuck boxes for 8 hours a day with company-specified arrival and departure times plus company-specified breaks, you would not relish it. But that's just my opinion.
Programming is 100% beyond a doubt harder. My brain is mush at the end of a good day of programming.
Making doors? Physically tired but mentally fine.. and I find the physical side was easier to recover from.
So I get the door making -> programming is "harder" and I make about 10x the money.. but I would not say it was 10x harder, maybe 1.3x harder.. so clearly programming is a better job for me than door making.
So have I, and I come to the opposite conclusion. Does my anecdote trump yours?
These are both perfectly valid ideas and thoughts and I don't see why anyone has to be wrong.
Turns out being a programmer is a very portable skill, and good ones get paid well. Life isn't so bad.
I imagine if I'd spent the last 10 years in management I probably wouldn't have changed jobs and be just as frustrated, just in a different way.
But let's not get carried away here, the OP (and I) might have been pretty poor management material after all.
And without this attitude we wouldn't have the things we have today. Trust me, Gates, Jobs, and a slew of others who built our modern world didn't do what they did for fun. They did it for (mostly) money. The same way the successful people in revolutionary fields today are doing so for money.
We can't have progress if we sit back and just judge everyone as "greedy" and expect good things to happen. Without these attitudes we wouldnt have the internet, the mobile revolution, commercialization of space, or the upcoming robotics/AI revolution. Maybe this guy should have migrated to management. Lots of people do and they're happier there. Not everyone is cut out to be some salty bad-ass coder until retirement. For most people this stuff is just a job, not a religion, and as people get older their social skills, wisdom, etc increase and many of them simply find being a manager or a mentor to be a more fulfilling use of their time. Society recognizes this and pays accordingly.
There's nothing wrong with the profit incentive as a motivator. In fact, competing in a capitalist technological market is one of life's few meritocracies and has paid humanity back in so many ways, its probably impossible to understand how vast the changes its brought us truly are. This conversation and everything you take for granted in your life right now would have been impossible without it. So maybe layoff with the holier-than-thou attitude?
The attitude presented in the article is indeed typically American -- but not for the reason I think you intended.
The quintessential American quality is the belief that every person has the right to control their own destiny. Fuck, it's right there in the first sentence of the first document declaring this country's independence.
Americans are often seen as greedy relative to our European counterparts. But you have to remember that there's a different social contract over in the USA -- if you fall, you're on your own. Therefore, money is seen primarily as a means to self-determination.
Now, this all gets fucked when you throw in consumer culture on top of it, but the desire to accumulate large sums of money is not uniquely American -- but we're damn good at it because the cultural message we get sent early on is that once you're an adult, you're on your own. If you want to control your destiny, you'd better learn how to make money.
But notice that the author's main complaint wasn't about money -- it was about all the wasted opportunities where if he had more power (in the form of a management role) he could have had more influence on the outcome of situations he was involved with. The loss of self-determination is the big gripe -- and the entire reason I hit the eject button from engineering early in my career.
[1] https://news.ycombinator.com/item?id=11340137
Big money is a different ballpark and I don't think that's what most people want. I think they just want to be comfortable in doing what they want to do.
The advantage of big money isn't just charities and companies - it's having your time back, since you're not tied to getting an income from it.
Between rent, student loan payments, health insurance, bills, and car loans, and food, I think we maybe have $500 left to throw around each month. If we were paying against a mortgage, that would basically be zero.
And, as a sibling comment stated, it depends on location. I think $80k is right for most areas of the country. If you live in NYC, SF, LA, or another place with really high cost of living, adjust accordingly (which is probably like 2.3x).
The most financially effective way to be a programmer is to work remotely for someone who pays SF or NYC salaries and live in a moderate COL area.
I've always seen the rental income requirement you stated phrased as "monthly income must be at least 3x monthly rent", in case the 40x thing threw anyone else off (40/12=3.33).
I've recently seen 45x monthly in Manhattan and LIC (Queens).
[1] https://www.reddit.com/r/financialindependence/
You may not be able to afford a house in the area you want, but you can certainly afford a home. Here's one with a mortgage for $89/mo.
http://www.zillow.com/homedetails/207-1st-Ave-W-Gackle-ND-58...
Two people can easily live on $40-50k in most areas. Eliminate all the unnecessary expenses like $150+/m in phone payments, $50+/m for cable, etc.
for the $80k number.
In case you haven't seen it, there's another paper that argues the opposite: more money does make you happier (but only if you know how to use it). http://scholar.harvard.edu/files/danielgilbert/files/if-mone...
I make more than $80k and I can certainly say that I was less stressed before I took a huge pay cut. On the other hand, I like my job more so I guess I might actually still be happier. All else being equal though, if I made more I imagine I would be much less stressed..
I think the OP wanted control over building/shipping/creating products. Not life comforts, house, food on the table, free time. His goals would not be helped by a middle-class income, but more control over the products he was building.
I hope that I am able to pass a sizable estate to my children and grandchildren, so that they will not be dependent on banks, universities, and employers that will charge them outrageous fees in time and money just so that they may have a hope at a normal middle-class lifestyle. True independence for ourselves and our posterity should be the goal for all of us. For most of human history, it has been; these days, we are confused and pretend that being enslaved to usurers is the ideal.
No. Having an in-demand skill is a tool to obtain and keep independence. It's not independence itself. There are many people out there with high-demand skills who still find themselves unhappily slaving away in a job where they must do someone else's bidding for 40%+ of their waking day. Once they have the property and assets to make that an optional activity that they can leave at any time, they are independent. Having the ability to go find a new master if you get fed up enough with your current one is good, but it's not really independence. Independence is the freedom to control how you spend your days, and unless you're debt-free, own your living space outright, and have a consistent, sustainable source of food, you don't have the option to not work.
> If they don't have skills that contribute to society, they are irrelevant.
Define "contribute to society". I think you're being way too exclusive here. There are ways to contribute to society without being part of the industrial workforce. Just ask the big bosses, who, incidentally, are the ones pushing this narrative that life is meaningless without their patronage. You don't have to be a professional to make a meaningful contribution. In fact, I would argue that being a good parent has a far greater positive social effect than being a good professional.
>And guess what, if your children decide not to use those banks and universities, and don't get jobs then they may be "independent, but they are also dead weights.
A bank provides people with very little actual value, so I'm not sure why you included it. I will be immensely pleased if my children can go their whole adult lives without having to pay a cent of usury. It's a massive hidden tax on the middle class, making every major purchase cost about 2-3x its sticker price.
If you think about it, you'll see that much of our industrial culture is based on guaranteeing this effortless income to usurers, and I want to break that cycle for my children. This is also a large part of why the media wants to promote negative images of independent wealth; they're trying to protect their dirty income streams and reinforce their position as a hidden cost that people just accept as an implicit requirement.
Of course the children of independent people should be taught to do something useful with their time and lives. I think that by and large, they are. You don't hear about that because it doesn't please the massive indentured population to hear about it on TV, but if you look around, you'll see that it's generally true.
And in the age of welfare, you don't have to be independently wealthy to be a layabout or a loiterer. It's no longer an exclusive privilege, so providing a decent estate that will allow your posterity to have its freedom and control its own destiny is not really any more dangerous to individual productivity than not doing so.
>I agree that people should have access to enough money to realize their potential, but not more than that.
I absolutely do agree that too much money in the wrong hands is a recipe for disaster.
To respond to your point about contributing to society, I totally agree that parenting is among the most important contributions you can make to society. But I don't think that you can be a very effective parent without the wold view provided by interaction with both people and knowledge. And this interaction is very difficult to find outside of the university and workplace setting. As a parent you should absorb as much knowledge and experience as possible so that you can pass that on, and your children can build on that rather than wasting time re-learning it.
Finally, you are right that welfare allows people without money to live while making basically no contributions to anything. But is not a comfortable life. Anyway my point was less that you shouldn't give your children money because it will make them Deadbeats, and more that you should try to get as much value from each dollar as possible and I don't personally believe that giving all of your money to your children is likely to be the best way to achieve that.
I apologize for my formatting. Writing this on a phone.
True autonomy is its own discipline.
The problem with gaining power is that you now have to steer into the maelstrom of human foibles for a living. "The Turks pay me a golden treasure, yet I am poor! Because I am a river to my people! " - Auda abu Tayi in "Lawrence of Arabia".
No, people pursue power for status, not for autonomy.
Control is an illusion, you infantile egomaniac. (http://www.imdb.com/title/tt0099371/quotes)
But it's really easy to over-estimate that control and your ability to wield it. If the Peter principle is accurate, and people are promoted to their level of incompetence, then it also indicates that people assume their level of competence is higher than it actually is. And then you get project failures, screaming managers, and lots of lost money.
"Power is only given to those who are prepared to lower themselves to pick it up" - Ragnar Lodbrok, "Vikings".
So you don't think you have this right? I believe you have the right of opportunity, but not of outcome.
I learned what this guy learned pretty early on: If you are an employee (developer or not), you will be paid to do things you are against and people less intelligent and experienced than you will be making decisions for you at some point...and you can't do anything about it.
This is the sole reason I started my own company. I was sick of being forced to go down a path of failure..after every attempt to do otherwise was ignored.
After our failure, management never wanted to look bad, so they almost always picked someone to blame. Sometimes it was me or my team, sometimes someone else. Speaking up about it meant you weren't a 'team player' and you would probably be on the chopping block during the next round of layoffs.
I was able to survive most layoffs because I learned how to play politics, but at the cost of never feeling satisfied with my job.
I've had my own company for 5 years and I don't regret a thing. It was the best decision I ever made.
"I just have to say this: So typically american"
Really? I was thinking it was typically Chinese. My wife's family is from China and they pretty much all try to one up/compare each other in terms of assets, money, or jobs.
"If you want to control your destiny, you'd better learn how to make money."
This message is pretty truthful. The more you rely on someone to support you (the government, friends, family, job), the less control you have over your life. Money gives you the ultimate power and freedom to do what you want.
Regardless of your culture, this doesn't change. If you have more more money, you will always have more options/freedom.
I do think I have this right; as an American it is the #1 thing that makes me an American. It's why we ignore the rules we don't like. It's why we lust for power and for money, lest some other person beat us to the punch and have power over us.
And while no rational person thinks they can control every factor that goes into their own outcome, we at least want to have some influence. If you're an engineer and your company goes belly-up because your marketing guy was a moron and you didn't have the power to make him listen to your ideas... that's the position many Americans strive to avoid.
> Really? I was thinking it was typically Chinese. My wife's family is from China and they pretty much all try to one up/compare each other in terms of assets, money, or jobs.
I feel that this no longer an American trait. 30 years ago, yeah, but with the whole backlash against the 1% and the hipster movement where bankers making $500k/yr dress like homeless musicians... it's not as cool to flaunt money anymore (unless you're a musician; then it's just part of the whole consumer culture thing because you're selling a life of luxury to poor people...) My household income last year was over seven figures, but I live in a house worth less than half of that and drive a 5 year old base model Subaru. Once money buys you autonomy, it's not really worth much (and that's a modern American perspective that's backed up by research).
> Regardless of your culture, this doesn't change. If you have more more money, you will always have more options/freedom.
I absolutely agree. But the single most important value that America was founded on is self-determination: the idea that each person is in control of their own destiny. Outside forces may get in your way, but it's your obligation to figure out how to get around them. American business culture is the same way: if you want to limit your chances of being fired through no fault of your own, you should probably get more power so you're higher up on the decision making chain.
I may be assuming too much, but in most don't really believe this.
For example, I'd wager you firmly believe you have the right to a safe and secure society such that you are relatively confident you will no be randomly murdered in your sleep with no consequences for the murderer.
This is exactly a right to the outcome of a minimum level of security in your person and property.
If you do hold this belief then you believe in right of outcome in society. Though you may not agree with others what outcomes we should be guaranteed.
Do you have a right to a "safe and secure society"? I'm not really sure precisely what that is or how it is achieved, but that sounds an awful lot like a privilege.
For example, you most certainly do not have the right to be guarded in your sleep by armed guards. Nor do we all possess the right to be guarded in our sleep by armed guards.
This is a right of outcome. The outcome of not having violence committed against your person or property.
Rights of outcome vs rights of opportunity are a false dichotomy. All rights are a right for some specific outcome and are considered violated when that outcome does not occur.
And even deeper down, it's a means of survival. The safety net here has pretty much disintegrated since it began to be dismantled in the '80s. A lot of people in the US haven't saved enough for retirement considering this new reality... they haven't even saved enough to get them through a few months of unemployment. There's a loss of hope in rural America now in places where it can be very tough to find decent paying work. It's starting so show up in a decrease in lifespan and in many ways it's very similar to what happened in Russia when the Soviet Union collapsed. The drug of choice there was/is alcohol. Here it seems to be prescription opiates (in addition to alcohol).
People just don't have enough to do otherwise.
These situations are not even remotely comparable.
The fraction of Americans who abuse opiates is tiny compared to the percentage of Russians who abuse alcohol.
As a rough approximation, about 2.5 million Americans have an opiate abuse issue in 2016[1], out of a population of 319 million. This is about 0.8% of the population.
Statistics from the Soviet Union are hard to find due to the government's indifference to the problem, but even official news sources -- which routinely greatly underreported the true magnitude of social problems -- put alcohol abuse rates at 19% of the population.[2] Also note that the amount of drinking you have to do to be considered "abusing" alcohol is far, far greater in Russia than in the US.
[1] http://www.asam.org/docs/default-source/advocacy/opioid-addi... [2] http://alcalc.oxfordjournals.org/content/34/6/824
Building up soft power is something anyone should do if they care about their work. Building big things means collaborating, and collaborating means persuading other people when you're right and recognizing when you're wrong. Do that and you become a leader, regardless of your position on the org chart.
My guess is that this fellow felt like his having set aside his leadership position in a role should simultaneously have given him instant authority and at the same time allowed him to shrug and ignore problems he saw but wash"the directly responsible for.
For example, I've always found the argument that certain voters (commonly poor white working-class) who vote for small-government are voting against their own economic interests to be rather interesting from a psych perspective. I'm a libertarian so I don't put much faith in the idea, but I think that issue could be traced back to the concept of locus of control. Voting for larger social spending might benefit them financially, but it also means accepting the belief that control over their life is externalized.
The alternative--that control is internalized or even just the perception that it's internalized--is likely more palatable psychologically as a core self-evaluation, with a more beneficial influence on other CSEs (neuroticism, generalized self-efficacy, and self-esteem). That leads to better life satisfaction, and can contribute to later economic success according to the research.
Reality is a lot more nuanced than that, but perception is absolutely fundamental in terms of how it can affect personality.
But tech is not a meritocracy. [1] [2]
Accepting that you have less control over your life may change some of your outcomes, but I doubt it would completely crush one's spirit.
I've accepted that I'll never flap my arms unaided and fly like a bird. I'm not depressed because of that realization. It's a known limitation of my life, and I can live with it, and I won't spend my weekends practicing my flapping and running skills. It actually helps me focus on areas I can affect change... such as building a jetpack.
Knowing which things are outside of your control should help you realize what is and is not within your ability to change, and then you can figure out how to make the most success given which variables are mutable or immutable.
You mention research about one's perception can affect later economic success; I'd be very interested in a reference.
[1] http://istechameritocracy.com [2] http://www.npr.org/sections/alltechconsidered/2014/02/06/272...
But it should be, and the issues laid out in your links detail failures to reach that ideal.
We can do better. That does not mean we stop trying or abandon the ideal that you should be known for your works above all else.
But just like any other institutional problem (racism, sexism, etc), it does no good to simply ignore it while it negatively impacts you. Instead, acknowledging your current situation, and working to make it better, is key.
Some people say it is, others say it isn't. Neither use a lot of data in their arguments.
Then you add questions of if who is chosen for promotion is sane, if what products a company chooses to focus on is sane, if what products the market chooses to make popular is sane. None of those are optimal in the sense that the "best" thing wins out. Marketing (of a product or self-promotion) and being in the right place at the right time dominate each of those steps.
So how on earth would you take that and get a meritocracy out the other end?
2. Being good at self-promotion is a merit. Some have it and some not. You could not define merit as just technical skills.
Not many here would agree with you, on both sides of the table. Whiteboarding skills often do not translate into ability at a job.
> Being good at self-promotion is a merit. Some have it and some not. You could not define merit as just technical skills
Sure, but you're starting to beg the question. All systems are meritocracies if merit is defined at being successful within that system.
The second part of your comment is less relevant, as I think most "tech" people would say that e.g. promotions (management), product development (marketing) and the general market dynamics are highly "non-tech". But in many of these areas, people do try to choose the best - at least as far as marketing is concerned, companies dislike wasting money and choose to promote those people/products that they expect will produce the most profit. Companies' "profit", of course, doesn't correspond to a person's "merit" ("profitcracy"?), but the basic mechanism is the same.
While Europeans seem to have come to the opposite balance of concerns on independence.
- providing the illusion of locus of control
- disassociating people/society from nature
thank you... and then took nearly a century to getting around to the idea of not owning people. There are a lot of caveats to that American belief.
Half the time I spent as a producer I was worried about the fact that I wasn't doing any programming, and my skills were atrophying.
Production had some real perks in comparison, being able to meet a lot of people I admired, going on business trips, etc, but I got frustrated with only trying to cajole developers to add certain features that I thought would make the game better, instead of being able to dive into the code and add the feature myself, and iterate until all the kinks came out of it.
You'd be surprised how many times you can say "this game is too hard, you have to make it easier" or "the text in this UI is too small, you need to make it easier to read" and developers still won't do it, or will only tweak it marginally to say they did it, instead of sitting down and actually trying to make the game easier.
And then the game comes out, and it gets blasted by critics for being "too damn hard".
If I were in that position today I'd be a lot more specific, but I can only iterate when they give me a new build, which usually takes days. I can't change a variable and rebuild it in 30 seconds like I could as a developer.
That isn't the job of a producer or manager. Maybe quality assurance or testing? It sounds like you were micromanaging them.
If I were in that position I would try to educate them about what makes a game hard and how hard games should be. I would educate them about typography. I would not tell them what to do. They must find the solution themselves.
Hm, I'm violating my own advice with the paragraph above. :)
As a developer, I hate it when somebody gives me too vague problems "game is too hard" or too detailed assignments like "make the font size bigger". I need an accurate problem description with all requirements. If it isn't accurate, my solution will probably miss the point. If I haven't all requirements I will probably violate some of the unspoken rules.
We were a bit more specific than 'make it easier', I just have a vague memory exactly what we said because it was 8 years ago and a lot has happened since then.
And we were a super small company. I had to wear many hats; overseeing QA was one of them.
Micro-managing is an extreme term, and I don't think we were. We weren't telling each developer what their tasks were for the day, we were communicating with their project manager and saying which bugs or features had what priority, and by the way we played the build and we think the font looks too small, could you please increase the size, it's okay if the UI takes more space, please remember not everyone will be playing this on HD tvs, thank you.
And I was playing each build to do some internal verification that the bugs they say they fixed did get fixed, yes. Personally I think it's better the publisher knows what's going on with their own game (keep in mind, the developer didn't pitch the game, they were hired) than blindly trust that everything is going the right direction, until it's time for a milestone payment and "holy shit, that's nothing like what we asked for! you don't get paid until it's fixed!"
The problem is being able to influence things in a creative way.
https://youtu.be/u6XAPnuFjJc
I'd rather be the captain of my small pirate ship than a cog in giant battleship. But I'm in my mid 30s now, maybe that will change when I get to 40.
Doesn't work that way. Please start today.. don't hope for a things changing in 40s as it will come to your very very fast.
Only way to make sure his creative decisions are actually implemented.
You had a much better saying at your disposal "The grass is always greener on the other side". Alas, you chose not to use it and now we don't know how your comment would have turned out, had it made sense.
It's so hilarious that he calls himself a "programmer". With 30+ years of experience, you're a software engineer, an architect, and best of all, a consultant.
Then you charge 5x the normal rate of a salaried engineer, work normal hours, and start accumulating real assets.
He needed to put down the technical books, read a book about personal branding and then he could have had his cake and eaten it too.
This is dream which happens only when you are asleep. In real life an older person is less energetic, less enthusiastic, can't do weekends, has health issues, has responsibilities, has family commitments etc etc.
Young people work insane hours, they do that for cheap, they show up on weekends and are more flexible in general.
In most cases. Like in everyday cases experience doesn't pay well as you think. Even in professions like medicine and law that is true.
The assumption that experienced people get paid well applies for a minority few people who for nearly all practical purposes are an exception to the whole rule.
>Young people work insane hours, they do that for cheap, they >show up on weekends and are more flexible in general.
Your assumption that income is directly related to your output is wrong. Making better, more qualified decisions is one way to differentiate yourself as you get older. Another is to quantify your output; maybe you do less programming but the pieces you do write can provide the company with a million+ lift in revenue?
Or you position yourself as writing a cleaner implementation, without having to rewrite 3 or 4 times to get it correct (ehem, those "energetic" youngins).
Company's pay for experience all of the time; and when it can be tied directly to increases in profits/revenues, you're way ahead of the game (especially ahead of any Jr. programmer that just blindly pumps out code).
This is complete nonsense. The best and most productive engineers I know are in middle age or beyond. In addition to raw technical ability--which does not decline in my experience--they have a level-headedness about making decisions that is rare to find in younger people. It's a critical success factor, especially for complex projects.
Might as well add "Rock Star" to the list of meaningless drivel.
There is absolutely nothing wrong with describing yourself as a "programmer" when that is indeed what you've been doing for the last 30 years.
The world needs less people spewing streams of hype to describe their own self importance, not more.
There is an issue with calling yourself a "programmer" when one of his main complaints is the lack of monetary return on his career. Don't choose a commodity title if you want a higher than average return on your time.
I'd personally rather have someone show me the real work they've done to convince me that they knew what they were doing, rather than giving themselves a meaningless title to convince me how good they are.
There are plenty of "Software Engineers" and "Architects" out there that couldn't program their way out of a wet paper sack.
Fundamentally our disagreement is on the importance of the title. Yes, I will concede that there are some people who will be impressed by it, and maybe even be a bit more likely to hire you because of it.
I just don't think that's a good thing.
I know too many people who have been burned by others who used such language, who actually didn't know what they were doing, and as a consequence others who did know what they were doing lost their jobs, and the company spent millions to try to recover, or just plain went out of business.
The title does the initial framing of expectations, that's it.
There's always going to be idiot consultants. And anyone who doesn't properly vet any candidate is likely to get their expectations crushed.
I'm talking more about the title and language that frames the career.
There's a big difference between "I'm a programmer with 30+ years experience. My last project was a rewrite of my employers checkout API."
vs
"I'm a consultant specializing in Ruby on Rails. For my last client, I rewrote the entire checkout process that supports $400 dollars in transactions. I decreased the time it took to process the initial check out by two seconds. With that increase in checkout speed, I provided an additional 10% lift in revenues."
Both could be describing the same process, but with the latter much more in line with the prospective client's goals.
My point is that the title should not frame the expectations at all, because so many people plaster "Software Engineer" or "Software Architect" on their resumes that the terms have become mostly meaningless (assuming that they ever had any real meaning in the first place), and in many cases are an indication that the person thinks more highly of themselves than they should.
I also think that describing the term "programmer" as a "commodity title" gives it an unnecessarily negative connotation. Despite what marketing people think, it is a perfectly valid description of what many of us do, and does not at all necessitate thinking of a person's skills as "run-of-the-mill".
Look on the bright side. I can do all the programming I want at night and on weekends, in fact I technically have more time away from work to do it, than at work, and most employers consider "learn at home" to be mandatory, but your average nuclear engineer, infectious disease researcher, forensic accountant, or organic chemist is pretty much screwed in that regard.
For decades I've been expecting capitalization to freeze out home computer users by making everything too expensive for hobbyists yet cheap for a company to afford (think of the example of CNC milling machines, or electronics), and the cloud comes close to ruining hobbyists, but you can still pretty much keep up with the bleeding edge at home in programming, if you want.
I learned long ago never to chase the money. Do what you enjoy and you will never work a day in your life. Obviously, life is never quite this simple and in any job you will have periods when you do not enjoy some aspects, but the point is, do what makes you happy, follow your bliss.
Of course there is another point to this the author does not seem to be considering, just because you go into management, does not mean necessarily you will be good at it, or be prepared to do the things that might be needed to get ahead. For example can you fire a friend just because it is what is best for the company? You get good managers and you get bad managers. Good managers can make a lot of money but there is no guarantee he would have made a good manager.
TL:DR: There was no road less traveled by they were equally the same, but he fooled himself into think he made a special choice.
Just some poetry discussion. "The Road Not Taken" is considered the most misunderstood and misinterpreted poem. (It was great to make freshmen tackle this poem in freshmen Theology Class. Then we went on to most misinterpreted scripture verse :)
So, in the end, while he was very clear in the present that the two roads were identical with no real reason to take one over the other, later in life he knew he’d once again fool himself, this time successfully, by instead remembering that one road was “less traveled by” and that this influenced his decision, when in fact he really decided on a whim. http://www.todayifoundout.com/index.php/2015/09/robert-frost...
My favorite is short example:
In that way, you will be acting as true children of your Father in heaven. For he gives his sunlight to both the evil and the good, and he sends rain on the just and the unjust alike. Matt. 5:45 (NLT)
Rain in a semi-arid agriculture area was a good thing. People read it and think God sends bad things to also. So when something bad happens people will quote this verse.
I also like the Prodigal Son (It really is the Parable of the Older Brother). People miss the main point and think it is about bad children coming back to the Father (Its a side point) The main point is the Older Brother was mad that the Father was nice to the bad son.
This also has SO much to do with OPs lifestyle / propensity to save. "The millionaire next door" goes a long way in explaining how even lower income households can accumulate much more wealth than many high income earners with simple lifestyle differences.
That's one reason why Frost's poem is misinterpreted, due to American belief in destiny.
This remark would be considered highly offensive and racist if it were uttered about most nationalities.
Would you say that to appraise the sentiments of, for example, a Jew? Of course not. Everyone would rightly condemn you for it.
One point here is that it's seemingly OK if it's not derogatory plus one is talking about one's own group. Another point is there's a continuum between nationality and culture, and it ought to be OK to point out that something is specific to a culture, and American specifically is very likely to be used to label a culture and not the people as in a bunch of guys and gals with specific genes. This is not to say that one ought to agree with grandparent's views on American culture, just that those views probably aren't racist.
BTW I personally try not to say this sort of thing since people might be offended all too easily, so I guess I agree with you in that way.
That's funny. I'm from the US and when I got to that line, I found myself assuming the author was an immigrant or foreigner.
Talking publicly about financial success isn't something I associate with people natively from the US. Certainly, among the people I grew up around, it would be considered unconscionably tasteless to do so.
Many of the things are so widely established, they can be learned by spending a little time reading a few books, talking to a few people. So I have to wonder what the obstacles are here.
An aversion to reading? Inflexible management dogma? Distractible lifestyles? Poor critical thinking in general?
Instead, important metrics may include size of team, number of hires per year, revenue of business unit, number of customer-reported defects, etc. I worked at a place where bugs reported internally were not eligible for the highest levels of severity, because after all no customer had noticed (yet). So mistakes reported by customers counted against managers, but ones caught by developers did not, regardless of how much effort was required to fix them.
Absolutely. Even individual technical contributors are judged on vague criteria. I'd argue that 'being liked by your manager' is more important than being technically excellent.
> So mistakes reported by customers counted against managers, but ones caught by developers did not, regardless of how much effort was required to fix them.
Exactly. Also, I've never seen technical debt (myopic technical decision-making) affect evaluation of management.
Many of these things are so widely established....
It's a problem in both directions. In my view, the non-technical managers need to learn to take more counsel from the technical experts working for them, since most technical matters can be openly discussed. People matters, at least some of the sticky ones, can't be openly discussed with a panel of experts.
Now exchange "Management" in the first sentence with "Programming in a team" ;)
Aw, this is a sad story. I'm sure there are more positive things in life this guy could look back upon. Starting his own company sounds cool to me and he is obviously a caring brother.
> So yes I regret not taking that choice and seeing where it would have led me, yet I would have missed all the fun of writing code and the soul-draining jobs that often come with it where you can’t really fix anything.
I believe there will more often be good jobs than soul-draining ones for programmers in the future. Tech people will become better leaders and create better positions for young programmers. Even janitors are sometimes very happy in their positions. It depends on management and your state of mind.
I have a little bio myself on the subject of being "just a programmer" [1]. Everyone makes mistakes and wonders how life would've been different. The trick is to not dwell on them. Stay curious, take breaks, read some self help books, seek out new friends and activities, etc. It's not easy but a little hard work to get out of some bad habits can feel great.
[1] http://robhawkins.info/
Until recently it was quite the absolute worst experience of software ever for me and I used DOS and Windows 1.0.
Every time I realized I had to use npm I would be filled with deep dread and the knowledge that I was about to have my time burned in a bonfire of errors, confusion and complexity.
Someone needs to make a sincere apology for npm.
Why has it not bothered me lately? Either it has been improved or I am using it differently somehow.
https://www.jwz.org/blog/2010/10/every-day-i-learn-something...
== vs ===
No integers.
Assignment is declaration.
Prototypes.
Curly brackets & semicolons.
Semicolon insertion.
It may be flexible (in the sense that an Alfa Romeo driven into a telephone pole at 120 mph is flexible), but it sure as heck ain't effective. JavaScript is the great shame of the computing industry: that it exists, and that it is used, and that it is used in more than just the browser, is an indictment of our entire profession.
JavaScript: take off and nuke it from orbit. It's the only way to be sure.
JavaScript: you'll envy the dead.
JavaScript: a mistake, carried out past the point of absurdity.
And that is good.
With things like rust and go backing us up in places where more verbose and static code is beneficial (for performance?) we are finally entering new age which leaves closed corp-controlled "enterprise" things (java, net - looking at you) behind.
It is not popular the same way PHP is popular in any capacity. It really is a unique useful efficient language.
The fact that using JS you can write a browser based app, a mobile app, backend software, configuration files and flat data files (JSON) without switching gears is the flexibility.
I would also argue that if you really don't like JS, you are using the wrong tool for whatever job you are trying to do.
Unfortunately, instead of going back and fixing core deficiencies in the language standard, it looks like ES6 & 7 are thick cakings of lipstick on the pig.
The fix isn't ES6/7, it's WebAssembly:
https://en.wikipedia.org/wiki/WebAssembly
Fair enough.
> Assignment is declaration.
Not exactly. You can declare variables separately, if you want. In fact, a "var x = 42" statement will actually be split into "var x;" at the top of the scope and "x = 42" wherever you actually wrote it by the interpreter. The specified behaviour is a little weird and non-obvious, but once you know it, you know it.
> Prototypes.
That's a matter of taste (plus the problem of optimisation at the VM level, admittedly). Besides which, you can basically use prototypes to do classes, if that's your bag, and of course we have class syntax now anyway.
> Curly brackets & semicolons.
Semicolons are optional, which however you complain about below. So are some curly braces. The only alternative to having some kind of block delimiter would be significant whitespace, which is a perfectly legitimate preference but has its own warts.
> Semicolon insertion.
Around which the rules are fairly simple to understand. It's possible there's just a better way to do it (I know Go has ASI, for instance, but have never heard anyone complain).
---
I find this a most peculiar list of JS warts (what, not even a shout out for ==, bizarre implicit type coercions, etc?) There's no doubt it is a deeply flawed language, a big part of learning it is learning about the various spike-pits lying in wait for you, and the extra tooling required to mitigate its flaws comes with its own set of costs.
At the end of the day, though, you can write pleasant, readable and - yes - effective code in JS. There are worse languages to be stuck with, as long as you watch out for the spike-pits.
The issue is that 'fop = 1' is not an error (outside of strict mode), even when I mean 'foo = 1.' Automatically creating variables makes what could be compile-time errors run-time instead.
> Besides which, you can basically use prototypes to do classes, if that's your bag, and of course we have class syntax now anyway.
Which I also find to be a mistake. Generic functions are the right way to do OO.
> The only alternative to having some kind of block delimiter would be significant whitespace
The block delimiter I prefer is () grin
> It's possible there's just a better way to do it (I know Go has ASI, for instance, but have never heard anyone complain).
Yes, whereas good practice on JavaScript is to always use semicolons (because its semicolon insertion is wrong), good practice in Go is to never use them (because its semicolon insertion is correct).
> not even a shout out for ==
That was my very first point …
Bizarrely, I misread it as an overcomplicated ASCII art divider. Looks like I've got a JS VM in my head...
The fop typo - while I acknowledge that there are plenty of gotchas of this kind in javascript, a gotcha that will be caught by strict mode barely even counts in the grand scheme of things. Strict mode then gives you slightly better protection than in many otherwise more robust languages (Python and Ruby, for example).
On the ASI side, I don't see how it can be 'incorrect' - it's a well specified behaviour obeyed consistently, so far as I can tell, across the vast bulk of implementations. It may be a bad design, but that's a different thing. Go's version is certainly easier to explain in a paragraph or less.
I'm assuming by generic functions you're talking about eg. Clojure protocols or Haskell typeclass functions or stuff like that, which I also prefer (I also like round parens). But at this point, you're just criticising JS for not being $LANGUAGE_I_LIKE, which it isn't, obviously, but does not count as a terrible sin in and of itself.
I return to my main point - no, JS is not a great piece of language design, but it's hardly 'nuke from orbit' bad. There are certainly things I'd rather be working with, but equally there are worse fates that we could have been stuck with after the browser wars. "Life — the way it really is — is a battle not between good and bad, but between bad and worse".
No worries!
> Strict mode then gives you slightly better protection than in many otherwise more robust languages (Python and Ruby, for example).
I really dislike that aspect of Python; IMHO it's a pretty bad flaw.
> On the ASI side, I don't see how it can be 'incorrect'
I think it's incorrect in the sense that it's such a bad design that the Right Thing to do is to always use semicolons manually (with the corollary that if the design is such that one never uses them — as with Go — then it must be correct).
> I'm assuming by generic functions you're talking about eg. Clojure protocols or Haskell typeclass functions or stuff like that
I'm thinking Lisp's multimethods. Behaviour doesn't really belong to one object or another, an uniquely privileging the first argument is just weird.
> I return to my main point - no, JS is not a great piece of language design, but it's hardly 'nuke from orbit' bad.
If it weren't for the installed base, I think JavaScript would be only two steps ahead of INTERCAL …
Even using Class syntax you're still locked into prototypical inheritance model. There is no classical inheritance in JS. (Probably a backward step in UX to call it "Class")
https://medium.com/javascript-scene/the-two-pillars-of-javas...
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Type...
ALL the major players and financial forces in our industry have put time and effort into quite solid solutions built with JavaScript, rather than solving those problems other ways (and in some cases AFTER trying to solve those same problems other ways). Two of those companies build browsers and sit on the W3C and WHATWG. They could have presented both suggestions for alternatives and lobbied as hard as anyone can for their adoption. Neither did that.
I later went to go port my code to PHP 4 (that was current at the time). To my surprise I was getting all these errors about how crappy of a programmer I was (both from globals and from misspellings and related problems).
I'm honestly not sure how people hate PHP so hard and yet don't mind JavaScript.
There are a few other smaller issues that are nuisances, like not being able to actually check if a value is a number, but I think coercions cause the most headaches for discoverability and debugging.
The Web would also probably stop working and be much more of a pain to code if JS acted that way: http://i.imgur.com/76Wtthy.jpg
As for how painful it would be, your claim is a total fabrication. Other dynamically typed languages are a pleasure to program in without implicit coercions everywhere. JS is widely considered a pain. Coincidence it is not.
I find that is widely enjoyed by the "silent majority" and decried as a pain by a very vocal subset of developers. It's a little surprising that 1 + '1' is '11', until you spend a little time and learn the rules instead of fighting them - then you start doing your work in a way that uses that to save time. It's not great for everyone, but I like it - and I know a lot of other good devs who prefer the answer '11' (when you understand the fairly simple rules) to 'OMFGNOIQUIT'. I find "Number beats bool, string beats number" for implicit coercions covers 95% of cases where it would actually matter. For the other 5%, just type it in the console.
Because I like it that way, doesn't mean you have to as well - but it also doesn't mean that because you don't like (or even most of the commenters on HN) it it is "widely considered a pain".
You are omcpletely underestimating the complexity of JS's implicit coercions. If you haven't already seen it, watch the Wat talk [1].
Finally, the fact that you need the console to even understand the meaning of a code fragment is a perfect example of language failure.
[1] https://www.destroyallsoftware.com/talks/wat
Isn't that the case for every language with polymorphism? Even C, once you add function pointers to the mix.
I've certainly heard polymorphism and OOP criticized on these grounds, but unless you're a hardcore kernel or embedded developer, that ship sailed about 25 years ago. Everybody uses debuggers and log statements these days. Expecting to be able to look at a code sample in isolation and know what it does is unrealistic for any large-scale system.
My number one favorite thing about Go: you can look at a code sample in isolation in a large-scale system and know what it does.
Why? Every identifier is either lexically scoped or lives in a module. There are about 6 control structures and they all do what they look like they do. Operators are all defined over a small set of well-defined primitives, they can't be overridden. Closures, callbacks, and non-linear control flow are rare and obvious. There is no way for code to be skipped by exceptional control flow apart from the single escape hatch called panic().
It's really like no other language I've ever coded in. You can work in large codebases that are as clear as your average Go code, if you have strong guidance about what kinds of code complexity are acceptable and you are ever-vigilant about avoiding language pitfalls, but nothing is quite as freeing as knowing for a fact you will be able to parse someone else's code because there wasn't any way for them to write something you can't understand.
If you're disciplined, you can write solid, easy-to-understand code in any language, Javascript included. I've worked on million+ line Javascript codebases and been productive (as a developer new to the codebase) within 3 days. But this imposes trade-offs in verbosity and flexibility that are often not worth it for most (non-Google-scale) JS codebases.
I don't know why you'd think that. In a typed language, you simply look at the types and you know exactly the intended meaning of a code fragment ie. what inputs are needed, what outputs are produced, etc. That's not remotely the case for JavaScript due to its implicit conversions.
I really think the problem with javascript really boils down to the fact that it's still in beta and will never have the breaking changes necessary to move it to a 1.0 language (i.e . the ECMA committees commitment to not breaking the web). But, it's easy enough to get around that in new projects by using linters that get rid of the bad parts.
Duck typing for methods and such is fine if that's what you're into, but if you're checking for equality, you want type errors, period. Only like equals like. Doesn't matter if your language is statically typed or dynamically typed, equality means something very specific and it's very surprising when those expectations are violated.
I respect Brendan Eich a great deal and I truly appreciate what he did for NetScape in 1995 by introducing JavaScript. What I don't appreciate is that we decided to extrapolate that madly-rushed, designed-and-implemented-in-less-than-a-week-of-all-nighters language not only into the default client side language for the web for the last 2 decades, but we have also allowed very badly informed people to start using it for server-side applications.
There has to be a way to bring order to this chaos. Any ideas?
The amount of "Bad Things" does make stumbling hazards, which is why I'm completely convinced that if you can, you should use a saner language, but there's no <script type="python"> (yet?). In those cases, we need to fence off the trash, put up warning signs on the exposed wiring, tape a post it note to "v instanceof Array" and try to write the sanest javascript we can.
Obviously none of us truly believes that `convenience === quality`.
My question: IF we all (mostly) don't like JS, why don't we simply take Webkit or something and build-in our own (presumably) better language? Call it the "Hacker News Language for the Web" or something; the goal being to replace JS inside the browser. Naturally, we'd need a JS-to-HNL converter; but done properly, both front-end and back-end could be the same, and could be built on the 'natural' structures of The Web, 2020-style (and beyond!) (Maybe HNL is [a descendent of] ARC? Just riffing here...)
One more idea: If browsers would permit batches of signed and authenticated code to be made part of the browser semi-permanently (e.g. node.js, other JS/HNL libraries), then that would save the download time, speeding up sites. In fact, if the code were truly trusted, it could even be in assembly language(!!!! tie in, above) for some totally kick-ass performance. Assumes security issues properly solved.
My problem with people who say such things is that they almost always have been saying the same thing for many years, while the language itself did several 180° turns and backflips.
"Classes are stupid, we don't need them!" "Look, we have fake classes in ES6!" "Asynchronous code is awesome!" "Asynchronous code is horrible!" "Prototype mutation is awesome and powerful!" "Everything should be functional and immutable!"
If someone considers the current direction of JavaScript good, then they should have considered several previous directions absolutely idiotic. If, however, they are simply oblivious to the incessant flip-flopping of the "mainstream" JavaScript, their opinion about quality of any language is worth very little.
Flexibility is good for frameworks, not for languages.
I read once a list of good and bad adjectives applied to paintings by Chinese painter Shi Tao. In the same vein here is my list for our topic.
Good computer languages are:
- Expressive, readable, memorisable, deterministic, stiff, simple, obvious, clear, concise, precise, sharp, smooth, pedestrian, regular, parsable.
Bad computer languages are:
- Obscure, arduous, terse, stark, viscous, flexible, lumpy, bumpy, redundant, verbose, restrictive, poetic, foolish, extravagant, awkward.
(This is not to be take too seriously, but just this: all built-in "flexibility" in languages leads to nightmares)
Try Haskell or an ML. Heck, even C# isn't that bad these days.
JavaScript's just a minefield of pitfalls. To be fair, it was designed in 10 days, and progress on it has been slow to say the least. (Hence the silly crap like having a "left-pad" thing as a 3rd party "module" instead of part of a proper stdlib.)
Other stuff like using "function" as the lambda identifier just make me shake my head. Or not having integers. Just poor decisions all around.
Generally, unless you're doing systems or realtime programming, or you are writing a serious fast path for a lot of data, the only reason you'd need more than the very basic features present in every programming language is that you're trying to do something more complicated than you should be.
Many programmers seem willing to take on almost any amount of complexity in their toolchain if it will allow them to express an idea in a slightly more concise way. I would prefer to stay much closer to the basics and just take the time to make really beautiful and powerful functions, rather than rely on a rickety stack of concepts that, if not confusing to me, will be confusing to many of the people who end up interacting with my code.
Serving pages rendered with node via webserver (nginx, apache) is not the most pleasant experience compared to e.g. python + wsgi
npm packages are not packages. It is simply a dependency definition + repository. Pull in package from npm and it is nowhere near usable until you figure out where it actually puts the files you care. You only know it's somewhere in `node_pacakges/`. Compare to e.g. gulp or python pip. You just pull in a package and it's usable.
Not usable for what? All you need to do is `npm install package` then in your project `const package = require('package')` and it's usable. Also, it's `node_modules`, and gulp itself is a task runner for... Node, so I don't understand your point there.
Why? Social and political problems are really hard to solve. If you can use technology to sidestep them, that's exactly the right way to do it.
If you sidestep the problems entirely, sure, but I think that's the minority of cases where a genuinely hard social/political problem exists, a technical approach attempted, and the outcomes measured. We can all readily recall Uber as an example in the positive direction. What we are worse at is seeing or recalling the hundreds of times humans struggled with a technical solution that hacked away at the visible leaves while the root remained unaddressed.
Say there's 20 pounds of work for 10 pounds of (recently downsized) people across multiple departments. The way you'd like to see technology work is turn 20 pound of work into 10 or less pounds of work for the entire company. The way technology is actually used in the real corporate world is your boss has you automate procedures and policies such that you push work out of your department and onto even more overloaded competing departments. That's how the strongest competitors are determined for promotion and bonus.
To some extent its a startup vs old company problem. Trust me, if technology could be applied to solve the whole company wide problem, grandpa would have already done it with punchcards decades ago, the only innovation that happens in old companies is pushing work and blame onto other departments. Hey, I have a number that proves we're now better, and that's all that matters.
The other way it works is as a weapon / scapegoat. They don't wanna work with us and I don't want to force them, or can't make them. But I can tell my programmer to change the bounds checking on that input field and they'll be forced to cooperate or shut down. If it works and they cooperate with us, I'll take the credit, if it fails, I'll blame and fire the programmer. Or if you don't want them to work with us (as in dump work on us) the programmer can sabotage their system, and again you can guess the different pathways for reward and punishment.
As an example where my optimism is warranted: broken builds. You can either make it a `people problem' and tell people to be super careful; or you go for the technical solution and automate the whole thing, so that only commits that build and pass tests get merged into master.
Of course, there's no office politics in my example; so this was easy.
The humble spreadsheet liberated white collar workers to do automate simple (and not so simple) calculation tasks themselves. No begging the computer folks necessary any more, who can hold your department `hostage' at will.
You can bet that from the point of view of spreadsheet adopters, they sidestepped a whole host of political problems.
Very insightful. Wondering why it is not discussed more often with so many snake oilers selling their silver bullets.
Most business training still seems to rely on parables and cool stories, larded with huge doses of Standard Business Vocabulary to make it convincing (win, compete, achieve, aspire, excel, lead, inspire, and on and on.)
If people really knew what they were doing there would be a lot less noise and a lot more quiet wise action.
Looking back, I view this as a pro. You get to work on more projects that way. I spent five years working with an "ideal" manager that trusted coders to make the deadlines. When I look back on that, while it was the only time I've ever gotten to code things to "perfection", it was also a big black hole of working on a single project for way longer than it really needed.
Of course there's a limit beyond which the lack of polish and finish makes everyone less happy.
Can't believe this comment made it to the top.
This may be hard to understand if you are still in love with Javascript.
so you regret writing anything modern for the web?
The problem is that many technical people are not "people" persons. Part of that may be personality, some of it is background, but a lot of it is study and thinking too.
My brother builds huge buildings. He's very proud of them. He often (gently) gives out about the marketing people and their mad notions and lack of technical understanding. But, as I point out to him, if they don't sell the apartments, he doesn't get to build the buildings in the first place.
Ultimately, therefore, if you're going to put your skills into a corporate enterprise (of any size), you need to accept that it all originates with selling. "Business is simple", says Alexandre Dumas, "it's other people's money."
Progammers should either accept that they love playing in the intellectual sandbox of coding and that the material rewards will be variable. OR they should seek leadership.
Lawyers, Bankers, and Doctors get to play in intellectual sandboxes, and they get paid really handsomely for it, even if they are completely anti-social people.
The reason we get paid less is that we don't have any of their safeguards:
- Lawyers aim to become partner. It's very socialist-y this way. The goal working in a firm is to become an owner of the firm and share in its successes.
- Doctors have a guild. They keep their bottom end tight by regulating who becomes a doctor, keeps them always in demand.
- Bankers know how much things are worth. That's their business. They know how much they generate, even if they are far from the point of sale. They also aren't squeamish about asking how much their co-workers make, and negotiate aggressively.
Programmers should start realizing that the main reason we make little is that we undercut each other a lot, and are outright hostile to many tools that other professions use to safeguard their position.
Regular front line grunt work employees work long hours and get paid decent professional wage. As you said they can get promoted to Partner, a partner is a part owner of the business, they don't do much technical work, they do a lot of management. There are similar opportunities for Software people to start small companies and make money too. its not quite the same as there aren't the big company partnerships, but big startups with employee stock are close.
The biggest difference is the half life of knowledge in Software is much shorter.
Everyone I know who has wanted to 'bring leadership' in their role, and nothing else, has been a complete waste of space, at best useless, at worst an obstacle. I have never been glad to have such a person working with me.
Also, he could have tried it and lost it all. You can regret not trying, but you can't regret not winning!!
On the bright side: I'm correcting this now, and I really feel like a different person.
I switched to a ball-mouse at work, and no longer get this. I believe the large amount of time using a mouse had compressed and damaged my nerves somehow.
I'd recommend the switch for anyone spending hours with a mouse.
I've been having something similar but always during the night, so I had not made an association with RSI.
Do you have anything on or around you arms when you sleep (or lie on them?).
Yeah, I'm probably sleeping in a weird position. I have a history of doing that.
I sometimes wonder if the inefficiency of movement is actually better wrt spreading the load. If the closest digit always presses the same key, there maybe a bias towards the same, repetitive movements which are often bad.
Typically, if the issue is worse when your arm is bent, you know it's that. Just wanted to save you some trouble googling things if it happens to comes back.
when I caught the disk, the edge would snam into my wrist. I hear volleyball players get the same thing. I made a wrist-protector from tap and bandages. Eventually though, the numbness still came, maybe even worse due to the false protection from the protector (like how boxing gloves actually harm boxers more in the long run by allowing fights to go on longer).
I've found that there isn't an RSI doctor you can go to easily or look up on yelp, and when you go to doctors they can be pretty useless in this category.
With that in mind, I'd like to preface all of the following by saying: I am not a doctor. This information is for educational purposes only, and is not meant to be a substitute for professional medical advice.
----------------------------------------------------------------------------------
Here is a long, varied guide on everything I've learned and things that have helped. Most of my knowledge has come from trial and error, and reading books and medical papers.
I have had tingling, burning pain throughout my arms and hands for many years. I also had several bouts of nerve pain in my legs. RSI and nerve pain stuff seem to go hand in hand. A lot of this advice ties into reducing nerve pain as well. I've had three surgeries total to move my ulnar nerves out of their ulnar tunnel so they would stop snapping over the bone and causing me pain. This wasn't the only cause of my issues though.
A lot of pain in your arms actually originates in your neck/shoulder area. There is an issue called Thoracic Outlet Syndrome that is suspected to be the cause of most of this kind of arm/hand pain. Chances are, you have bad posture.
Things that helped:
- Using a macbook pro for all computer use. Using a mouse or raised keyboard is awful for your hands. The trackpad placement with the keyboard, and the fact you can set the trackpad to register a touch (without pushing down) as a click are very helpful. Make sure you're not bending your wrists to the left or right when typing. It's a hard habit to break, and you're probably doing it now, but ideally you want your hands to be straight in line with your arm. Wrong - https://ehs.okstate.edu/modules/ergo/hand4.gif. Right - https://ehs.okstate.edu/modules/ergo/hand3.gif. Also, don't raise up your hands when typing or using a mouse, it stresses out your forearm muscles.
- No keyboard or mousepad wrist pads, they just constrict the nerve pathways in your wrists.
- You want to make sure your posture is good. When working at a desk, you actually should be sitting back against the seat, with your arms supported by the arm rests. You shouldn't be sitting straight up 90 degrees, but leaning back a little, with your back supported against the chair. This picture kind of shows it - http://cdn.makeuseof.com/wp-content/uploads/2013/06/computer... - though I would say you should be a bit less far back than the 135, maybe like 110.
- General posture stuff: when walking make sure your hips aren't tilted forward or backwards, make sure your shoulders are slouched forward, make sure your head isn't tilted forward (99% chance you do this one and don't even realize). Make sure your shoes' soles aren't worn down - if you see they look uneven buy new shoes.
- TMS (Tension Mytostis Syndrome) - basically is stress and anxiety making your brain subconsciously cause your body pain. Really helpful with me way after my surgeries in getting from 3-4 pain level to 0-1. I read this one - mahyarm ↗ Wow thank you! I'm not at that level of pain myself, but I've started to notice symptoms that started to worry me, one of them being that numbness you originally described. I want to prevent a disaster before it happens, since my livelihood depends on it. kdamken ↗ No problem, hope it helps!
http://modernhealthmonk.com/neck-and-shoulder-pain/
(usual disclaimers apply)
Sometimes the cause of that is management, and I long to be on that side defining the missing specs, building out the absent project plans, speaking to customers, allocating resource, championing it all and pushing it forward. At those times I despise being a programmer because being a programmer isn't enough to get product shipped.
Other times (but it feels less frequently) the cause is the programmer. And we all know well enough how frustrating it can be to watch someone not do what you think is easy, and how quickly we want to stop managing, stop designing, stop everything and just code our way out of whatever mess a project is in. A sole programmer is not usually enough though, and I stray back into wanting to manage so that we can ship.
Either way, just having that desire to ship, to make a difference, I feel has kept me in a limbo where I straddle both and am frustrated and hampered by both, and never quite shining at either.
Still I regret not shipping more, and rush into the areas that I hope will help product be shipped.
My greatest career joy was running my own company. I know I failed at the sales and marketing, but we did ship. We shipped a lot, and made a lot of people happy. A massive achievement in a short amount of time, and a good mix of both management and programming. A joyful time even though it was hard work for little pay.
It's a shame positions that really blend these skills seem quite thin on the ground or that they don't really value those who can move from one to the other.
More formally: https://en.wikipedia.org/wiki/Perfect_is_the_enemy_of_good
Maybe there is a way to just fix problems where you see them?
It's the set of problems on the "other side" that are causing delays that are the ones I care about. The ones that don't cause delay I don't mind.
It's only constructive to focus on that which holds us up, slows us down. Then I want to fix those.
The frustrations stem really from the wedge that we collectively seem to shove between engineering and other parts of a company, including middle-management (or worse, that we destroy middle-management and lack well-seasoned processes that actually help).
The walls we've built within companies, between skill sets, leads to a powerlessness to get things done faster, better.
Also keep in mind that it commonly happens that one of the first few programmers become a CTO? .That is not only because of the requirement of such a position but also a genuine care for the product which leads to him shouldering responsibility for the same.
So now if you were doing this responsibility shouldering and people management for 10 years,you cannot expect yourself to up-to-date and be tech savvy forever. Some people move to that position to also ensure relevancy. -It is much harder to remain relevant as a programmer in comparison to being in a managerial position.
TLDR;It all depends on how much you like to code in comparison to see through a finished product which sells.Both are symbiotic fields which need specialists in each area.
Stoicism, eastern philosophy (esp. ZhuangZi), travel and experience of other cultures, all help a lot.