Old Geek - <AUTHOR> https://www.tbray.org/ongoing/When/201x/2016/09/14/Old-Geek <comment><USER3> I just turned 40, and I do feel fortunate that I look young. But then I was also recently hired, by a 70 year old who is still himself programming for hire, to make some quirky database code work .

Perhaps this is an unpopular sentiment, but after 33 years of programming I have been observing more and more how many elements of a supposedly hyper- rational field function like religious beliefs or memes. I suspect that one reason people prefer working with young programmers is -- sometimes -- that they don't want push back on the beliefs that are underpinning their enterprises. To take a few simple examples, people with a lot at stake don't necessarily want to be told that something will probably take 3x longer than they think. Or that there are some philosophical issues at play in their strategy.

A truth that can hurt: people generally only consult nerds when they believe they have no other choice. To many people this means they only want programmers for "code monkey" style coding, i.e. I think there may actually be preference for inexperience in the wider world.

I'm sure age will take it's toll eventually, but in my case there is no doubt in my mind I write better code now than, say, 10 or 15 years ago.

Fortunately, there's a solution: freelance and work for people without these biases. It seems like there is no shortage once you leave groupthink environments behind.

<comment><USER4> I'd echo this, and while this may sound curmudgeonly, too many people either want easy solutions or have shiny new object syndrome. These traits often flourish in the software industry because newly available "solutions" present themselves faster than any one person can even learn their names.

To use an analogy, I refuse to believe the roads would be safer with a bunch of drivers all learning while they go.

<comment><USER5> Yet now we're breathlessly anticipating the new age of self-driving vehicles that will be learning as they go....

<comment><USER6> Everyone always learns as they go. Clearly, the GP meant "that start out without knowing to drive".

<comment><USER7> But there is a difference between learning as you go from a point experience. For someone with no experience, you make a lot of silly errors, or at least errors that more experienced people know not to make.

Its not like many of the new languages are THAT much different. 90% of work is still done in C, C++ and Java

</comment></comment></comment></comment></comment><comment><USER8> There seem to be more articles about age popping up on HN lately. I find this both weird and disconcerting. As I wrote in a comment in another thread:

> This is idiotic. People over 40 trade one set of skills for another (source: > I'm over 40). You lose short-term memory, can't juggle too many things > simultaneously, and aren't always up to date on every latest fad. But what > you gain is fantastically valuable: intuition, abstract thinking, systems > thinking, ability to detect patterns in large systems, ability to notice > that certain problems have been solved in a different field, and lots more. > As I grow older, I notice these changes, and while I do regret not being > able to remember IP addresses after switching to a different window (get a > larger monitor, or just copy&paste), I am very happy with the overall shift.

To put this in other words, as I age, I found that yes, I do have less ability to do brilliant-late-night-ninja-coding stunts, but overall what I gained translates into Getting Things Done. Which is why I find this ageism trend mindboggling: is there a CEO out there that doesn't want his company to Get Things Done?

To give a tangible practical example: I just wrote and launched PartsBox.io ([https://partsbox.io/](https://partsbox.io/)) as a side project. I could only do it in the time constraints involved because I knew which shortcuts I could take and which code I should not write. My 25-year old self would likely have written brilliant ninja code (that no one would ever see), but would never have gotten the project shipped.

<comment><USER9> I am under 30 but ageism scares the shit out of me.

I love to build things and I am not keen on sliding into a management position. But this becomes the easiest career path once your soft skills start to increase to the detriment of raw coding skills.

On the other hand I've seen enough engineers with decades of experience who said no to going into management and who are now basically irrelevant.

Both these outcomes are scary but they seem to be the defaults for someone who goes with the flow.

<comment><USER10> I just turned 50, and I still code and still love it. Like other people here have pointed out, keeping your skills up-to-date is key, and making a conscious decision to stay coding instead drifting into management.

A good way to stay relevant is to change jobs now and then (maybe every 5 years or so), and also using your own time to learn new things.

<comment><USER9> Yes, definitely possible, kudos for pulling it off! But it requires careful long-term proactive decisions and actions. Which is not what most humans are particularly good at. That's why I used the word "scary".

When you are a junior engineer you just crank out code and the level and employability of your skills automagically increase. But after some time this free lunch quietly stops. You suddenly have to manage your career.

<comment><USER11> Right. People should be less concerned with competing with people in their 20s and more concerned with how they are going to keep up with the other people their age who instead of doing fun, hacker, startup stuff and chasing money spent their time being the "stupidest" person in the room and learning the (an) industry.

</comment></comment></comment></comment></comment><comment><USER12> I am 54, a former CTO, CIO and current CTO and love to code. I believe "now" is the most exciting time in tech ever (and I started on mainframes, went through client server, n tier, web and whatever we are now). I believe open source is truly changing the world in a massively positive way. I'm sure someone younger could do my job, but I think "perspective" matters. I love learning and just moved a bunch of production workload to Kubernetes. Not sure exactly why this touched me the way it did but I dread the day I hang up my spurs. The industry just gets more and more interesting to me.

<comment><USER13> I will confess to being cynical but they need more engineers than C*Os.

My time is almost over.

<comment><USER14> Ah, but do they need more junior developers than senior developers? Senior/lead devs who can take a project and execute the whole thing, including leading team members, are very valuable.

<comment><USER13> Why hire someone with 10+ years of experience over all when we can hire someone with 3-5 years of experience in our tech stack?

Or so it's been explained to me.

</comment></comment></comment></comment><comment><USER15> I no longer think of myself as having an age.

I moved the decimal point one place to the left and now I have a version:

I am version 4.7

Apparently by the time I'm version 6.5 my codebase will be a little bloated.

\---

On another note, this age subject has come up a few times:

Programmers: Before you turn 40, get a plan B (2009) [https://news.ycombinator.com/item?id=9361580](https://news.ycombinator.com/item?id=9361580)

Silicon Valley's Dark Secret: It's All About Age (2010) [https://news.ycombinator.com/item?id=9710936](https://news.ycombinator.com/item?id=9710936)

I also wish I could copy paste this comment I already wrote: [https://news.ycombinator.com/item?id=9362508](https://news.ycombinator.com/item?id=9362508)

<comment><USER16> Are your even years stable, and your odd years full of surprises?

<comment><USER17> Around Version 3.0, many people produce a lightweight side project. By Version 5.0 they're about ready to spin it off as its own product.

<comment><USER16> "Don't trust any version over 3.0." -Jack Weinberg

</comment></comment></comment></comment><comment><USER18> I am not really "old" (ie over 40), but I have interviewed older candidates for some technical roles at very different companies, and I've found there are either old people who believe they know better at everything whose skills have not improved much since their early 30s, and then old people who stay up to date on technologies, trends, and realize that programming is a field you never really ever master with time or age; it shifts too much to be able to ever fully grasp it.

The "old" people who are curmudgeonly and stuck on older technical stacks are the ones who don't fare well. The ones who are current in skillset never seem to have an issue and generally impress the people they meet, as they bring both experience and current technical knowledge to the table. Anecdotally, I would say 8/10 of the 40+ crowd I have interviewed fall into the "old technical stack" / "i know better" crowd, and I think these are the ones that poison the well for the good guys.

I am beginning to believe that the trick to software engineering as a career vs. management is to stay current above all else. If you let yourself become obsolesced, you will be thrown aside like an old PowerBook. That's the reality of the technology industry and has little to do with age.

<comment><USER19> Yeah, for the vast majority of engineering programming is like selling shoes. You just need about 4 years experience and you pretty much know it all. Certain skill sets are great for older folks though. Security, for example. You want to work with someone who has a long track record of being trustworthy.

That being said, there is something compelling about an older engineer who constantly re-invents himself with the latest technology.

<comment><USER18> > Yeah, for the vast majority of engineering programming is like selling > shoes. You just need about 4 years experience and you pretty much know it > all.

That's the point I'm trying not to make. Are you building a startup that's effectively a CRUD app? If so, sure, that's pretty much all you need and is why coder schools have become so prevalent - they get you to a practicing point that covers the bases of most small websites and very, very basic startups.

Age and experience brings with it something vital: the ability to build long term pattern recognition of technology business cycles, the "all is old is new again", the ways that novel technologies may fall like their predecessors. This is not something you learn in a CS program or even a few years out of college. It's something you only learn by playing with tens of languages and mastering six or seven over decades, by constantly learning, by being part of those business cycles. This skillset is often discredited and is enormously valuable, but I believe it requires a tireless passion for novelty and modern technique to become a multiplier on skill.

<comment><USER20> Experience is more important if you are actually developing algorithms rather that making another app. It takes time and practice of genius to get a handle on required mathematics for AI, adaptive systems or advanced data structures. It is no accident that mathematicians are divided into super young genius and old bearded wizard camps.

</comment></comment></comment></comment><comment><USER19> I am afraid the story is total and complete crap. The reality is that Amazon is Logan's run. Yes, PE engineers are old and yes they are a tiny percentage of the total army. What does that tell you? It tells you that they keep a tiny number around to make engineers believe there is a path. The reality is though that path is only for a very very select few..

<\- Ex Amazon engineer.

<comment><USER19> Wow, I'm so amused at the downvotes. It's like a completely and absolute denial of reality. If you imagine for a moment that PE role is a realistic path for a typical engineer at amazon you are in total fantasy world.

<comment><USER21> Downvotes are for your "complete crap" remark, which is unnecessarily rude.

<comment><USER19> Was it? The reality is that you have someone who has benefited from having either a hugely beneficial nurtured environment or perfect DNA trying to espouse that this is actually realistic for all engineers at amazon. It isn't! Trust me! Amazon grinds you as much as possible. If you imagine for a moment that you are a typical engineer at amazon and your ass will age like fine wine you are being totally and utterly manipulated.

That being said, there are ways to succeed as you age. Working at amazon is not one of them. Specializing in engineering areas that require a track record of deliverables is. It's Bayesian probability. That is what your advantage is if you are old.

Being trustworthy helps in things like security. Young kids between the age of 16-25 are freakin random and they might be the next snowden for all a manager knows. Older people who have never done anything irresponsible in their life can benefit here.

Also, leveraging technologies in your resume that are once again fashionable. Devops in the cloud, neural networks in deep learning, etc.

Is any of this fair? Of course the F not. But neither is being discriminated against because you're old.

<comment><USER22> No one's disagreeing with your point. But when you open with unnecessary rude snarkiness, people will dismiss you before you even get to your point. Presentation is important.

</comment></comment></comment></comment></comment><comment><USER23> I hate to say it, but I am approaching 35 and already feel too "old" for my own good.

Many of my bosses have been 5+ years younger than me.

I am eyeballing jobs that are paying exactly what I got paid 8 years ago, just because they are local/family friendly.

I am not experienced enough with management or executive roles to take one.

I am too much of a generalist to get a senior role in a given field, except the one field I specialize in, which is fairly useless when it comes to paid jobs.

I'm not a competitive coder, but I can meet any reasonable deadline. Unfortunately, the trend is now to value the former much more than the latter because it is easier to measure in the interview process.

The majority of jobs out there (frankly) do not require much skill for functional results, so there is someone out there 10 years younger than me who can put in more time for less pay.

Additionally, there are people with 2 or 3 years of industry programming experience making over $250k. It sets a weird baseline that makes it impossible to scale up for more experienced coders.

The most elite people in the valley struck it rich fresh out of college. These are the people who dictate the flow of cash in the software world. What reason do they have to believe that an old software engineer is valuable, even as they themselves grow older?

I don't expect the world to be fair. But I feel like there has to be some sort of value in experience?

</comment><comment><USER24> I'm starting a new software consultancy that's hiring 40+ coders exclusively, at below market value, then leases them back to the companies that just got rid of them. The only difference is that I hide them away somewhere, call it "untapped talent" or something that doesn't give away the age and show up at meetings instead of them, with my 26 years and sneakers and a hoodie. Call it job market arbitrage.

But something doesn't add up here, does it?

<comment><USER25> if a 40+ developer (who ships product and gets things done rather than a "coder" as you refer to them), works for less than market rate, there is a reason, and usually not a good one. This is not something to base a company on. Most of us are working at well above market rates, not in Silicon Vally (there is serious software in the energy, medical, financial, etc... field being written elsewhere) and are not in the job market.

<comment><USER26> > if a 40+ developer (who ships product and gets things done rather than a > "coder" as you refer to them), works for less than market rate, there is a > reason, and usually not a good one.

I'm only 36, but my personal experience would bias me to assume it is because the companies that would pay market rate aren't willing to even talk to them. It's hella illegal, but I would not be surprised if a company basing their product on technologies that are only 3 - 4 years old is silently, perhaps even unconsciously, ignoring resumes from people with 15+ years of work experience, even if they have the experience in those recent technologies.

</comment></comment></comment><comment><USER27> Whenever this topic comes up, I see a rush to deny that ageism is a problem in the industry, or that it isn't ageism _alone_ but bad choices made by certain people, or...

It would bother me, but I know that ageism is one form of discrimination that eventually hits us all. Beware, young people. The rationalization you do today will be used against you in a couple of decades. And you'll know better then, but you're not listening to the gray-hairs today, and probably neither will the people refusing to hire you then.

Fortunately, some companies treat their gray-hairs better than others, and while you'd think startups were the best route of all, since no boss can refuse to hire you then, it turns out that ageism is pretty widespread, and it can be hard to get funding for a startup, and even hard to land customers if you're the public face of a startup.

Every year, we all get a bit closer to it happening to us.

<comment><USER28> It boggles my mind how many people seem to believe that sexism is the industry's fault but ageism is the victim's fault.

<comment><USER29> Who believes that? Maybe the people who believe that sexism is the industry's fault also believe ageism is the victim's fault?

<comment><USER28> Surely they are both the industry's fault?

</comment></comment></comment></comment><comment><USER30> I chuckled at:

> _If you help build something important and impactful, call it X, it 's easy > to slip into year after year of being the world's greatest expert on X, and > when X isn't important and impactful any more, you're in a bad place._

He, of course, was co-author of the XML spec.

<comment><USER31> Gosling, who he quotes at the top of the article, worked on NeWS, a primary competitor to X. And, I imagine he knows plenty of people who literally worked on X, since he worked at multiple major UNIX vendors during that period.

<comment><USER32> X is also Java in Gosling's case. ;-)

<comment><USER16> And X is also Emacs [1] and Andrew [2] in Gosling's case. ;-)

For Tim Bray, X is short for XML.

[1] [https://en.wikipedia.org/wiki/Gosling_Emacs](https://en.wikipedia.org/wiki/Gosling_Emacs)

[2] [https://www.cmu.edu/news/archive/2009/November/nov5_goslingr...](https://www.cmu.edu/news/archive/2009/November/nov5_goslingreflectsonjava.shtml)

</comment></comment></comment></comment><comment><USER33> I don't like reading articles like these. This article was the impetus I needed to create [https://oldgeekjobs.com/](https://oldgeekjobs.com/) just now.

I'm 37 and just recently phone interviewed for a job with two twenty- somethings. I felt I got discriminated against not so much because of my age, but because I just wasn't into the same things as them and wouldn't have been a good 'cultural fit'. My age played a factor in that respect.

If you're cool working with old hackers, post your jobs on there for free. I'll circle back around tomorrow and make it classier.

<comment><USER34> Looks like someone posted on it: [https://software-dev- group.org/2016/09/15/old-geek-jobs-figh...](https://software-dev- group.org/2016/09/15/old-geek-jobs-fighting-ageism-industry/)

I'm almost 30 and I'm starting to grow concerned about ageism.

<comment><USER33> That's cool - thank you

</comment></comment></comment><comment><USER35> That old meme again..

Some Stats from 2015 :-

Median Age / Profession

42.1 Computer systems analysts

44.7 Information security analysts

43.1 Computer programmers

39.7 Software developers, applications and systems software

35.9 Web developers

40.5 Computer support specialists

47.0 Database administrators

41.2 Network and computer systems administrators

41.6 Computer network architects

41.2 Computer occupations, all other

Source : [http://www.bls.gov/cps/demographics.htm](http://www.bls.gov/cps/demographics.htm)

<comment><USER25> Some people think Silicon Valley represents the entire United States, and that software development only happens in Silicon Valley, hence the myopic views and the memes.

</comment></comment><comment><USER36> Hmm, a depressing reminder of my own predicament: I hitting that midlife midcareer crisis point...

I'm forty this year and still coding. I dabbled in mgmt in my early thirties and didn't enjoy it, so stuck at coding.

I am extremely up-to-date and well-versed in everything modern - like most of us here, its my consuming passion too - but I'm completely underwhelmed by the JS frameworks so I can seem a bit "not with it" perhaps?

I do a lot of architecture - I've been a chief architect for big subsystems on a small OS, even. Not that I seem to have any impact or sway on mgmt, who keep repeating the technical mistakes I keep pointing out anyway..

So here's the nub: if I moved on, I doubt I'd be replaced. Companies don't feel they _need_ people like me. And they can have someone young, cheap, without family and without work-life-balance and without strong opinions to point out technical flaws in plans etc. They'd all probably be relieved!

Leaving us "old geeks" unemployable in anywhere near the quantities soon available...

<comment><USER37> If you are up-to-date and coding is your passion, then you should have no trouble to get a job, regardless of your age. Actually, for many positions your experience is an advantage. Some teams do need people with solid opinions to keep their younger colleagues on the rails.

</comment></comment><comment><USER38> _" There are all these little communities at Google: Gayglers, Jewglers, and my favorite, the Greyglers; that's the only T-shirt I took with me and still wear. The Greyglers are led by Vint Cerf, "_

I see a lot of these articles, which I like reading btw, about technicians, too old to do the work. [0] Let's turn this idea on it's head: What about _" Management, period"_. Management itself a big source of company inefficiency. [1]

What technology is being created to push down the cost of executive compensation in buiness?

[0] _" Just 120 of the Audi factory's best employees qualify to work on the prestigious R8 assembly line. More than half of R8 workers are over 40. It is said that the easiest way to spot them is to look for the gray hair. The factory calls them "silverliners.""_ ~ [http://natgeotv.com/ca/megafactories/audi- facts](http://natgeotv.com/ca/megafactories/audi-facts)

[1] [http://www.nytimes.com/topic/subject/executive- pay](http://www.nytimes.com/topic/subject/executive-pay)

<comment><USER39> > What technology is being created to push down the cost of executive > compensation in buiness?

I imagine this technology would be difficult to market and thus difficult to sustain, given that the prospective customers (i.e. decision-makers who control companies' funds) would have personal negative incentives against purchasing it.

This reminds me of some friends whose startup's product was software to make lawyers more time-efficient with (billable) administrative tasks. It turns out customers don't come banging down your door to buy a product that 'helps' them make less money.

<comment><USER38> _" given that the prospective customers (i.e. decision-makers who control companies' funds) would have personal negative incentives against purchasing it."_

That is something I would believe, push-back from existing people in companies. What about new companies selling products? (remember ways of making money in SW: internal services, contract/consulting and product)

</comment></comment></comment><comment><USER40> This did strike a chord. I'm 37. I've been programming since leaving university. I had a stint of about 6 years in the middle of my career where I stagnated. While it was fun (I did a lot of climbing, biking, caving etc.), it was hard getting out of that hole, and I'm glad to be out.

Anyway, I'm now travelling for a year (my partner made me quit my job ;) which has been lots of fun. I've caught up on a lot of books, playing with elixir, sharpening tools. But, I'm wondering what to do when I go back home, and finding it hard to decide. I already have an offer, and I'm not particularly worried about having work, but more about having the _right_ work. I'm not sure how many more options to change I'll have. Coupled to that, I'd like to work on projects which I feel are doing something useful for society.

Options:

1\. Work remotely for a company I've worked for before. Should be decent cash. Codebase is horrible legacy stuff (but improving). Just me and another (more junior) developer. 2\. Work for a pretty professional company in town. Excellent excellent team, I'd learn heaps, but it'd be just straight business work (not ticking the "useful to society" box.

I have a couple of options in both of those categories (I think ;). I've been stung before being a solo developer and I'm not that excited about being the most senior on the team. I'm an OK developer, but I know there are lots smarter, and I like learning from others.

So decisions decisions. It feels to me the older I get the fewer of these types of decisions I want to mess up.

<comment><USER41> go with the job that offers a better working environment and/or work life balance.

the technical work itself is what you make of it, even learning by replacing legacy stuff with newer better stuff is always a possibility. choose to use technology that is interesting to you. spend personal time catching up on it if it's impossible to do 'on the clock'. "garbage in, garbage out", basically.

however, the conditions in which you do the work in are not under your control and carry the heaviest personal cost.

<comment><USER40> Thanks for the reply.

This is the thing, the remote environment would be entirely under my control and I think the work-life balance would be fine.

The non-remote job would be more challenging work, probably a bit more corporate & rigid, but have a killer team to work with and learn from.

I'm with you on the "learning by replacingn legacy stuff with newer stuff" ... that train is already in motion and there's certainly a lot you can learn by doing that properly.

Thanks for the thoughts, I'll add them to the melting pot.

</comment></comment></comment><comment><USER42> There's a contest to find a hidden treasure in a forest. All that is given is a short description of the place where the treasure lies, and a couple of hints on how to get there.

A young kid, in tip-top shape stands next to an overweight graybeard. He snickers at the older fellow, confident that he will find the treasure first. The whistle blows, and off they go running. Or rather, the younger fellow goes running. The older guy stretches a bit more, buys a bottle of water, and huddles off into the woods. He walks at a fair pace, not really breaking a sweat, as he knows it's going to get hot in an hour, as the sun hits the middle of the sky. He's been in these woods plenty of times in the past thirty years.

The young kids runs here, runs there, looking for anything that may resemble the clues he was given. He is fast. He has the latest gear and newest gadget. However, he's not really sure where to begin.

The old guy has a hunch where to go. He knows where the blueberry bushes grow that were mentioned in the clue. He knows where the sunny clearing with the three rocks is. It takes him a bit of time, but he is going in the right direction. He rests in the shade for a bit and hydrates when the sun is at its harshest.

The young fellow is dehydrated. He's run over 12 km, he thinks he saw some of the mentioned clues, but he's not sure. He needs to get back to town to get a drink of water.

The afternoon sets in. The young fellow is covering a lot of ground, but is not rally getting anywhere. The graybeard, meanwhile, has found the little pond and the hollow trunk that holds the little treasure chest. It takes him some time to walk back to the finish line.

When doing anything, there is the experience and velocity aspect. If you're running fast but don't know which way is right, you will make many mistakes. Your speed will allow you to recover quickly. If you're experienced, you will likely plan better and your slower progress will be in a more correct direction.

What is better? I wish we could all be spry 90-year-old veterans with the speed and stamina of 18-year-olds. For most of us, it does not work that way. Different projects require different skills. More established companies don't want to risk key project on inexperienced talent. Young startups don't really know what is going to work, so making lots of mistakes and recovering quickly may be an advantage. It's getting the right mix of people for the job that is the key.

<comment><USER43> Reminds me of the tortoise and the hare.

</comment></comment><comment><USER44> One option more people should consider: work for the government. There are strong legal and union protections against discrimination in many areas including age and most agencies are both desperately in need of good technical staff and have challenges and requirements which are more complicated than the average startup so your greater experience (both on the job and in life) is a selling point rather than a drawback.

[https://pages.18f.gov/joining-18f/](https://pages.18f.gov/joining-18f/) [https://www.usds.gov/join](https://www.usds.gov/join) [https://usajobs.gov](https://usajobs.gov)

<comment><USER43> Do they eliminate based on degree? I had this experience recently when applying to space and defense work.

<comment><USER45> > Do they eliminate based on degree?

Public sector work sometimes does, but lots of times has "or equivalent experience", and much more often than private sector work has clear and objective definitions of what is the "equivalent" alternative for particular purposes.

</comment></comment></comment><comment><USER46> Reading the article feels like I am talking to my old neighbour who likes tell me about his good old days, which is a good thing.

Anyway, that advice at the end of the article is BS. Being older does not stop you from coding, and it does not stop you from being an engineer. Engineering is not age dependent, but practicing it as a job may be.

<comment><USER47> Well, the point is if you still want to be able to get bills paid. And if you are not inventor of XML, or inventor of Java, you have to keep your eyes open.

<comment><USER48> Seriously. Gosling says "almost every old friend of mine is screwed", and it should be a safe assumption that he bonded with equally smart and talented engineers at places such as Sun Microsystems. It's unreal.

</comment></comment></comment><comment><USER49> Experience used to be valuable.

These days, re-inventing the wheel and blogging (writing books, speaking at events) about how you solved 'your' problems, are the new way.

There are many very intelligent younger people (as there have always been), but most of them, brought up on the shoulders of giant, are no longer interested in what those giants did and think they can fix the world on their own.

 _shrug_

</comment><comment><USER50> Let's put our money where our mouth is. I believe it is legal in the US to hire only people over 40. GeezerSoft - "because old age and treachery will always beat youth and exuberance"

</comment><comment><USER51> I just turned 40 and just got hired. I think the big difference between now and my last hiring in the oughts is that I was able to take a much more active role in my own career-path decisions (this one is interesting, that one used the word "rock star" so I won't bother, etc.). Part of that is because I'm now married and somewhat more financially secure, but, hey: that in itself is part of being older.

Now, I'm not a coder, except to the extent that every sysadmin is, and my field's definition of "output" is different (and for that matter ops in general is grayer than dev). But just personally I feel a confidence in my skills and experience that I didn't have even a decade ago at 30. And also I seem to have a longer attention span than I used to (9am HN commenting notwithstanding). I have a much better sense of how long an implementation will take, what its blockers might be, etc.

IOW I'm liking work at 40, at least personally.

<comment><USER52> Good to see another sysadmin input on this thread. Any bits that you would advise us younger (not that much, 30 yrs old) sysadmins about what to expect from the future?

<comment><USER51> So my biggest bit of advice is to get out of the tech sector as much as possible. One of the great things about ops is that there literally is not an industry that doesn't employ us. I've worked for non-profits, education, farms (you'd be amazed some of the data needs agribusiness has), and now aerospace. I've even gigged for food service (a local brewery paid me in beer...)

The advantage of this is that gets you out of some of the myopia that the tech sector has a tendency to instill, as well as broadening your geographical opportunities beyond the few tech hot spots. It also teaches you the three most important words a sysadmin has to learn to say: "I don't know". A sysadmin who can't say that immediately when it's true is going to have problems (after all ops is about 85% reading documentation), and figuring out how to get data from a barn to a datacenter will teach you to say it quickly.

Another piece of advice: if you haven't already, work in a datacenter, at least once, for at least a year, before you quit in disgust (everybody does). No datacenter sysadmin is happy, but it's a huge resume buff and it teaches you a lot.

<comment><USER53> > _No datacenter sysadmin is happy, but it 's a huge resume buff and it > teaches you a lot._

Why is that? What kind of valuable experiences are you thinking of?

</comment></comment></comment></comment><comment><USER54> Robert C. Martin sometimes shares an observation in his talks - it's not that the industry is trying to avoid old programmers, it's just that they are orders of magnitude rarer than the young ones due to the exponential dev population growth.

<comment><USER55> For that to be a complete explanation, you need to ignore or flat out disbelieve everyone who talks about having a harder time getting a job once they seem old.

</comment></comment><comment><USER56> > _I'm one. We're not exactly common on the ground; my profession, > apparently not content with having excluded a whole gender, is > mostly doing without the services of a couple of generations._

The bulk of the problem is that the software field has been growing exponentially for a long time. If you double in size in 2 years, and the bulk of the new guys are actually new to the workforce (as seems to be the norm), then instead of a nice even distribution of ages, you'll end up with nearly half of your workforce less than 2 years out of school.

This isn't really a solvable problem, short of waiting for the size of the software industry to level out, and then waiting for the younguns to grow up.

I'm not saying that there's no discrimination -- I have no data -- but it's likely to be less rampant than this makes out.

</comment><comment><USER57> _40-plus women are basically not employable in the technology sector._

If this isn't prejudice, I don't know what is. It's not, "40-plus women are employable if they are competent." It's that being a 40-plus woman is enough of a signal, people feel justified enough to "err on the side of false negative." Really, how many 40-plus women have most 20-somethings actually encountered as coders in the workplace? How many 40-plus women have most 20-somethings actually encountered as managers in the workplace? I suspect this prejudice comes from outside the workplace.

<comment><USER58> Exactly. People are not avoiding hiring 40+ year old women because of bad experiences with the work of 40 year old women, they're not hiring 40+ year old women because they don't like women, and they don't like people over 40.

<comment><USER57> I think it has to do with the intersection in the Venn diagram, not so much the big circles.

</comment></comment></comment><comment><USER43> Wow, if Bray and Gosling are feeling the pinch, what chance do the rest of us have?

Remember when graybeards were coveted for fellowship positions and authored the most important books? That was only fifteen years ago or so.

</comment><comment><USER59> Somehow I feel the key to staying relevant is not programming skills but choosing a practical domain where the software is implemented, and becoming an expert in it. Mine's CAD. We have ton of older people, and no age discrimination that I can tell.

I'm not sure if this works in other fields. Probably in lots of niches.

</comment><comment><USER60> One of the biggest issues I see with this mentality going forward is

a) lack of mentors for younger generations;

b) repeating the same mistakes our generation made.

a) is bad. b) is worse.

a) and b) combined lead to fads in which one burns tremendous amounts of time figuring out what it is and how it works, only to become obsolete by the time one masters it.

Old people like me pick their technology very carefully, because they've already burned exorbitant amounts of time mastering all kinds of technology fads during their lifetime, only to find that most of them don't fix, or make the problems even worse.

In plain English: we reject 99% of the fads out there because we can tell from experience what will work and what won't, and what the challenges and pathologies will be if we deploy on that particular fad. We don't reject fads a priori just because it is something new, but on the very simple metric:

could it be as bulletproof as possible, so I don't get a call at two o' clock in the morning?

Yes: continue research. Attempt breakage. Re-evaluate based on the results of breakage.

No: reject.

Where we, the old people failed: I take on apprentices. Most of my peers do not. That is why we end up with, for example,

[https://www.youtube.com/watch?v=Ms3EifxZopg](https://www.youtube.com/watch?v=Ms3EifxZopg)

...where a few lines of AWK code would do. And my peers are nowadays almost embarrassed to even mention such robust technology, instead of actively teaching and promoting it:

[http://dtrace.org/blogs/ahl/2016/08/02/i-love-go-i-hate- go/#...](http://dtrace.org/blogs/ahl/2016/08/02/i-love-go-i-hate- go/#comment-56586)

this is where we failed: to teach. To take on apprentices. This is why humanity keeps repeating the same mistakes over and over again, and nowhere does that appear to be so acute as in information technology.

We can do better. Take on apprentices, and have them commit to teaching others once they themselves become masters.

I don't mean casual mentorship; I mean a formal apprenticeship. Yes, that means you Bryan, and you Adam. And you Jerry. And you Max. And you Robert. You know who you are.

<comment><USER61> > I don't mean casual mentorship; I mean a formal apprenticeship.

This is an intriguing idea. But our culture doesn't offer much in the way of a framework for it. Will you expand upon what you mean by it, and how you've made it work for you and others?

<comment><USER60> I arrange my work spaces such that there is always a chair and ample desk room for anyone to bring their laptop over, plop themselves next to me, and start talking to me about the problem they want to solve.

I've also planned an apprenticeship program, where I had pupils formally assigned to me to mentor. I'd start them while they were still at the university doing their bachelors or masters. Usually they are new to UNIX, so the first thing I have them do is read the entire manual page for tcsh and zsh. Then move on to teaching them how to shell script, then how to program in AWK. Once they're past that, I move on to teaching them C.

For shell programming, I tutor them one on one, covering looping, input, syntax, interface design with getopts). I teach them why having ".sh", ".pl", ".py" or any other extension on an executable is a bad idea on UNIX, and there I cover what it actually means for a file to be executable on UNIX. I teach them about the runtime linker. I teach them about compiling and linking, about how functions map to symbols in an ELF executable. I teach them about ELF. About process spawning, context switching, high interrupt counts, 32- versus 64-bit code, instruction encoding. About what being a zombie process actually means, how they become such, how they get adopted by init(1M).

Eventually they hit deeper and deeper problems, so I inevitably end up teaching debugging and OS programming.

For teaching them how to program in AWK, I have them go through all the chapters and all the exercises in the Gray AWK book by Aho, Weinberger, and Kernighan. Then I help them with the actual real world problems they are attempting to solve with AWK, by showing them how to do it and explaining how it works. This is usually the time when I cover all the formal algorithms they're supposed to be learning at the university but aren't: stacks, queues, linked lists, doubly linked lists, sorting, pointers and pointer arithmetic, topological sorting.

For teaching them C, I have them go through the ANSI C programming language book, 2nd edition, and then cover anything that they don't understand with examples. Then I have them follow that up with the Advanced C programming by Example book. Then I cover dbx(1), gdb(1), and mdb(1) with them (what I know about mdb(1) anyway, and I touch upon kdb(1)). Throughout all of this, I cover cpp(1), make(1S), gmake(1), and m4, as well as lex(1) and yacc(1).

If I am forced by circumstance to teach them on GNU/Linux, I constantly and consistently pound it into my students' heads never to use GNU constructs or GNU specific features; by the time I'm done, they are able to write clean, portable programs in shell which work on any UNIX-like platform _without any modification_ , and ditto for C programs. I purposely teach them to stay the hell away from bash(1), and use either the original Bourne or Korn shells to program.

If they are apprenticed to me for a long enough time, I will also cover complete UNIX system, network, and security administration (up to and including locking down the system and configuring the firewall and IPsec); by the time I cover the material, any of my students should be able to take on and pass a Solaris system administration exams and get certified. And with that knowledge and some shallow preparation, they can then easily ace the redhat Enterprise Linux certification exams.

Next, I cover SQL and database administration. Usually the places I work / consult at have Oracle, so I teach them how to administer an Oracle database, show them where the documentation can be found, and generally prepare them to take the Oracle database administration exam. If we have it, I will also cover PostgreSQL, and I cover SQLite. Finally, I show them all the bugs and all the issues in MySQL with a warning to stay the hell away from it and never use it for projects. By the time I'm done with them, they are comfortable taking on a database administrator's job or programming applications in PL/SQL inside of the Oracle database. And where there is Oracle, sooner or later, there is Automatic Storage Manager (ASM), so covering that inevitably leads to covering storage area network administration on the OS side, which ties into their UNIX administration I taught them earlier.

By the time I'm done with them, they are able to comfortably program applications in shell, AWK, or C, in addition to being able to administer UNIX systems and relational databases.

From that point on, they have enough knowledge to master pretty much anything in computer science.

</comment></comment></comment><comment><USER62> from [http://www.bloomberg.com/news/articles/2016-09-08/silicon- va...](http://www.bloomberg.com/news/articles/2016-09-08/silicon-valley-s-job- hungry-say-we-re-not-to-old-for-this)

"Younger people are just smarter." - <USER2>

not wiser :D

My view is you need to be smart for the short-term solution / problem & unencumbered by obsolete boundaries / limit.

You need to be wise for the long-term stuff since it's human nature to repeat the same mistakes & not learning from it

p/s: I'm young

<comment><USER38> _" "Younger people are just smarter." - Mark /n not wiser :D"_

When I read statements like that I think, 'optimised' for the given problem(s) at hand. Problems change over time.

<comment><USER62> and yet they're actually stay the same

[https://news.ycombinator.com/item?id=12503764](https://news.ycombinator.com/item?id=12503764)

> the ability to build long term pattern recognition of technology business > cycles, the "all is old is new again"

</comment></comment></comment><comment><USER63> The next presidential candidates in USA are 68 and 70 years old, while humble programmers are too old after 40 years of age.

<comment><USER64> And from what I hear, the presidency requires long hours, time spent away from one's family, and a relatively low salary - all things that older people supposedly can't handle.

</comment></comment><comment><USER65> I wonder if I'll be the oldest one in this thread? I'm 64, turning 65 in January. Been programming since 1968.

I don't really like the term "coding", because when I got started, a coder was pretty close to the bottom rung. You had Systems Analysts who wrote specifications, Programmers who turned those specs into flowcharts, Coders who translated the flowcharts into actual code on coding forms [1], Keypunch Operators who punched that code onto punch cards, and finally the true high priests, the Computer Operators who ran your batch jobs and gave you back the printouts.

At least that's what they told us the serious enterprise software companies did. In truth, we were a bunch of hackers who punched our own programs on Teletype machines.

Later I got into writing DOS applications and TSRs and custom BIOSes, and then Windows programming starting with version 1.0. Some application programming, some language design, and some systems hacking like figuring out how to hook into the Windows font rendering before they had scalable fonts, so I could render Adobe's Type 1 fonts behind Windows' back. Worked on Visual Basic and created the VBX interface.

10-15 years later, I switched to web app development and had a pretty good run with that. Helped develop jQuery and taught a lot of people how to use it, got into GIS and mapmaking, did a bunch of election results maps for Google.

Then a funny thing happened: I got into VR, and it turned out all my Windows experience was relevant again. I was talking with a VR startup today and the CEO said "I thought you were just a VR developer - but you've done all this Windows systems hacking too? Maybe you can help us!" (They are trying to do some tricky DirectX system integration.) And the VR work also gave me a chance to get up to speed on Android and iOS development.

They say to leave everything more than 10 years ago off your resume so people won't realize how old you are. But if I did that, this VR company wouldn't have noticed my Windows experience from back in the day. And if you meet me you'll figure out my age soon enough!

At this point I've programmed in about 40 languages and a bunch of different platforms. If you ask me what my greatest strength is, maybe it's that I'm comfortable jumping around all sorts of languages and OSes, and I can pretty much always figure out a way to hook them together.

But I envy people who have become world-class experts in one important thing. One friend is a data scientist who does everything in Python. Another is an iOS expert who knows everything there is to know about Objective-C and never wants to use another language.

So maybe jumping around so much is my great weakness too. When I talk with companies, they are often looking for someone who is the best at one particular thing. It may be data science, Android or iOS development, web front end, or whatever, but they want that one specialty. They may talk about "full stack" developers, but it tends to be a pretty specific "full" stack.

What is the most productive role for someone like me who has worked on so many different kinds of systems that I've lost count?

[1] To get a taste of the old days, search for [https://www.google.com/search?q=fortran+coding+form](https://www.google.com/search?q=fortran+coding+form) and you'll find some FORTRAN coding forms like this one: [http://org.coloradomesa.edu/~lpayne/fall%202014/CS1/coding%2...](http://org.coloradomesa.edu/~lpayne/fall%202014/CS1/coding%20plan.pdf) \- print it on some 8.5x14 paper, sharpen your pencil, and start coding!

<comment><USER66> I hope your story isn't or rather doesn't become anecdotal and in the future becomes the norm for those in the system field.

This thread has been mostly pessimistic, perhaps there is hope yet?

<comment><USER65> Thanks, you are very kind. But if you read between the lines, you may note that I'm not quite as happy with my story as I'd like to be. There were so many opportunities I've had that I didn't capitalize on.

jQuery was one. Another was Visual Basic, the VBX, and being known at the time as a Famous Windows Programmer. Before that was my infamous Steve Jobs story:

[https://news.ycombinator.com/item?id=7451018](https://news.ycombinator.com/item?id=7451018)

Maybe this is one big advantage of youth: you can make mistakes like this and still have many years to correct them. At my age, well, I still do have plenty of good years ahead of me, but I certainly don't have as much room to "pivot" as I used to.

</comment></comment></comment><comment><USER67> > But these days usually doesn't bother reaching out; 40-plus women are > basically not employable in the technology sector.

So what to do if you're in that case? aren't their companies out there that hire people for their skills?

<comment><USER68> I'm a fifty-year-old developer, and a woman. Apparently, I was hired by my current company a year ago to be a crash test dummy/scapegoat, rather than an agent of righteous refactoring to a dreadful legacy codebase mostly written by "recent grads."

If your management is moving towards stack ranking, you'll find a couple of us around, because we're like the expendables on _Star Trek_: we're easily discarded.

</comment></comment><comment><USER69> Weird, I just realized that I'm, with my 38 years of age are the oldest coder at my company, never thought of that. But I was over 30 when I started at the university doing computer science, so I still want to code a bit first.

<comment><USER70> I'm also 38, and probably at the high end of the majority of the programmers at my workplace, but we have a handful of much older programmers who will probably be retiring over the next 5-10 years, and not many in between (ages in the mid 40s to early 50s seem pretty rare among the coders here). In our case, a large percentage of the coders in the 50+ ages are very much specialists supporting software and systems that are being phased out in part because it is becoming more difficult to support those environments every year.

It is difficult to find career paths which continue to make it worthwhile and still continue coding, but it's also difficult to find people who want to continue coding and can keep up with the progress of technology. Further, it's difficult to evaluate whether someone has the right combination of skills, desire, and adaptability in the hiring process. Unfortunately, most people seem more likely to associate 2 out of 3 of those traits with youth, and those also happen to be the hardest traits to see on a resume. For example, if someone has worked on a lot of projects in a lot of different software environments with different programming languages, it can be difficult to determine whether this means they can adapt well to change, or they can't work well with a team or grasp the necessary concepts for a given platform or language.

</comment></comment><comment><USER7> As an over 50 developer, I find for me personally its better to start up a company, or join a small company as CTO. That way your useful experience is maximized from both a leadership and technical perspective.

</comment><comment><USER71> You get to know the principles behind the code pretty well after 2 decades at it. In Los Angeles we just don't seem to have the same level of overt ageism. I've been coding since 1995 and haven't had to even dye my hair much less go for plastic surgery. If you're working your mind as hard as we do it keeps you sharp. Maybe other people your age couldn't learn this but your mind is much sharper than average and stays sharp thanks to daily mental workouts of solving hard engineering problems.

</comment><comment><USER72> I can't help but think of this video: [https://www.youtube.com/watch?v=Sz0o9clVQu8](https://www.youtube.com/watch?v=Sz0o9clVQu8)

It's actually pretty true to my experience. I'd rather work with someone who's confident and self-assured, rather than emotionally needy. I'd rather work with someone who's experienced. I'd rather work with someone who's professional.

In short, I think I'd rather work with Tim …

</comment><comment><USER73> It is not ageism, it is supply and demand, as simple as that.

How many people had access to computers 25 - 30 years ago? Very few, like me, and we were privileged. Getting time to learn with a computer was expensive like getting knowledge about programming them. For example computer APIs were on books you had to buy.

You also had to spend so much time fixing your computer's BSD(blue screen of death), making your (software)modem to work, or your Linux distribution to install when it was all from the command line.

Now everybody can buy a Raspi for 40 dollars and connect it to TV and it just works. Everybody can access top quality tutorials on youtube, all the APIs and other documentation is online.

People in Ghana, Kenya or India can share a Raspi computer and learn. Chinese could also start buying them. While the West access to tech privilege persist, the gap is narrower and narrower over time.

This means there are a hundred times more programmers than in the past, specially young people. If they can compete with you watching youtube channels, they will, obviously.

If you have certain age with only programming knowledge you are not privileged anymore. This is tough for some people to understand.

I remember when knowing HTML alone could earn you lots of bucks. Not happening anymore.

</comment><comment><USER74> I'm 48 and been a programmer since I was at school. I do contracting/consulting work so regularly change jobs, and I personally feel I have encountered surprisingly little ageism. I suppose a lot of it comes down to your attitude and enthusiasm.

I think the following generally helps:-

* Keep your CV/resume impressive. Nothing says "unemployable" like 10 years running an outdated DB system at a boring company;

* Change job or interview frequently;

* Don't try to adopt all the latest fads (impossible, anyway) - instead, play to your strengths and focus on your general area of expertise, and every few years learn a new relevant language or system in depth;

* Keep those old-school skills sharp! You can always impress a 21-year-old hacker in a hoodie if your command line / regex / disassembly / wireshark (or tcpdump!) skills are better than his.

<comment><USER75> > _Keep your CV /resume impressive_

What does that even mean?

> _Change job or interview frequently_

It's hard for me to fathom that people see this as a positive. Red flag for me. But I guess I'm getting "old".

</comment></comment><comment><USER76> The other side of this discussion is the exploitation of young engineers. Companies know they can pay them less and work them more.

Just look at the video game industry. Relies on a steady stream of suckers who can be used up and spit out. Their love of games is taken advantage of.

Many older workers are better, not worse, than their younger counterparts. They are discriminated against because they can't be so easily fooled (e.g. thinking a beer fridge is an acceptable trade for lots of unpaid overtime)

Experience matters. It took me years to even realize that programming is only half of my job. Though I'm not yet an OG, I'm a better engineer than when I started.

</comment><comment><USER77> I'm 39 and I'm so scared, also being in Sicily so very far from the IT scene, that I'm investing my savings to buy some land here to do agriculture when I'll no longer be able to pay my bills with programming.

<comment><USER48> I remember having a conversation with my father, an engineer, a few years ago when I was in my early 30s. He was adamant that I start thinking about either going to technical management (which he had done) or switching fields.

My arrogant (or cueless, as you wish) self then smuggly told him "software is different. People don't care if you are a rolling hairball as long as you can write code".

He was right, of course.

I'm not sure with star programmers with hot properties such as yourself this will be an issue but then there is the pull quote from Gosling in the OP!

Today if a young engineer asks for my advice, I consistently tell them to either take the necessary steps to end up on the stakeholder side of tech, or to save like mad while the going is good to allow for the necessary career switch at mid 30s.

<comment><USER77> Totally agree! And it's better to make people aware of this in our industry so that they start planning ahead and even ask for an adequate compensation when doing this job... I think it will be a problem with me as well if I would like to continue as a programmer in my later years, but I'll probably switch to project management or something like that when I'll feel that it's the right moment, however this will likely mean at least to relocate to Milan (north Italy) or alike. Or... agricolture if my project will work.

<comment><USER48> > ask for an adequate compensation when doing this job

That appears to be one of the motivations for certain prominent voices in the industry dismissing the value of experience. To be fair, even in early 90s there were telltale ads for "senior engineer, 3 years of experience" :)) I used to laugh when I saw those back then but now the joke's on me.

> I'll probably switch to project management or something like that when I'll > feel that it's the right moment

None of my business but why not build a business around Redis and tend to your garden in the warmer climes. Milan is charming in a way but it[']s the coldest (in the psychological/emotional sense) Italian city I have ever visited.

</comment></comment></comment></comment><comment><USER78> Not sure if it's because of the startup culture or simply because there are actually no older candidates.

In my case, 36yo, in a startup, I'm the oldest in it. But I've been interviewing many people and I think we only got 1 candidate which was older than me (we didn't hire because it was not a good fit, with so much experience but without much experience in our tech stack, we thought it would mean paying a fair amount for someone to be basically learning from us, as we were looking for coders, not architects/principals/leads).

<comment><USER79> It's kind of ironic hearing you claim that there are no older candidates, then in the next paragraph you confirm having rejected candidates due to not knowing the particular tech stack your team uses.

Even if there were legitimate reasons for not hiring that person (sounds like he/she was not a good fit _for_ _the_ _position_ ), the way you frame it sounds like you do not understand/appreciate what a senior engineer brings to the table. You don't pay seasoned professionals to come and learn the latest fad (though for them, it will look like a perk), you pay them to double check your ideas and spot potential problems they have seen before.

If you are offering a junior position with junior-level salary, and the senior candidate is OK with that, what's not to like? There are of course risks about the new hire jumping ship when something better comes, and you may structure their pay to discourage early attrittion. But if you blame the senior guy for not being junior enough, that's exactly the ageist attitude we are discussing here.

<comment><USER78> > candidates due to not knowing the particular tech stack your team uses.

candidate, in singular: it was only one.

> you do not understand/appreciate what a senior engineer brings to the table. > You don't pay seasoned professionals to come and learn the latest fad

I completely agree, but this particular candidate had been using JavaScript for the past year and when we asked him why did he switch to JavaScript from the other tech stack he was using before, he answered something along the lines of "well, it's the latest fad".

So believe when I tell you, we rejected him exactly because of the opposite reasons you state.

</comment></comment></comment><comment><USER80> Whenever I read such articles, I am completely at a loss as to what it means to code. Do they mean churning out code, like a codemonkey, for something that some architect has designed? Do they mean getting their hands dirty by pitching in to write some code for something that they themselves have architected? Do they mean doing the whole gig, starting from vague idea to producing a usable software, all by themselves and thus having to write all the code themselves instead of hiring a young ninja?

</comment><comment><USER81> Seems to be less of a problem in the UK (though may well still be a problem) - I guess I will find out soon.</comment>


Why Native Apps Really Are Doomed: Native Apps Are Doomed Pt 2 - <AUTHOR> https://medium.com/javascript-scene/why-native-apps-really-are-doomed-native-apps-are-doomed-pt-2-e035b43170e9#.whqlr4tvj <comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=13002598](https://news.ycombinator.com/item?id=13002598)

</comment><comment><USER3> I've been the hybrid/web guy for a long time, but recently I realized native apps are not going anywhere. (I'm stil in the "I don't need your app" camp, but it doesn't change this realization).

The issue is, most of the "apps" do not need to be apps, they can well be web pages. Everyone thinks they need "an app" because it's hot this year. But for apps that make more sense being an app, native is much better solution.

For example, for apps that need to store data and work reliably offline, I'd much more trust a native app than any PWA despite of all the services workers and other stuff that it implements.

(Side rant: I hate governments spending public money on apps for two selected, closed ecosystems, instead of producing a good interoperable webapp).

From purely technical point of view, in my experience (writing Cordova app, and reading about NativeScript and other technologies) is that all of the "write once, use on 10 platforms" frameworks are typically more polished for iOS than for Android, or vice versa.

We've built two Cordova apps in the last time, one with Ionic, one earlier with proprietary framework. While they work okayish on Android, the UX on iOS is rather horrible due to a number of smallish issues that when added up, sum to a big difference.

Next, with Cordova et al. you can do easy things easily, but hard things are hard or impossible; you are always behind the native platform capabilities (which change very often and fast), which give a lot more power.

Edit: The point of cost of getting users into a native app is fair, I very very rarely download new apps. This only gets harder as app stores get bombarded with thousands of apps each week. But it doesn't mean native apps should be totally abandoned. They have their place in the ecosystem.

<comment><USER4> > The issue is, most of the "apps" do not need to be apps, they can well be > web pages. Everyone thinks they need "an app" because it's hot this year.

Why is "being a webpage" suddenly the default state of an application?

I'd rather turn this around and say:

"The issue is, most of the webpages do not need to be webpages, they can well be native apps. Everyone thinks they need 'a webpage' because it's hot this year."

</comment></comment><comment><USER5> Javascript Developer: SPA/PWAs are better!

Swift Developer: Native apps are better!

Reality: both will be around for a long time and both have their appropriate use cases. At some point they may converge but we are far from it.

Also, creating any app (web or native) and hoping to achieve widespread success is a gamble.

</comment><comment><USER6> Recording audio on mobile browsers in a cross-platform way still isn't solved yet (it's been years):

[https://www.quora.com/How-do-I-record-audio-using-the- iPhone...](https://www.quora.com/How-do-I-record-audio-using-the- iPhone-6-running-on-iOS-8-1-3-microphone-on-the-Chrome-or-Safari- browser/answer/Charles-Moyes?srid=3o7l)

Remember, due to Apple regulations, any browser on iOS (including the Chrome app) is actually just a thin shell around Safari. It HAS to be Safari, no custom browsers allowed.

This really stifles progress when it comes to the many "bleeding edge" web technologies that are required for web apps to truly replace native apps.

Unfortunately, browsers are still far behind in general.

</comment><comment><USER7> The straw man proposed in the "Why Native Apps are a Gamble" section equally applies to Web Apps. The 80% number for example probably isn't going to change just by making your App a WebApp.

Development is expensive whichever way you want to slice it. Write Once, Run Everywhere is equally expensive because you have to test everywhere as well so the economics aren't as straightforward as the article suggests. If it was Java would have won years ago.

A counter argument could also be made that a well curated ecosystem of 16% is cheaper to developer for than an ecosystem of 84% made up of a whole mix of different supported levels.

</comment><comment><USER8> I don't see how this conversation is really about apps vs. websites.

It's really about content and value -- and in a way, discoverability and marketing. Like the article says, most apps are never downloaded. It stands to reason that websites are nearly never visited. Those that are, are found through search results, advertisements, or out-of-band knowledge (e.g. friend recommendation)

Even the examples are not helpful: Alibaba is a market leader. Weather.com is a market leader. I've never heard of Housing.com, but they have one of the best, most valuable, most-obvious domain names in the world. Perhaps they increased conversations and reduced user friction, but these platforms could have only _lost_ business to those of their competitors who clear the bar of 'discovered', 'advertised', and get those user conversions in turn. Quoting their smaller competitors would be far more impactful of the article's point.

The fact is, the app boom is clearly over, top apps dominate user traffic, and it's even harder to become a breakout hit than it was in the past. But native apps still have their uses: seamless homescreen presence, sophisticated layouts (drinking game: drink every time someone brings up flexbox as a counterpoint), offline operation (using mature tech, not serviceworkers), integration into iOS preferences, integration into Android intents, OS-native permission control, etc. These advantages are not negligible over browser- based solutions.

</comment><comment><USER9> I don't think PWAs are quite ready on iOS yet.

"You may be thinking that PWAs are a non-starter until iOS starts to support the manifest standard and service workers, but I have news for you:

You can achieve PWA-like behavior with Apple's proprietary meta tags.

There is a service worker polyfill for Cordova that will allow you to build a hybrid app for iOS, so you can get the PWA benefits without sacrificing an app presence on iOS."

Cordova is a JavaScript/HTML based app framework:

[https://cordova.apache.org](https://cordova.apache.org)

So using Cordova means you have to submit an app and hence is not pwa right?

Can non native web apps on mobile get access to push notifications, the camera (low level like snap chat), the photo library, audio recording or touch the address book? As of today I don't think you can do these things without an app on iOS.

If you look at the top paid/free apps on iOS most of them are either multimedia heavy (Instagram, snapchat, Pinterest, etc) or games. Neither of these types of apps would work well with the current state of PWA.

That being said having a separate android/iOS team and shipping apps to two app stores is expensive and a total pain. I think that some major changes in the way apps get developed are on the horizon.

I think by looking at react/react native you can see where things are going. I.e business logic and API layer shared cross platform, cross functional teams that can work on 60-70% of your products surface with domain experts dealing with platform specific issues. That plus the ability to push over the air updates is going to change things quite a bit.

I feel this approach is valid even for large parts of nultidmedia heavy apps (sign up flows, pop up dialogs, etc) and could even be used in a hybrid approach with a pwa style App.

</comment><comment><USER10> While Elliott writes a lot of good posts, in my eyes his blog posts are a bit too much biased.

</comment><comment><USER11> While I totally agree way too many apps are just webpages, the problem is that a bunch can't be easily be webpages, even with all the HTML niceness.

The flaw in this argument I think is that does the author think you can build a great PWA for less than $100k either?

In my experience of doing heavy duty mobile web, it is horrendous to polish to a high standard. It was actually more expensive than doing native apps (before even Xamarin/RN) if there was any tricky parts in it.

</comment><comment><USER12> I'm surprised this ends up being as controversial as it is. Either the capabilities of web technologies that are here or coming (webasm) what can be done with a web page is increasing. How many native apps are even compiled natively? Webasm actually has the potential to be faster than many native apps at the same time.

<comment><USER13> > Webasm actually has the potential to be faster than many native apps at the > same time.

How do you figure?

<comment><USER14> This is the constant claim from the web community. You can easily find references that there is no reason javascript has to be slower than compiled code from long ago. They all boil down to the sufficiently smart compiler argument.

Of course that became well known to be ridiculous.

But rhino would change that. asm.js would change that ! V8 will change that ! Native client will change it ! P-nacl will change it !

Of course, for all of these you can find some skewed edge case where someone was able to make a benchmark say the javascript/web version was faster. . It never was faster in practice for any of these. Browsers, after 22 years of optimizations are still far slower than even pretty bad native apps ... And let's just not mention games (not to worry the latest javascript 3d abstraction will change that. Of course)

And now webasm will change it - I guess. Well, no, truth be told, I guess not !

<comment><USER13> As far as I can tell, pnacl came pretty darn close. It executes LLVM bitcode and supports hardware features like SIMD and threads. For some reason I'm not aware of[0], they made pnacl dependent on the pepper plugin api, which only chrome uses. That pretty much killed it dead on arrival. None of the other browser manufacturers were interested in implementing chrome's pepper api so they can run chrome plugins, especailly since the pepper api isn't open and isn't documented anywhere.

[0]: I'm sure there's a good reason for this decision, I just don't know what it is.

<comment><USER14> I would agree. PNacl is one of those technologies that failed because it died, not because it was bad. People felt it needed to be killed and it was killed, or abandoned.

There is criticism, such as that it only solved one part of the puzzle of getting real apps running on the web browser, but it's not like anything else came closer.</comment></comment></comment></comment></comment>