Bad Microsoft
badmicrosoft.com
badmicrosoft.com
They give away enormous quantities of their labor for free through open source (some even going so far as to sign one-sided contracts granting the copyright to for-profit corporations without compensation). They openly denigrate their own skills by spreading egalitarian myths like "everyone can be a programmer" (whereas I doubt many doctors or lawyers would make similar declarations concerning the practice law or medicine) and by preferring the title "coder" over its considerably more prestigious alternatives like "programmer" or "software engineer." They promote bootcamp-style vocational schools to flood the market with cheap labor to compete with them and to further bolster the perception that programming is an easy, low-skill trade, perhaps a rung or two above mere clerical work.
And then when it becomes apparent that they are getting screwed by their employers who collude with one another to drive down wages with no-poaching agreements, H-1B visas, and by firing senior devs in favor of 20-somethings, the long-ignored subject of unionization is revived.
And of course, being programmers and therefore unsavvy, the model proposed is invariably that of a blue-collar trade union like the United Auto Workers Union and never an innocuous-sounding, white-collar "professional association" like the American Bar Association, American Medical Association, or American Dental Association. These outfits are so successful in both their lobbying and PR that they've made their members among of the highest paid practitioners in the world (particularly doctors), and the gullible masses remain wholly ignorant of their true nature and consequently spare them from the condemnation usually heaped upon unions, both public- and private-sector alike.
In fact, their PR has been so successful that I wouldn't be surprised if someone responded to this very post contesting my characterization of them as unions, despite evidence of their anti-competitive practices being trivial to come by: http://www.usdoj.gov/atr/public/press_releases/2006/216804.h...
I see it all the time, silly kids who think there is something pure and noble about giving themselves carpal tunnel, sacrificing their 20s when they should be having fun and forming relationships, sleep deprivation and associated psychological problems, stress, getting burnt out for 0.001% of a company and their boss buying a Porsche and propping up his "habits". Lawyers and doctors are far savvier.
The amount of money we collectively leave on the table is staggering.
Right if your goal is to make truckloads of money sure. Not all software professionals ascribe a great deal of value to this end. Many major advances in bringing high-end operating and distributed systems to the masses have come from "Open Source" movements. Is is that hard to imagine a more protectionist, profit-driven software industry where these technologies are shelved in favor of propping up current money makers? In effect denying cheap, high quality solutions to a generation of innovators and start up companies?
As a side note I found your call for unionization to be a flawed comparison. The organizations you've alluded to (AMA and ABA) deal in inelastic goods that enjoy popular legal protections. This is for good reason, no one wants brain surgery from an amateur, but I might give one a shot at standing up my wordpress site.
Sometimes the only way to jump over the heads of the paymasters is to do something for free.
Wrong browser window maybe? :)
To see the other side of that, you can always work as an independent consultant. You'll probably make more money if you do it well, but you'll have a lot more risk and variability in your income. Can't find a client this month? Tough luck, hope you've got savings. That's what you're giving up money for protection from.
There's also usually a bunch of other stuff provided, which may include sales, advertising, market analysis, customer relations, infrastructure management, etc.
The advantage to this attitude is that it appeals to HR and Technical interviewers. You're an upstart with some introductory skills and you probably have the competency to learn on the job and become productive within a decent time frame. It's better than working retail or fast food.
If we move towards an environment more like doctors and lawyers, we'll lose some of the self-taught crowd and probably rely more on paper credentials. I'm sort of talking out of my ass at this point because I've never seen or heard a doctor/lawyer interview for a job, but I imagine it's a little more involved and cautious than our industry's technical tests, puzzles, and quizzes. Our education is also far less involved. Our industry doesn't seem to want to move towards more in-depth technical interviews to establish competency, so unless some heavy regulation comes down the pipe, I really doubt the industry will become professional like the industries of doctors and lawyers
(And besides, why would we? Not every position in the industry will require extensive skills and education. We don't need BAR examines or peer interviews or board examinations or state licenses to build websites)
Another facet of this is that doctors/lawyers are somewhat gated by the time and money costs of education. In 6 months you can crank out one unit of basic programmer through bootcamps or whatever for a fraction of the cost that it takes to produce one unit of doctor or lawyer.
I think there is a kind of a institutional schizophreny on the role of the modern programmer since the first programmers were mostly a mechanical part of the machine translation process, punching cards for programs written by someone else. I believe this historical trait has skewed the perception of the requirements for the profession.
While I understand the desire to improve the quality of programming, I don't think what you're proposing would do that. I think all it would do is encourage horrible enterprise practices to spread and create vendor lock-in as smaller companies become less able to compete.
I suppose it depends on whether the seed population in this parallel universe were composed of lisp hackers or architecture astronauts :)
I don't know why it happens to be like that and if such people tend to become programmers or programming makes people to believe such things (although I have some guesses and the former seems more plausible, but that's another topic). But because of that striving to "make the world a better place" it would be much better if it would be natural for us (us people, not us programmers) to describe current behavior of doctors and lawyers as "evil" rather than describing behavior of software engineers as "foolish", even though both are completely valid. After all, the technical progress over last few centuries clearly shows that the world isn't zero-sum game, not yet.
Yeah, I know, it sounds like advocating communism. But what can I do if it so much naturally better in it's essence! And we would be pretty close to making it almost possible already, if not for that "pragmatic" ideology some people are spreading.
IIRC, deflation would be caused by a very fearful and therefore finacially conservative population.
^ What a crap culture that perpetuates this kind of thinking.
I'd rather have 100 doctors earn 500k/year than one insurance admin earning $50M.
In the meantime, programmers aren't even paid overtime. Because...?
There'd be more open source if programmers were paid more, not bullied into working free overtime on a salary and pressured by companies into vastly expansive, potentially illegal (but what individual has the resources to find out?) contracts that curtail their copyright to even products they develop in their free time. These cases exist.
Someone can simultaneously work on side projects for the greater benefit of the community around them, and make sure their employer is aware that working on stuff because they're interested in their spare time does not mean they can be underpaid.
It's up to those that are considered the best by their peer group to lead the way on this. In fact, it's precisely the same mindset that has us contribute to open source for free, with a vision to expanding our collective knowledge base and propel software development as a whole forward, that should push us to demand better treatment and pay of the other developers around us, commensurate with their abilities.
There are often two or three lynchpins at smaller companies who can easily ask for more for themselves, because they are invaluable to the organization. Those same lynchpins can also keep an eye on the other folks at the company and make sure they aren't being treated or paid like dirt. It's possible to do this while keeping the organization's own concerns in mind. Arguably this is the kind of thing that ultimately may lead to some sort of union, guild, or association structure, as the people working at one organization start going to work at other ones, and ask their original champions for help on how to be treated well at their new jobs.
I for one will have my foolishness, which I truly feel is a great contributor to how fast our industry is able to move, and eat it, too, by looking out for the folks around me at work and doing what I can to make sure they're paid as they deserve, within the confines of what is possible without bankrupting my company. I'm sure it won't always be easy, but I suppose we wouldn't be talking about this if it were.
(not rhetorical) In situations where you need a job and don't have the cachet to dictate contract terms, what choice do you have?
Such terms (and some equally egregious) are very common in some places. All companies know the value of it (but play dumb) and won't budge an inch.
If I'm going to give something I produced away under a permissive license, I'd rather not be harassed to sign an actual, physical contract with some company as well, let alone one that places additional obligations on me while offering nothing in return.
But do you go to the brain surgeon when you need a band-aide? How often do you visit the brain surgeon?
My point is most programmers are arrogant douches who think that their todo app is the equivalent of brain surgery.
And the people coding robots to do surgery couldn't do it without actual surgeons telling them how to do it.
And I can almost guarantee you that those programmers are getting paid hundreds of thousands if not millions of dollars and are not the ones who are getting screwed by their employers.
The only reason you think brain surgery is so complicated is, again, because doctors have excellent PR.
And you're kind of proving my point about the arrogance of programmers.
I'm sure you'll fix your moms computer before you let just anybody do brain surgery on her. A large project may have many interconnected components, but it's not the only profession that involves such things and the way the human brain works means that given enough time you'll probably be able to understand whatever systems you would like to. I mean, what it basically comes down to is understanding a few programming languages and logic. Maybe chemistry would be a better comparison? I wouldn't say IQ matters as much as dedication.
Bill Joy wasn't at the forefront of computer science at the dawn of the computer age because he was a super genius, he had just logged more than 10,000 hours of programming by that time.
Unfortunately for us programmers we're soon going to find our salaries going down simply because there are inevitably going to be more and more tech savvy people and programmers. It's not a new thing anymore. ANYONE can do it. Literally. Only about 1% of programming being done right now is highly advanced and complicated. The good programmers will continue to create easy to understand abstracts for the not so good programmers until we can ask watson to code what we need on the spot.
And with most software projects, much like real world engineering, it's less about the fundamentals (language, base logic, etc...) and more about managing and working with highly complex systems.
Numerous studies have placed the typical IQ of software developers to be in the >120 range. That's between 1 and 2 σ , or somewhere around higher than 90% of the population.
http://www.randalolson.com/2014/06/25/average-iq-of-students...
However, where things get complex is when we reach the systems-design level. Doctors need ten years of studying to be qualified. I would claim that you need at least that much of programming to be really qualified for a position where the evolution of an expensive system depends on the intuitive design decisions you perform on the spot.
The cost of unskilled medical practice are localized and can result in large costs and an individual tragedy.
The cost of unskilled systems design practice can be spread temporally over several years, result in large organizational costs in maintenance and small tragedies for the poor bastards who have to maintain the system.
While I do not suggest comparing the economic risks are a good key metric in computing a professionals pay check I think it should be a part of the equation. It's really hard for me to figure out who has more financial risks tied to their profession, the systems designer or the doctor.
If we continue the risks analysis one could say a regular lorry driver can easily cause as much in damages with careless driving. However, in the case of the lorry driver learning to do a proper job does not take ten years.
Edit: Auch, the downvotes, they hurt. I was trivializing a bit with the comparison to arithmetic. What I should have said is 'a fundamental skill applicable to many domains just like arithmetic or writing.
So I would not worry about systems designers being screwed for low pay. Rather I find those situations problematic where employer does not realize they would need systems design nor know what it would look like in the first place.
Having some sort of "guild verified" systems designer licence might alleviate those situations by making the client realize the thingamajic they are ordering might need systems design and would actually require it in the contract. Would it help really? I don't know but it would bring clarity to the profession-client interface by making the client more aware of the skills needed to implement the contract successfully.
Let me rephrase this, anecdotally STEM inclined people can pick up programming at an adult age far easier than they would e.g. reading and writing or playing a musical instrument.
Can everyone do this - I don't know.
I have interviewed many people who claim to know programming, but can't program. These same people I think could read and do simple arithmetic.
Like many things, once you know how to do it, it looks easy. I never understood why people have a hard time with pointers, recursion or dependency injection, but many people do. Programming is not some impossible to learn skill, but it does require dedication, a level of abstract thinking not often found in other disciplines, and logic. Reducing programming to writing or arithmetic is maybe true for simple Excel macros, but not what most people on this site would consider programming.
I claim both can provide value. Even simple programming can be used to automate domain specific tasks that will reduce the amount of manual labour required, freeing the professional to other tasks and thus increase their productivity.
Programming in a professional setting has thus at least two facets - a tool to create new systems and a tool to automate existing ones. I would claim both tasks are programming but with dramatically different mechanisms for adding value.
"Reducing programming to writing or arithmetic is maybe true for simple Excel macros, but not what most people on this site would consider programming."
Yeah, I went overboard with simplification there. The difference I wanted to communicate (but failed) was between the human requirements for entry level scripting and actual systems programming as the post I responded to stated programming did not have the same economies of scarcity as skills in medicine. I would have been more correct to state that programming is more like arithmetic than medicine in the sense that both novice and experts alike can provide added value through the act of programming but in widely different circumstances.
I'm a professional software engineer but my wife with a PhD in physics 'just happens' to write Matlab scripts in her day job as an R&D engineer to chew through terabytes of production data in an indusrial setting so I think I have a pretty good view to these different kinds of domains :)
These organisations have been around for decades and have been pushing the professional-body wheelbarrow for the whole time.
Try practicing medicine without a medical license.
Which, frankly, would be approximately ridiculous. Even shitty code creates enormous value, and the industries where it matters have already extended their regulations to cover software development.
Maybe it's about more you know about stuff the more you know how little you actually know, if that makes any sense at all...
I think this works both ways. When I was in high school, it actually seemed like everyone could be a programmer. My mom was teaching programming at a state university extension campus. Her students were getting jobs after one year of school. I was already programming at the same level. Neither my parents nor I could see any reason to spend four years in college learning a skill that anybody could do, and we expected the market to saturate.
So I majored in something else, and learned programming on my own.
You can try to elevate it by calling it engineering, but it's not. Most programming (truth be told, most product design, not just programming) is done by trial and error. Of course there may be a level of computer related activity above programming, that deserves to be called engineering, that is vital for critical tasks. This is not to denigrate the market value of content knowledge, such as knowing a complicated API inside and out, or the different processes for making things out of metal, that allow a good designer to come up with better designs.
First, seeing "programming" as a generalised activity is barely more accurate than bundling "doing stuff in front of a screen and keyboard" together. You wouldn't bundle together writing a novel and doing mechanical simulations on Mapple, would you? Same for programming. More specifically, the intersection between fun+unpaid open-source programming and corporate programming is tiny. Nobody's going to write an open-source SAP module for fun. As for big, strategic open-source projects, they have their many unfunny parts done by employees, who typically work for companies who want to commoditize something on their vertical market, by enabling an open-source product.
I do hack some stuff for fun, some others for money. I reasonably often manage to write fun stuff for money, and sometimes I even get to open-source it. But my open-source programming? I do that because it's more fun than _World of Warcraft_ or TV watching in my twisted mind; it has little to do with my job (most of the time, and unfortunately).
The "I'm no Senior Software Architect I'm just a coder" thing: OK I'm guilty of that one, but it's no modesty, it's just instinctive rejection towards a corporate system we often despise. We have a urge to reject the Dilbert ladder, the way you might reject a medal proposal from a country / organization whose ethics you condemn. Think of the people who declined the Nobel prize, nobody ever believe anyone did that out of modesty. An important point of yours still stands though: not playing along with the corporate charade is going to hurt most of those who indulge in it, in the long term.
About ageism, and as a not-so-young person anymore: when you age, you get a broader picture of what you work on, and why, while you lose some sharpness, most notably in speed of learning. This broader view has some value for the company, but only as long as it comes with some managerial skills: your better synthetic view is of no value, if you can't effectively share it with others. Your caricatural Aspergerish programmer doesn't have the interpersonal skills required to transform the insights of maturity into value for a company, and that kind of person is over-represented among the people who still call themselves "coders" when they hit 40. Successful mature hackers hide under other titles, in companies.
As for the "everyone can be a programmer", I don't remember having ever witnessed that, quite the opposite. Actually, I'm here because a decade ago, I enjoyed reading some smug essays, from some openly elitist guy who was trying to figure out what made hackers such special bunch ;-)
About the dangers of boot camps: if you need to teach someone how to program, he won't be serious competition for any hacker. You'd have to teach a hacker how _not_ to program. Cue that famous story about Mozart [http://betweenletters.quora.com/Mozart-How-Do-You-Write-a-Sy...]. OTOH, H1B might be more of an issue, I don't know. Sure it's cheaper competition; but what makes the Silicon Valley such a wealth generator is a critical mass of smart people. It might well be that allowing a thousand super-smart foreigners creates interesting jobs for hundreds of thousands of merely-smart Americans?
About programmers being typically unsavvy with politics and human relationships, there sure is a strong correlation here. Not being American, I don't understand why you typically despise unions more than the other lobbies which serve wealthier interests, but I can see the savviness in avoiding a name that triggers knee-jerk reactions in many voters.
So, back to the core argument: why don't we organize into unions, optionally under a less unamerican name? An issue is that many of the smarter programmers already have a fun job at a decent pay. In Europe, they also typically enjoy a healthy life/work balance, but the American relationship with "work ethics" is yet another thing I won't pretend to understand. Anyway, when you have fun doing something you're good at, you aren't tempted to enter a field you neither like nor master, such as politics, be it the genuine or the corporate kind.
And why aren't we typically good at it? Well, we typically enjoy deterministic things with explicit rules, like computers and unlike politics. We also typically can and love to fit complex models in our minds all at once, to design and debug them; I guess it often comes with a solipsist / introvert character.
Would I want a programmers' union? I'm not sure. I fear that it would favor a bureaucratized view of development, and suck the fun out of the job. I navigate the anarchic development job market just fine the current way, favoring what I personally care about (lots of from-scratch / exploratory developments, moderate workload, mutual trust with my hierarchy). I don't want to think of my job as a permanent struggle against my nasty overlords, the way automobile workers seem to experience their workday. But sure, there needs to be someone to kick the companies' asses when they implement no-poaching cartels.
People, in general, don't want to be rich. They want to be happy. Programmers are a happy bunch, when you look at them in aggregate, and compare with other categories of professionals. They are happy to give away enormous quantities of their labour. They spread "egalitarian myths" because they are happy with their lifestyle, and want others to join in. Because they are so confident, that they don't feel they need monopolies to protect or improve their lifestyle.
You are making a fundamentally flawed assumption that programmers are not "smart enough to unionise". What if they are smart enough NOT TO unionise? What if they actually know better than you think they do?
Never assume you know better how one should live his/her life.
This can't be emphasized enough: In any conflict between employees and management, HR will always be there to cover the company's ass legally, not to help the employee. Don't expect them to be on your side.
I've been reading the book "Corporate Confidential", recommended recently by a HN contributor.[1] Strategies like "managing employees out" seem to be a ubiquitous practice in corporate America, not just limited to Microsoft.
https://news.ycombinator.com/item?id=6240495
Excerpt:
Most of the (now ex-)employees of my (now very ex-)client are in a blind, terrified scramble right now because they made a critical career mistake: They put their loyalty in the company. They put so much loyalty into the company, in fact, that they stopped nurturing themselves and growing and building their careers as a separate entity apart from the company.
Anyway, the CIA interrogation manual for the wars in Central America in the 80s was titled "Human Resource Exploitation Training Manual", which struck me as perfectly Orwellian from a couple of directions.
In the UK I pay ~£16/$25 per month to be a member of Prospect, a union for workers in the telecoms sector. When I was made redundant (downsized) they were able to get me an excellent settlement and provided me with incredibly useful professional advice.
I also know that if I'm in a disciplinary situation, they'll have trained employment rights specialists available to fight my corner.
The best way to think about a union (IMO) is as legal insurance. You pay for car insurance in case someone plows into your automobile - why wouldn't you do the same for your career?
Few people willingly pay car insurance; fewer still have any confidence that their insurance will pay-out. But we pay the premiums because it is a legal requirement, even though it might be more effective for some people to put that money into a bond instead.
It's a similar situation for unions; few people expect that a union really protect them from a determined private-sector employer, so they assess the cost-benefit of such "insurance" to be negative. Particularly when the premium, much as in your example, costs a lot in terms of minimum wage.
Regarding unions, it's first and foremost not a question of protection from a determined employer, but protection from specific parts of the company doing illegal and/or wrong things.
As soon as your company has more than 10 employees, it gets a whole lot more complex than "employer" and "employee".
What country are you from? In the US most people who can afford it have more than the legally-required car insurance and insurance companies are expected to pay out in the event of an accident.
A bond isn't insurance because, on average, it won't cover your expenses (if you earn enough on it to pay for a catastrophe, that means you didn't need it). The whole point of insurance (and unions) is to share risk over a large number of people, only some (random) fraction of whom will ever "need" the insurance.
I remember one jokey comment that low pay in prospect terms means some one who isn't paying any higher rate tax :-)
By that rationale, no-one would by the more expensive fully-comprehensive insurance (where your own car is insured, not just third parties) but they do.
Actual experience has borne out these expectations.
I think an actual lawyer would probably be better value for money.
If you murdered a customer, your Union will probably "advise" you that there is nothing you can do to keep your job.
>If you murdered a customer
Oh yeah, that was totally it eyeroll.
I once got into a conflict with my immediate supervisor which escalated into legal territory. The hows and whys doesn't matter right now, but suffice to say I had every right on my side, but I still couldn't have done it without a lawyer from my union who knew exactly who to contact and what to do.
As you say, unions are a form of insurance system and when they work they are irreplaceable. It's a win-win situation for the company and the employee to get rid of the situations I mentioned above.
High-tech industry is not a monopoly. The only thing unionization would do is to complicate life of capable people who actually work by forcing them to work alongside unmotivated lazy-asses that are employed just because they can't really be fired. I can't pay good people better money and I still have to drag around these useless clowns that religiously observe their mandated 4 coffee breaks and time their arrival and departure with sub-second precision. This is counter-productive. Unionization in high-tech is a seriously bad idea. It's just a way for unqualified personnel to hold on to their jobs instead of developing themselves into someone actually employable on their merit.
If all you are looking for is a legal support in tight spots, then there's an actual regular insurance coverage for that. Just ask your insurance provider.
While that may be, employers in the same field with geographical vicinity are known to negotiate on shared terms of employment - in effect creating leverage over individual employees when negotiating the terms of their employment.
A union may devolve to many things but one of the valuable facets are that it creates leverage for the employees against the employers.
I don't have to like it, you don't have to like it but that is the way the market works.
"still have to drag around these useless clowns that religiously observe their mandated 4 coffee breaks and time their arrival and departure with sub-second precision."
I would have just used the words 'non-productive' - that amount of verbiage creates the feeling that there is non-spoken behavioural pattern that is used as the metric of an employeed value rather than the value they produce.
Especially in high tech the moments when an employee actually performs value adding work can be spurious, unlike in lower tech industries like logging where the work you see is actually the work input you are getting.
http://en.wikipedia.org/wiki/High-Tech_Employee_Antitrust_Li...
It's also nice to have a group of people lobbying for the interests of IT workers, say.
They are associated with and often still do a lot of things that I really want to part of. I associate joining a union more with joining a political party than what you describe, rightly or wrongly.
Thanks, I didn't realise we had a union for our sector.
Then when I became a manager and was no longer a union member, the union attacked my management position so hard, that I rage quit because I simply couldn't take it any longer.
UK: Has software union. Developer salary in London =~ $65k
US: No software union. Developer salary in SF =~ $200k
I'll be sure to pull this out next time I'm trying to explain to somebody why unions are such a terrible idea for software developers.
And, that said, unions have very bad failure modes, as experienced by the problems with regards to (allegedly?) bad teachers. Also, they are able to mask problems for quite some time, and when they finally implode you have a half-broken sector on your hands with cascading effects and unemployment and defaults and ... well, Detroit-like consequences.
Furthermore, software developers have it good, and probably will be in demand for the coming part of the century, but that won't stop labor exploitation even in the tech sector for specific regions.
It's true that there seems to be a sort of cliff around my age; there are very few people in product development roles over the age of 50. I would attribute that to the way the industry evolved: mine was the first generation that really had the opportunity to grow up with PCs. My first exposure was a programming class in summer school in 1981. The demand for software developers also really exploded in the 1980s. These things combined to make software both more interesting and more compelling as a career than it had been in earlier generations.
EDIT: It's probably also worth pointing out that anyone who'd joined Microsoft before ~1995 and was careful about managing their money could likely have decided to retire by now.
The posts from "Mini" are always interesting; the comments much-less-so, and recent ones consistently seem to devolve into immigrant-bashing.
That in itself creates a huge skew, there are fewer 50-something programmers because 1985 produced fewer programmers. I think a lot of the concern/focus on the youthful "fetish" in the industry is this kind of an illusion.
In the early 70s, Rockstars were by definition in their 20s. These days, if you are looking for rock mega stars who can fill arenas anywhere in the world, you will find rockstars of all ages. In fact, rockstars like Mick Jagger (70s), Steven Tyler (60s), Prince (50s) are more likely having had decades to accumulate fans.
It turns out that the 27 year old rock god cliche was a product of the fact that it takes time to make a 60 year old and no one was making rockstars in 1929.
Plus, when you're 27, you're probably at or near your physical peak. IE, you're good looking. And that's arguably more important than any skill.
For an anecdotal data point, where I work now I'm one of the younger guys at 37.
No top management decision is ever based on a consultant's suggestion; it's the other way around. The consultant's job is to provide the appearance of neutral outside expertise to justify whatever the executives wanted to do anyway.
Source: http://news.microsoft.com/facts-about-microsoft/
Don't be scared. Instead, learn to have more compassion on others while you are young. Join a Union. Keep improving. And consider moving into management later or start a small business in your late 30s.
Should this really be necessary to stay in the industry? What about those who enjoy being hands-on with code?
- case 1: a guy in his fifties writing C++ like it's C with classes in the same style he did 20 years ago. Every piece of code is a complete trainwreck. I could go on for hours on how bad it is. Anyway, the programs he creates like that sort of work. Barely. But because there isn't anyone else to do his job, managment is stupid and too lazy to find someone else and rather waits until it explodes in their faces (i.e. when he retires), he can stay. Until one day a new manager steps in and immediately sees the problem and lets the guy go. Would you really call this discrimination or rather the proper thing to do?
- case 2: the opposite. Decent guy in his fifties, hard working, always learning, writing proper code, not afraid to speak up. The letter eventually yielding him fired because (again) of stupid managment: one manager able to convince the rest he's too old and too costly too keep, rest of the pack too lazy too stand up and just let it happen.. That is discrimination.
Experienced guy in his 50's, seen it all before. Remembers the era of object databases, knows why SQL was invented, and shuts down his hipster colleague's plans to use Mongodb. Remembers CORBA, SOA and J2EE and is skeptical about microservices. Understands why logging/metrics/dependency injection is necessary and pushes RoR guys to use more verbose syntax to support it.
Younger folks dislike him because of this. There is conflict. Management has a real problem, since they both need experience but the senior guy can't build everything on his own.
There are also arguments for NoSQL dbs as well, some times old knowledge is exactly that.
This doesn't seem to be a compelling example... But alas, I think I've taken this off topic.
Disclaimer: not a RoR guy.
Dependency injection isn't about unit tests. Dependency injection is about weak dependencies, easier refactoring, and preventing bad design decisions from being a disaster 5 years down the line. Dependency injection is a good idea no matter what the language/framework is.
That's the point of the parent comment. A dev in his 50s would point these things out.
In terms of architecture, it's usually a case of YAGNI. Every dependency injected is a configuration point that is almost never altered, except for mocks in testing. When this style infects a whole codebase, it makes it far harder to read and navigate, because code flow is dependent on runtime data flow. Heavy use of indirections that only ever go to the one place is a bad code smell, and it's a stench over the entire field of enterprise Java.
Code that is easy to read is easy to refactor. Except for natural architectural chokepoints that are typically intrinsic to the problem being solved, you're fooling yourself if you don't think architecture changes are needed for most refactoring - dependency injection isn't buying you what you think you're buying. Every injection point you create is a prediction about the future, about the possibilities of change, but there's one gotcha: the future is hard to predict, so most of your decisions are wrong.
You're better off being agile, following YAGNI, doing the simplest thing that will work, and altering it when requirements change.
DI tends to work great for the integration point between systems - e.g., connecting the REST or Thrift interface to the calculation backend and datastore.
The fact that a concept is hard to use in Enterprise Java is a poor argument against anything other than Enterprise Java.
On the other hand, DI frameworks are a "modern" way to do global objects. I have no clue what problem they solve or why using a DI framework is a good idea. I've had the "pleasure" to work with a Java DI framework project last week, it turned 10 lines of code into 300 lines of boilerplate spread around 3 different packages.
Furthermore, I agree, the pervasive use of mocks is a smell. The point of tests is to have test suite T.A to validate module A. Littering the test base with mocks of A which don't pass the test suite T.A is just a recipe for pain, both semantically and as increasing the amount of code change required by a refactoring. A is changing? Go chase the 100 mocks that make their own assumptions about A and fix them. Your tests are now part of the liability under change instead of being the safety net that tells you whether your module B depending on A is still working.
You can achieve weak dependencies, easy refactoring and bad design without DI (Maybe it's harder in java to do thought :\ ).
The magic question of DI is, how do you decide what is a dependency worth injecting vs a static/strong dependency? In my experience its: "Inject everything". Which leads convoluted code. The correct answer (imo) is "you can't, unless you can predict the future".
a) Silicon Valley is notorious for its implicit ageism
b) Once I'm 40 and have 4 years of experience working in start-ups I'll be dismissed from either getting hired or getting funded because I'm old.
The only thing that makes this topic worthy of upvoting is because people identify a company doing things an entire culture does. Sure you can bring a lawyer and pull a company to the court (good luck proving that they discriminated you based on age) but a culture? How do you even do that? You can't.
This is why I find it hypocritical that people act appalled on the idea that a company is doing what everyone admits a culture does but for the company is punishable and "well deserved" to be punished for it. In fact, I imagine there will be some sort of standing ovation somewhere in the world when an ageism case is won against ANY Microsoft, whereas for the culture is just "how things are" and it's your job to avoid it.
Funny, isn't it?
The times have changed anyways. Most people won't be working at the same company for most of their lives and to me that seems like a bad investment anyways. It's time that people (especially in IT) start shaping their own future.
Current Microsoft employee here. A few years ago my manager at that time did exactly the above. The review process in use at that time rated employees on "What" you accomplished and "How" you accomplished it. I had done really well on the "What" and the manager still gave me a low rating because supposedly I did poorly on "The How". The "How" gave managers tremendous flexibility to rate employees however they want regardless of actual performance. So why did my manager do it? I believe he discriminated against me for age reasons. There is evidence to support this: This manager rewrote ("reinterpreted" according to him) the HR-supplied expectations for SDEs (Software Development Engineers) at each level, and he raised expectations for those at higher level, while leaving expectations for lower level employees the same.
While I believe this manager discriminated against me for age reasons, I don't believe there is Microsoft-wide, corporate-sanctioned, age discrimination going on. It might be happening at the level of individual managers, however.
This is actually part of classic corporate behavior: * Company starts small, based on people who want to get things done (and get rich)
* Small company succeeds, discovers need to expand
* Small company becomes big company
* At some point a threshold is passed: behaviors (such as are typical in middle management) begin to appear, and are tolerated, because the company is successful.
* But, the mid management behaviors are lethal in the long term. The reason its long term instead of short term is because the company success is a kind of inertia -- it takes a while before the "decelerating" behavior of mid management affects the company.
* By the time the success inertia has been countered, those mid managers have moved on, either through making a fortune, or being able to parlay their "success" into other positions in other companies.
Pessimistic, but I've observed it in many circumstances, up close and personal in one or two (including my current position).
Lets hope Nadella works out well for you and MS.
I've made my career on MS technologies, and it's been painful over the past decade or so to gradually turn away from it as the big corporation management power plays run their course.
When I worked at big companies I was fortunate to have great managers, but I was able to see how bad ones worked from the outside. I got tired of rolling the manager dice and have since decided to only work at smaller companies. At smaller companies it is a lot easier to see how things will go during the interview.
http://www.businessweek.com/articles/2014-11-24/the-tech-wor...
We can say "there is a food shortage" because a certain amount of food is necessary for a society to survive. The same can't be said of software developers.
Also, if you argue a high price means it is scarce, does that mean there is a shortage of hedge fund managers and CEOs?
I'm a foreign STEM worker myself, currently on an H-1B visa. I have a very decent life here in the US, much better than I had it in Brazil. Back there both my wife and I worked and we lived at a quite lower standard than we live here. Now I'm currently the only one working and we live in a way nicer looking place, have a car we could never afford there and we're able to save some good money and still get to travel a few times a year.
So really, where is the "very little money"? A lot of other people share stories similar to mine and are doing pretty well too. And by the way, we're in our 20s and I was a college hire, so the good situation is not really due to having experience and being hired into a higher position.
I don't know for sure but I also suspect that if your salary is $100K+, you're probably far above the median STEM worker salary:
Median earnings for those with a bachelor’s degree in fields including aerospace, chemical and mechanical were $75,000, according to a study by Georgetown University's Center on Education and the Workforce (CEW). [1]
http://www.motherjones.com/politics/2013/02/silicon-valley-h...
http://www.cringely.com/2012/10/23/what-americans-dont-know-...
http://www.ifpte.org/news/details/Obama-Administration-propo...
Google, Apple, Adobe, Intel, et al. have been caught red-handed in illegal collusion in order to keep US engineer salaries suppressed. Knowing this, why would anyone find it hard to believe they would turn to foreign talent to effect the same goal?
Relatively few Microsoft employees are STEM workers or programmers, and none of those in the lawsuit in question. They are in the sales organization. They may work in the technology industry, but the questions of this lawsuit are more about ageism and management issues endemic in many Fortune 500 corporations regardless of the industry or role of the worker.
"The recruiters accepted our exemptions because they were going after bigger fish: the engineers. The computer engineers who work as W-2 contractors are generally earning $100-300/hr and often work 60-80 hours per week. The recruiters were afraid that if such workers were entitled to overtime pay, the companies may cut overtime work, and therefore the recruiters would lose their 30-50% share of that money (this can be much as $6,000 per week to a recruiter for a single worker.)
Engineers have always refused to organize or even to be aware of their interests: they think recruiters are their friends. One engineer said to me: "Engineers think they're so smart that no one could do such a thing to them. Wow. They got really screwed." The law is an annual loss of as much as $50-75,000 dollars per each engineer. Yep, it's legal. The recuiters wrote a law to take away their money. Silicon Valley engineers were plundered by their "friends"."
I was hourly once because my company was very conservative about labor laws. Finally reaching the rank that no longer required me to fill out timecards or justify project time was a big upgrade in my life style. Did I work an occasional Saturday? Sure, but I also left early on other days or worked from home. I couldn't do that when I was hourly.
I'm far from convinced that overtime rules would make anything better for tech workers.
This whole post is crazy but this quote especially is absurd.
I'm a current Microsoft employee and I'm not a brainwashed corporate drone constantly abused by incompetent management. I don't think you've had any experience being employed by Microsoft.
Anecdotal; I know two engineers, one over 55 and one over 60; the first one is an expert at lower powered embedded hardware & software of the tiny kind (think smart credit cards, complex dime sized sensors); he gets flown in all over the world to help out for insane amounts. Chinese companies hire him to make more robust stuff. The other one is an expert at Fortran/Cobol/mainframe OS crisis management; whenever a bank anywhere has a very serious issue, he gets flown in to fix it. Again at rates high enough to only need one gig per few years.
I'm working hard at not being left behind in terms of new technologies, and doing more managerial/architect style roles in recent years. I think people don't realize how young 40 is today, and more so how quickly it comes around the corner. You're 12 years from 40 and I assure you these 12 years will pass about as quickly as the previous ~5 years. I'm less than 10 years from a 20-something and already an "old guy"! bah.
Sure they may have grown their skills inside that particular silo, and that is worth something, but maybe outside the whole world has taken a different direction.
Never forget that the cool tech you're learning now will be out of fashion in a few years, and completely obsolete a few years more down the road (replace years by months for any JS framework out here :p).
Well, not all of them of course, but yes, knowledge of a particular language matters.
For example:
a) idiomatic code in a given language is easier to maintain, a programmer who doesn't know this language won't write idiomatic code for awhile
b) lack of knowledge of available libraries may result in reinventing them poorly, leading to NIH syndrome, which is bad for maintainability... and just bad in general
c) std lib of a language is a special case here: without having memorized what it has to offer you're going to work many times slower due to having to google all the time
and so on.
You can either know a lot of languages and technologies and bet your career on ability to learn new things very quickly, or you can be content with one language and become a master in using it. In the latter case much of your skills do become tied to the language and particular technology, so just be sure to pick one which is not going to stop being popular in a year.
I started my career around 15 years ago, working on a complex server system written in C++. The important skills back then were all about managing concurrency using mutexes, RW locks, events, and so forth.
Fast forward to now (with lots going on in between), and I find myself working again on server software, but this time the approach is much different: now for dealing with concurrency I'm relying on immutable state, and using Futures or actor systems to coordinate parallel work. It's been years since I've had problems with a deadlock.
Bottom line, it's true that a good programmer doesn't care about language or framework, since he can pick those up pretty fast anyway. But it's a skill that needs practising, and I've seen people neglect this and then regret it later.
Also, there's some unspoken assumption, that if you're 40 or even 50 and "still" an engineer, something is wrong with you - you should have been a CTO or something years ago, so you either have bad personal skills or are untalented, kept for some Job-Security-Tech you know.
The sad thing BTW is that this attitude is a self fulfilling prophecy, causing talented engineers to push up the ladder and become bad managers, or go into marketing/sales/etc. Even if they're not bad at it, we are losing great engineers due to that, who were just scared to remain engineers.
BTW to me personally tech is a second career, although I've been programming since I was a child, my first career was in journalism, and later web content and product management. I've only started working professionally as an engineer at 29.
1 - Supervisors might feel threatened or disrespected
2 - https://en.wikipedia.org/wiki/Illusory_superiority
3 - Cost (with or without considering the true value/cost)
My point is just that if you have a manager like you describe, leave. You don't have to with that; there are better options out there.
Given that the IT industry is notorious for long hours and impromptu overtime it's easier to see why they might be prefer younger employees.
Of course family remains #1 priority afterwards, but there is enough flexibility to go along with a demanding job (provided you like said job).
I've been working remotely for the larger part of may "young father years" so I guess this helped a lot, too.
And yes: family does come first.
Nadella should have been fired by the board over that "karma" fiasco if you fuck up that badly when at an internal event where some one throws you a soft easy Q you couldn't be trusted run a whelk stall (I suppose hot dog stand is the US equivalent)
Proof please. This not only reeks of confirmation bias, but could it also be explained by resistance to acquire new skills in line with advances in fast-paced technological improvements?
I'm kinda thinking that's what the case could possibly be about?
Is this one of those divert the conversation by asking for citations for things that are obvious sockpuppet things?
Also, I'm wondering how you know for sure that someone is a so-called "sockpupppet"? This is a skill I'd really like to master because reading people over the Internet is so difficult.
Someone like this might be a sock puppet, but they might also just be an ideologue. A sock puppet will have created a login, assuming a login is necessary, just for the purpose of sock puppetry. An ideologue will stick around and argue other topics.
Sock puppets also like to work in teams, you'll see them in groups of two or three 'me-too'ing each other's points. If this happens, all of them will have created accounts specifically for that purpose. Sometimes they'll also all have the same IP address. This kind of manipulation is easy to detect, so generally you'll only see them rarely and in the short window between their spamming and the subsequent detection and banning.
Now while that evidence needs to be evaluated, merely asking for proof ignores the premise of the whole linked page.
But, I work for a big company. I've only been here 4 years and I've been desired by other teams and at least a half dozen occasions - I do my job, I learn the technology and processes used here, I solve problems, I deliver, I am reliable and consistent, I treat people with respect, etc. Even still being a junior, if I lost my job today, I'd have at least 3 different job offers in different areas of the company just by my perceived worth. No, I'm not a brown noser.
So my question is, how can one work for a company for so many years, deliver and execute on so many projects, only to be invisible to the entire organization? This makes it sound like these are line workers getting laid off despite their long-term employment with the company.
If I was as invisible in my current job as these people were, I'd be looking for a new job so that I can actually be valued for my worth. Are these people victims, or are they mediocre and their career came to an end sooner than retirement?
Just a perspective, don't hate.
Edit: My company isn't one that values young workers - our primary TS core is older. Thing mainframe old. So I don't actually have much of an advantage with my "youth".
If a developer's value truly increases faster than their cost over time, why are software companies engaging in age discrimination? We can all tell ourselves that these companies are shooting themselves in the foot in the long run, but do facts back this up? Presumably, if another company hired all these valuable experienced professionals, they'd wipe the floor with these companies staffed by cheap college grads. Why hasn't this happened?
I'm currently in my early 30s and working in a different engineering discipline, but I love programming and part of me would love to jump into professional programming. I interviewed at a few start-ups recently and got an offer for that money than I'm currently making. Ultimately, I turned it down because jumping into software this late in the game feels like possible career suicide. In my current occupation, senior engineers are valued and their accumulated knowledge and experience has demonstrated value.
By comparison, writing software the HN way feels like building on sand. It's fun how a new programming language or database or web framework is announced weekly, but in the end everyone is chasing a moving target. I enjoy this now, but I can see how I might eventually grow tired of playing this game.
I don't think Facebook, Google, Apple, Microsoft, etc., have consciously been creating/adopting different programming languages to silo their workforce and reduce the fluidity of the labor market, but that might be a side effect.
A little off topic, but: I am in my 60s and I have never felt any age discrimination (at large companies like Google, Disney, and remotely working for many small companies, some of them startups).
I think it is critical to put effort into developing your own career, in addition to giving fair value to whoever is paying you at the moment.
Pay > $150K: MSFT 40%, GOOG 20%. Age Over 55: MSFT 16%, GOOG 20%. No children: MSFT 74%, GOOG 79%.
As for me, I am 57, a developer in a startup, and still get offers. MMV
Some people / companies believe that the only way to get ahead is by screwing someone else over; either out of some money, or out of a job, or what have you. That's just a shitty way to do business, and a clear sign of lack of respect or appreciation.
But then again it might be a scale thing with them and a matter of acquisitions and such too, as you said.
+1 for staying small; or at least growing slowly and carefully. Companies that just spam hire are likely not thinking about how they'll support any given hire for the next few years let alone the rest of their lives.
Note the system was so perverse managers would, if they could, store up genuinely low performing employees precisely so that they had ones they could sacrifice.
I am absolutely mind blown by reading the comments here. You are afraid of what will happen to your job when you reach 40? Ask yourself this: how do you think people managed to live and have a job a hundred years ago when they hit 40 or 50?
OK, perhaps this is a cultural thing. I am from eastern Europe where a "normal" annual income, for a single person, can be $12,000. So a couple can bring $24,000 I assume this would be devastating in US. Just like the news the other day with the president of a university (in UK?) where he was complaining of having to deal with an €220,000 annual income.
But of course, you are aware of this discrepancy. Otherwise why would these kind of job offerings exist: https://www.elance.com/j/wordpress-plugin-theme-developer-mo...
$300 / month "FULL-TIME wordpress plugin and theme developer from Pakistan and India only."
Please, if you are being laid off at 40 and in the case you are not suffering from a company downsizing, bankruptcy or you don't have medical issues (another interesting topic to talk about) it means that you are either an incompetent or a lazy individual.
No disrespect, please just wake up from your dream.
EDIT: I just realized from the feedback to this message how completely and utterly naive I am to not taking into account that HN is in no way representative of the average worker in US. Here, the absolute majority seems to be only people from IT which don't quite appreciate the opportunity and privilege actually to be able to code and think that only > $60,000 salaries are worth their time and effort.
Good luck then!
For instance in the USA the economically worse off are in relative terms considerably more worse off than in countries with lower income inequality.
> You seem rather ignorant of the U.S. then.
To this type of a comment you can easily answer the same way. You madam or sir seem to be equally ignorant of Europe as well.
Any way, I have no local knowledge of either issue ... I'm located in northern europe.
Anyone who tells you there's no age discrimination in the industry, old people are fired because they are no good, so just be good - that person does not have your interests in mind. They aren't thinking about your future.
/obvious sarcasm
There are plenty of transition paths I think. For example, education, research, legacy support, etc.
Oh yeah? What is that reason?
What could possibly be the reason to avoid older coders? You probably don't want the 85-90 year olds but 40? 50? What you want to avoid are those who stop evolving and stop being curious. Those who go to the office and apply what they learned a decade ago but doesn't learn anything new. That can happen at any age. Evolving doesn't require putting in 12hour days. Also it's likely cheaper for the company to encourage employees to grow within their field than to move all "old" people to supporting roles.
If you could learn a new programming language when you were 20 it should be easier, not harder, to do at 50. Experience should ensure that.
Just wanted to quote this for truth. Every couple of years upon evaluating myself I recognize I know more, but likely still squat about certain subjects, and laugh at my past self because it would think it knew a lot. Figuring out you don't know as much as you thought seems the key to really learning more. And that idea in turn has led me to be really wary of people claiming (as in, yelling out loud sometimes) to be wise. If you claim that there's a good chance you aren't. I'm definitely not. But at least I know it..
Bean-counters who think 'Don't spend money' is a good way to run a corporation are not only clueless, they're immensely destructive.
The correct approach is 'Don't spend money unless you get a good return on it.'
In some situations, the expensive choice is the rational one.
Unfortunately hiring policies aren't rational. There are all kinds of issues of power, politics, face, ego, image, prestige, accountability, and so on to consider.
These are the real root causes of ageism and sexism.
Another reason of course is the ever changing tech landscape; when I had 5 years under my belt C# had existed 5 years and I had 5 years of C# experience. I had more pro experience with C# than anyone, including of course most of those a lot older than me. The takeaway is that the exaggerated focus on experience with specific tech keywords means that young age often trumps longer industry experience, simply because the young dev may have started just as Tech X took off. This obsession with resume keywords will go away as our industry matures. Companies that don't realize that won't be around long.
One thing that experienced devs do well is pattern matching, though for many at the cost of flexibility. By way of analogy -- and I do not mean this to be taken at all literally -- you could consider the use of the cerebrum and cerebellum in physical activity. Repeated practice of physical activities embeds the patterns in cerebellar memory, which can access them quickly; novel activities involve the slower but more flexible cerebrum, which often results in "overthinking" a shot or a move. Likewise, I think that long familiarity with a discipline results in rapid pattern matching in experienced workers,allowing them to quickly model new situations in the context of existing ones, but this also leads to the use of known-successful solutions, rather than exploring new spaces. (Org theory posits a similar effect in homogenous groups, which is one reason why the inclusion of women and minorities on corporate boards seems to improve governance and performance.)
Really, there are roles for both kinds of devs, and I think we're shorting ourselves by not working hard to integrate inexperienced but flexible developers with experienced and combat-hardened ones.
Look at movie industries. OMG. Martin Scorsese is over 70 years old.
Seriously? The movie biz is known for being brutally ageist. And it's not just a problem for actors, but even for writers and other behind-the-camera folks, who find work drying up as they grow older, e.g.:
http://www.masterjules.net/ageism.htm
http://www.psychologytoday.com/blog/hollywood-the-couch/2011...