Ask HN: Am I the longest-serving programmer – 57 years and counting?

2634 points by genedangelo ↗ HN
In May of 1963, I started my first full-time job as a computer programmer for Mitchell Engineering Company, a supplier of steel buildings. At Mitchell, I developed programs in Fortran II on an IBM 1620 mostly to improve the efficiency of order processing and fulfillment. Since then, all my jobs for the past 57 years have involved computer programming. I am now a data scientist developing cloud-based big data fraud detection algorithms using machine learning and other advanced analytical technologies. Along the way, I earned a Master’s in Operations Research and a Master’s in Management Science, studied artificial intelligence for 3 years in a Ph.D. program for engineering, and just two years ago I received Graduate Certificates in Big Data Analytics from the schools of business and computer science at a local university (FAU). In addition, I currently hold the designation of Certified Analytics Professional (CAP). At 74, I still have no plans to retire or to stop programming.

555 comments

[ 1.9 ms ] story [ 445 ms ] thread
Congratulations! You're an inspiration!

Tell us, what is the secret to your longevity?

I guess not smoking, no drugs and regular exercise. I really enjoy what I do - the challenge of achieving an analytical objective with limited resources has always given me great satisfaction.
How much exercise, and have you always been physically active?

[I'm more than halfway to your experience but definitely missing this aspect.]

About 1 hour in the gym 4 times a week with a mixture of anaerobic and aerobic always setting goals and constraints on my heart rate (using a Polar monitor). At least that is what I was doing until about 2 years ago, when my personal life changed for a number of reasons. Now, I mainly concentrate on walking 3 or 4 miles a day.
Thanks, that seems like a sustainably attainable goal (and to adapt and not overdo it).
No, probably not the longest-serving, though maybe longest-serving who is on HN.

Also: 74 - 57 = 17 years of age when you started as a full time programmer. How did you pull that off in 1963?

I actually was only 16, but turned 17 right after I started. I had finished all the math and science courses in my high school in Mississippi and I had a lot of extra time in my senior year. As a junior, I scored the highest in the U.S. on an engineering aptitude test and got a write-up in the local paper. Mitchell Engineering was trying to get into computers but didn't know how to find people who could program. When they heard about me, they approached me with the idea of becoming a programmer. At the time, I had no idea what a programmer was, but they hired me and trained me on the job.
Wonderful to hear that, and congratulations to you for that accomplishment. I worry those type of opportunities are no more, or at least much rarer.
I always wonder what the next thing like programming is that isn’t mainstream yet. Maybe there is an opportunity in that. Quantum computing? But then they’d hire phds I guess.
As someone who runs a quantum computing software company, I can confirm your intuition. Almost everyone we hire to work on quantum computing directly has a PhD.
In Israel at least there are probably hundreds (out of a population of 8,000,000) of programmers working professionally below the age of 18. They don't get on-the-job training, though, it's just so easy to teach yourself at home or in high school.

When I was 17 I started a program connecting high tech firms to winners of a programming competition for high schoolers that is still going, 14 years later :-) But I was far from the first to do this here.

Keep on, however, and soon I'm sure you will be the longest serving.
I'm happy to see that you've kept up with new fields and changes in the industry. I've worked with several older programmers and they've usually been very set in their ways and shown little interest in developing new skills.
I know what you mean. Many of my contemporaries never got past the mainframes. I'll have to admit that it took me a little while to accept the PC to be more than any intelligent terminal. I was lucky in that I worked for Digital Equipment Corporation from 1976 to 1982 - they pioneered distributed computing.
And then over at Google it's mostly VIM and browsers, deploying on machines hardly anyone ever sees. I'm pretty sure they exist, but I have no hard evidence of that.

The PCs really aren't much more than intelligent terminals. You were right, and you should have held your ground and been eventually correct.

The first time I programed in mainframe, I suffered a lot. I am young. We young people at least myself is people programming from top to down, but you guys, old programmer programed from down to top. I mean from low level to high level of computer. Early days, people would have to learn hardware a lot to program. This is my impression.
This is pretty cool. Definitely worth documenting I think.
One reason I posted this is because I may attempt to gain recognition in the Guinness World Records. I know my career is longer than the person they now have listed as the "Longest career as a computer software developer" - Kaneyuki Yamaguchi in Japan
Ooh - definitely should go through with that. Also, I'm doing a pilot show interviewing some Tech moguls local to Atlanta. There's a diverse group I'm interviewing from wealthy entrepreneurs to notable employees of bell labs, to people who hold an insane amount of patents. I think you could definitely fit in there somewhere.
What’s your daily routine now and how has it evolved over the years?
For most of the past 25 years I have been working from home - which is a problem because you never leave your work. The main thing that has changed over recent years is that I now take a 1-hour nap around 2 or 3 PM every day, except when I have conference calls that prevent it. After the nap, I feel rejuvenated and productive. I'm sure this is partly related to old age, but I'm also dyslexic and I think my brain needs a rest from struggling with written communications.
Where do you work now? And also, I've heard that at Google for example, there is prejudice against older programmers? Have you experienced anything like that?
Yes. The term used is "not a good cultural fit".
google had a fair number of older programmers (like over 50) when I was there. they had a group for them, 'greygler', also gaygler (not positive of the spelling). google has a bunch of employee groups that are portmanteau's of something + google.
Phrases like that along with the policy of having new Googlers (Nooglers?) wear propeller hats really turns me off of the idea of working at Google. It sounds like joining a fraternity. Maybe a goofy one but still a frat.
In my experience people who don't work there tend to focus on the "weird" stuff like it's the entire culture. It's not like you get forced to wear the hat for a week.
I believe that (the odious portmanteau) “greygler” is defined as being over 40.
Oh, so I was one then. I didn't join the club :-)
I definitely experienced age discrimination in one company that will go nameless. The small company I'm working for now has been great - I love the culture. However, they were just bought by Thomson Reuters and this Monday I will officially be a TR employee. I understand their culture is similar, and I'm hoping it's true!
I think the age discrimination comes from the mostly younger staff, not so much the company. Works out the same, of course, when you’re told you aren’t a “good cultural fit.”
A company is its staff
Yes, but company policy and interview decisions don't necessarily match.
That quickly turned metaphysical. If company policy is neither enforced nor followed, is it really company policy? If so, "company policy" is just an abstract term that doesn't necessarily reflect the company in any way.

It really boils down to what I've already said. A company is its staff. What its staff does and accepts other staff doing is ultimately its policy. Anything else that they might have written down into a document that isn't enforced or followed is not company policy, but a way to compartmentalize responsibility and blame once its actual policies come under scrutiny

I didn't mean to get metaphysical. In my experience interviewing for software dev jobs, the interviews are usually conducted by the IT/software dev staff and the hiring manager, not the entire company staff. HR may or may not get involved, but usually they aren't making a hiring decision. The company may gladly hire a 50-something manager, or accountant, but the group of developers interviewing someone my age will have a bias against an older programmer, regardless of policy or whom they might agree to hire in some other role.

The company (and the law) have rules about discrimination and fairness, but when a group of 20-somethings interviews an older programmer those rules may not matter. Fixing age discrimination probably shouldn't focus on laws and company policies, no company has a policy condoning age discrimination that we need to fix. It's the software dev culture that equates age and experience with "not a good fit," for whatever reason. I have my own theories what those reasons amount to but regardless of why I think it happens, it clearly does.

Grace Hopper apparently retired from the navy when she was _80_. And then went into consulting. So you’ve a few years to go yet.
I hope to make 80 - not sure my health will hold up. I did see the article on Grace Hopper on Wikipedia. She began her computing career in 1944 and she died in 1992, so that's a maximum of only 48 years. On that measure, I have her beat by 9 years already.
Be a bit more optimistic! Cent'anni!
According to Wikipedia, Grace Hopper started her computing career in 1944 when she worked on the Harvard Mark 1, which would have put her at ~38 when she began. Assuming she worked until her death, that puts her career in computing at a (incredibly impressive) 47 years.
She was a mathematician before that, though; probably about as close as you could get at the time :)

But yeah, always vaguely thought she was younger starting.

Younger nothing, it's wild that I never stopped to consider that there was a (recent!) period where our whole professional field had to be invented out of thin air, scooping up willing academics as it went. Considering that ENIAC (along with the Von Neumann architecture) wasn't even a thing until 1945, to begin her career in 1944 is hardly late! :)

(Aside, I wonder if recruiters in 1944 were already asking for ten years of ENIAC experience?)

> our whole professional field had to be invented out of thin air

"We shall need a great number of mathematicians of ability; there will probably be a good deal of work of this kind to be done" - Alan Turing, 1945.

You might find this talk by Bob Martin interesting - https://www.youtube.com/watch?v=ecIWPzGEbFc - it's a history of programming that isn't the usual style, but instead about this growth into existance, increasing numbers of programmers, where they came from, and the effects that's had on the industry and on programming languages.

How much of that time was she a working programmer?

As an example, Larry Page may have been a programmer in the very early days of Google, but it's been more than 15 years since Larry has seriously written code for a living.

As opposed to Jeff Dean who is still hacking away at his keyboard.

It just occurred to me how interesting it will be for the new generation who start so much younger and longer life expectancy what they'll see in their long careers. Given how much has changed in your story, from Fortran to AlphaZero and GPT-2. How much will change in theirs? Will the singularity appear to be in sight? Will programmers disappear like telephone operators?
"longer life expectancy" is a very optimistic thing to say
Adjusting for surviving birth, life expectancy varies wildly in both directions (although even considering that, "longer" is definitely less of a promise now than it has been for the last several decades).
I don't know if it's particularly optimistic - if you're (accurately) saying current life expectancy numbers don't take catastrophic risks into account, neither did calculations of life expectancy back then. Unless you think there is a higher risk of catastrophic events now than there was during the cold war.
Let's say larger variance in life expectancy--we expect a longer tail of a new generation living longer.
given the numerous posts about age discrimination on hn, i'm delighted to hear your story and wish you many more years of happy programming. as a whipper-snapper 40-something developer, it gives me hope and motivation.
while not as old as OP, I personally know several programmers in their 50s and 60s and all said they had no problem finding work.

I think if you're a top-tier developer (which OP seems to be!) age discrimination may not be as much of a factor? If you're decent but not amazing (most of us honestly) you may find it easier to find work at 35 than at 55.

you're right, not all of us can be super star devs (i certainly am not) but we can apply their techniques, mainly stay healthy and never stop learning.
I'm 52 and am just starting to look around. Given that I primarily want world-wide remote (I live in Japan), it may be a tad difficult. However, I had no trouble at all attracting interest in my mid 40's when I went to London for a couple of years. It took me less than a month to land a job and I had a couple of options.

My biggest piece of advice to anyone who wants a long technical career is to keep learning new things. Don't rely on your day job to train you in what you need. Follow up on stuff that interests you and invest some of your "me" time on staying current in areas that interest you. I've seen a lot of people drop out of the industry because they were over specialised. I know APL experts, Cobol and DB2 experts, C++ with MFC experts, etc, etc. None of them are working as programmers any more. It's tempting to thing that Java enterprise and C# and Ruby on Rails and Python and whatever you think is the best paycheck will last forever. It won't and over time you will slowly become obsolete. A 40 something (or 50 something) with no relevant technology experience will be seen as less valuable than a 30 something because people will be imagining you are simply going through the motions. The fact that you aren't getting sucked into the new (and horrible) programming fads makes you even less attractive because the people hiring you have been pulled into those fads. So it's important to be able to speak the speak and walk the walk.

So what are the MFC experts doing nowadays?

Anyway that's precisely the problem - either get sucked into all the horrible fads or not finding a job. That's a pretty bad choice.

Learn just enough about the fads so you can hold a conversation about them, but don't invest heavily in every one of them. You don't need to tech hop every year - give things at least a couple years to shake out. This will let you skip a lot of the time wasting BS that comes with fad driven development.
This. This is how I treat customer fads as a consultant, so far to good effect. Consulting isn’t too different than interviewing for jobs, especially the part where you have to convince new customers that you know what you’re doing and are worth your rate.
This is great advice. The other thing about learning a little bit about all the new fads is that you can fairly quickly figure out bits where going a bit more deeply will help you out in general. For example, I would not recommend using React for every front end project (or even most ;-) ), but playing with React and understanding what it was trying to accomplish legitimately made me a better programmer.
Maybe I'm unusually fortunate that a lot of day jobs I've had at one point or another gave me an opportunity to learn new tech (that wasn't the one that got me hired there). In the past 5 years I've mostly been alternating between c# & javascript/typescript.

There would be new projects & not many people in the company experienced in the tech required (due to hiring staff that has experience in their bread & butter current projects) and it was often pretty easy to jump on those ships - it does require the confidence that you'll be able to ramp up quickly!

Also when a technology is new there is a shortage of people with experience using it & companies relax experience expectations when hiring.

The industry is backwards. Would you rather have a 25-year-old plumber, architect, photographer, chef, or a 50-year-old one?

Artists get better with age. Programming is an art. All tedious tasks get automated away. All that's left are design decisions. Making good design decisions is what people mean by "taste". Taste gets better with experience.

A young person may have more physical energy, but to paraphrase Steve Jobs, they don't have any taste. Their surplus physical energy could be a liability, as they'll just write more code that's hard to maintain. Of course there are exceptions. Don't discriminate by age in either direction. Ask for experience, and make your final judgment after examining their portfolio (just as you would an architect or photographer), looking for signs of good taste.

Further reading: "Taste for Makers", by Paul Graham, http://www.paulgraham.com/taste.html

I think current gigs want younger people not for their performance but their „price”. They work overtime without payment, are relatively cheap and you need alot of them. For every architect you have in the company there are like 20-30 developers of lower grade. So the demand for „design making” people is just not there.
The industry has been very biased; from 1940 there weren't many programmers, very quickly the number of programmers doubled, most had little experience. Through the 1970s there weren't many programmers with more than 5 years experience. As the number grew so fast, through the 1980s most programmers still had less than 5 years experience. Same through the 1990s. Probably still the same through the 2000s and 2010s and with how many people are learning to code, probably still the same now, most programmers have <5 years experience.

That means most employers have only ever seen developers with <5 years experience, working in teams of same, using languages and tools designed by and for same. How could such employers properly value 30 or 50 years of experience?

(comment deleted)
I think a large part of the problem is that the software industry still doesn't know how to measure someone's value systematically and reliably. Metrics like LOC/day or bug minimization or speed of project delivery differ widely across problem domains and the technical level of contributor.

Does wisdom count in software? Practically and generally, I'd say no. When setting hiring priorities, cost trumps wisdom in all but the most senior roles.

(BTW, at 62, I've been coding professionally for 34 years. I wish I were valued more by my employers with each passing year. But if it's so, they hide it well.)

Do you still type source code?

How do you rate your mental agility versus your younger self?

So far I really haven't sensed any mental decrease, but I know there must be some. I do type some source code in Python and R, but primarily I use a rapid applications development tool that allows me to build custom machine learning algorithms and ad hoc analytics to work on big data.
Do you consider what you do to be programming? How does it compare to, say, hand-writing C?
Surely he considers it programming if he self describes as an active programmer?
He might be doing other code work, as well.

I was honestly curious how it compared. What tools and processes transfer over, that kinb of thing.

There is no doubt what I do is programming. It's similar in some ways to SQL, but the tool I use enables me to implement much more complexity than possible in plain SQL. It actually enables a lot of the functionality available in a procedural language like C, but within a structure built around database manipulations and joins. In this way it breaks the bounds of memory constraints and becomes a big data programming language. Admittedly, I don't have to type out individual commands, but that's a good thing. The logic is the same, but the development time is much less. It enables you to concentrate more on the algorithm design while the command syntax and other minutiae are handled in a much more efficient (and maintainable) manner.
That's quite interesting! Thanks for responding. :)

You don't type; is the way you create this logic similar to Ladder Logic, Pure Data or Touch Designer?

I'm 30 now and my background is more in mathematics, so I do focus a lot on Python and R. A lot of my work is in statistics and also in agriculture. Hopefully, but the time I am your age, I will have some secret skills to teach the young folk. I hope to do more mathematics in my everyday work as I get older.

I just realised I need to walk my dog more often after the lockdowns are getting less strict!

Could you talk more about what you remember from your time at Mitchell Engineering Company? You worked on order processing and fulfillment...what was lacking in their process that they wanted to computerize? Was your project deemed a business success? Were you happy while you were working on it? Was it just you or a team?
Just briefly, then I have to hit the sack - I'm on the east coast. I developed a set of programs to allow them to map out the design of a steel building, and my programs would calculate all the pieces they need to load on the truck to build it. Mitchell was very progressive in this area - this type of computerization enabled them to have the building up in record time. A Civil Engineer worked with me and used the computer to design the main support beams. Between the two of us the entire process was automated.
Serious question: How do you sit and type? What chair and what angle has worked best for your back and neck all these years?
I sit in an office chair (tilted back slightly) with 3 large HD monitors about 3 feet from my eyes - I have special glasses for that range. The monitors can be switched among 3 computers, and the wireless keyboard/mouse has a switch to move from one computer to another. Most importantly, I have a dog that needs walking several times a day, and that forces me to get up and walk a couple miles every day.
I have the same 3 monitor, 'computer glasses' setup... Did your optometrist give you grief about them?

The first time I said I wanted a pair of single focus lenses for the computer (so I could use my whole field of view..), I got a lot of flak about "you should get bifocals". I haven't needed to drive anywhere in the last couple of years, so I basically never where my distance glasses anymore.

lately though.. Seems like they're getting more used to the idea. Maybe more people doing it ?

I hate bifocals. Hate them. Hate hate hate.

I've got the computer glasses, and then the regular ones. I swap as needed.

I've not had to try them yet. I'm not looking forward to it. Seems like it would be unnatural/tiring.
For myself, it was my optometrist's idea. I get one "free" pair a year from my vision coverage, and when a year rolled in where my old prescription hadn't changed much, he suggested getting computer glasses instead.

My only problem is forgetting to change glasses when I go out, and not really noticing til I hit a main road and wonder why the street signs are blurry.

I'm so near sighted, I wouldn't make it out the door without my glasses :-)

Have you tried the 'blue blocker' type lenses? If so, how do you like them ?

Not the person you're replying to, but I've had the blue-blocker (I think Costco calls them 'computer lenses' confusingly). They do shift colours towards the yellow range, but not as much as the computer "night shift" (so that the rest of the world looks normal) :) I've found that I can sit at my computer for longer, compared to when I didn't have blue-blocking lenses. It's probably just personal preference :)

I'm also very nearsighted :)

I've heard that blocking blue light can help you sleep better...And I'm usually on the computer before bed. Have you noticed any difference w.r.t sleep ? Thanks!
That's interesting. In the UK, it's pretty much standard. In fact I think (IANAL) that employment law mandates that the company has to pay for your amusingly-named "VDU" glasses if the majority of your work is in front of a screen and the optometrist says you need them. I got some recently and it's changed my life after several uncomfortable years of peering at odd angles through varifocals.
That's what worried me about it...having to move my head too much in order to see the screens. I have big lenses that let me use my peripheral vision naturally.
What do you use three different computers for? Running different OS’s I assume?

A true inspiration, thanks for sharing.

I'm amazed your eyes held up from probably at least 20 years of CRTs bombarding you! That's great!
I should also mention that I recently bought a Flexispot stand up desk converter. So now I can stand up and work when I want to. It only accommodates two of my monitors, but that's all I really need anyway.
Dam - I thought my 40 years was pushing ... Thanks for the inspiration!
Right? I'm at 22 years professionally and I feel like a dinosaur out here.
Same. I recently got into scheme/lisp and got a newfound inspiration. Seems like older folks were on a better path which got as time passed by more and more corrupted.
I really have to really give lisp a chance sometime. Right now, next on my language list are zig and nim. Crystal could be interesting too!
The really amazing part, is last time I looked - most software developers _leave tech_ after 10 years. This guy has managed to keep the passion over 5x that long!

Hope I'll be able to say the same someday :-)

For me I’ve learned programming is one of the purest feelings of joy I experience. Even regardless of the language or environment. It’s so thrilling to get to take something apart and put it back together to solve a problem. I feel so lucky to have such work. Congrats. I hope I can make it to 74 writing code!
Probably close. The first software program ran 21 June 1948 (https://en.wikipedia.org/wiki/Stored-program_computer) and not many people who start working at 16 keep programming until 74.
Maurice Wilkes programmed from 1949 (if we're counting from when the program ran on a stored-program computer) until his death in 2010, so OP has at least 4 years to go to make the record.
I think you probably are, if you go by date you started working to the date you stopped! Even Ken Thompson and Dennis Ritchie seem to have started their first programming jobs a few years after you.

Welcome to HN! I hope you stick around, it can be a great place.

This is quite inspiring to read. What languages do you work with these days? What do you miss about the "old way" of programming? You have such a unique perspective.
What do you think about all of the advances that happened in your time, especially with what machine learning is capable of these days (fully artificial human faces, for one)?

Any advice (technical or life) for us younger people?

I second this request. Would love to hear any insight you have with all your life experiences in the field.
Please don't say implementing JavaScript on punchcards.
No. Coding JS on keyboard is already bad enough.
It's a bit sad that people today still "fanboy" against a lang, like a lot of people still do for PHP (which has absolutely improved from the absurdity it was). JS followed the same path, ES2016 is an absolute dream to code on.

Maybe I'm biased? PHP paid my bills for a long time and currently I'm a front-end developer that works mostly with Angular (but sometimes I jump into the .NET Core backends). I love JS and TS, they evolved nicely along the years.

Nothing against being a fanboy for one specific lang, but thinking "X" language is bad/joke/nightmare isn't nice and makes people that work with them look like losers, which they aren't.

PHP and Javascript both improved significantly, but both still have horrible legacy baggage that can't be rid of, namely weak typing (not dynamic, where a variable can hold any type, but weak, where "1"+2=3). For me, that makes programming in either language like running in a minefield. And still, I write Javascript daily, because myeusers don't care about weak typing :-)
If you really care so much, why not simply embrace TypeScript?
TypeScript is awesome compared to JavaScript and even to other popular C-like languages. But it inherits all of the problems of the JS ecosystem without providing all of the benefits.

To make a JS package consumable by a reasonably strict TS project, someone has to basically rewrite the package. It's less effort than writing one from scratch, but it's not free.

> To make a JS package consumable by a reasonably strict TS project...

I’m not sure what you mean by “strict” here... Certainly one can use JavaScript from TypeScript, and even provide type information for the JS with declaration files. [1] Does a “strict” project require something beyond this?

[1] “Declaration Files”, TypeScript Handbook https://www.typescriptlang.org/docs/handbook/declaration-fil...

Type information is easy to half-ass: list all the exports, mark them as 'string', 'Object', 'Function', done.

Adding the actually correct and reliable types is the hard part. (But easier than writing the code in the first place.)

The typescript compiler can be a bit slow at times as well which dramatically lowers the developer experience when using typescript
Perhaps one day I will. When I last started a big JS project it wasn't mature enough to build a company around. This does seem to be changing.
Strong/weak and dynamic/static. JS is dynamic, but variables will always have a type, which is memory safe - which makes types strong.
I thought weak/strong typing is more about how explicit/implicit type conversion is. In PHP and JS it's almost always implicit and they don't warn you for mixing most types, whereas e.g. Python will complain. That's one thing I don't enjoy with PHP/JS. A lot of certainty goes out of the window with it.
Everyone likes different things.

'1'+1=2 prevents a lot of errors. The languages tries to help you along compared to an harsh error. Maybe you want a harsh error.. halting everything until you declare a new variable with the same type and have to go through a manual conversion. For me let the language handle that. If you are tdding anything unexpected will be caught anyhow if you are worried how things convert.

It's like rust in terms of memory management vs c. It handles it for you..

Implicit string to number conversion is more like C in terms of memory management, in the sense that it's a huge footgun that you will definitely shoot yourself with. I have never seen it prevent errors, only make them worse by hiding them from QA so they can reach production and ruin your weekend.
(comment deleted)
It's unfortunately in JS that + is used for both string concatenation and number addition. There are however defined rules that anything concatenated with a string becomes a string. And anything used with -/* > < becomes a number. As a beginner in JS I always used -- instead of plus when doing addition. But as I got more experienced I learned what was strings and what was numbers. And if I'm not sure I add an assertion - so that there will be an early error. I also parse all input (user input etc) not even a static strong type system will help you there, you always have to check/parse the input at runtime! JavaScript is strongly typed as in whatever the user inputs it will be converted to a type. JS don't have that many types and usually it becomes a string.
I’ve heard another definition of strong, which is that the compiler will make more guarantees, and in those cases the terminology was:

    * safe/unsafe
    * strong/weak
    * static/dynamic
Note that while safe/unsafe is basically all-or-nothing, strong/weak and static/dynamic are more of a spectrum, so JavaScript would be safe, weaker, and more dynamic than other languages. Typescript makes JS stronger when authoring code.
Also sound/unsound
Javascript is a lot saner than that. The result is "12". (I'm ok with automatic casting so long as it's an embedding. Every number has a reasonable string representation, but not vice versa. Wanting explicit casts like in Python is defensible, though.)
Huh, what do you know.

Still, this is unforgivable in my book:

  [] + {} == "[object Object]"
  {} + [] == 0
For the first, I frequently (for my own projects) change the Array prototype to have

   Array.prototype.toString = function () {
      return '[' + this.join(', ') + ']';
   };
It would be convenient if Object.prototype.toString by default threw an exception, since the default breaks the embedding rule I described.

The second example is misleading, and it has nothing to do with the rules for addition: the {} at the beginning of the expression is parsed as a code block, played off the rules for what the value of a Javascript statement is. More realistically, we have

   ({}) + [] == "[object Object]"
but the original is, effectively,

   {
   }
   console.log(+[]);
I didn't realise about the second one. Thanks!
Thanks, I never realized that the second one was parsed as a code block rather than an object!
Would you agree that a language X can be objectively superior to language Y?

I worked with PHP professionally for some 10 years, with very competent colleagues from whom I've learned a lot. The PHP ecosystem with Composer and Symfony components is quite good. Still, PHP itself is a terrible language. I have less knowledge but a similar opinion of JavaScript. Doesn't mean people working with PHP or JavaScript are losers - I admire their tenacity and do feel a little bad for them.

The point is that a language can evolve so much they are not even the same language. I prefer ES2016 to Python for example.
Eh, the weak typing intrinsic in JS still makes Python win out between those two.
Python turns you into someone who cares how many invisible characters and of which type for each line you code. Weaking typing vs strong typing is the least of your concern
You (should) do that in other languages too. I'm not a fan of the way Python does it, but 1. it's not like you decide tabs vs spaces anew on each line, and 2. this is simply not a practical issue, unlike weak vs strong typing.
That really is use case dependent for me. In the context where I have made a thoughtful choice to use a dynamically typed language, I find strong typing seems to make things unnecessary clunky with not much gain, especially in webdev dealing with a lot of JSON and UI display. And if I’m in a situation where JS/dynamic language is not a good choice then I prefer a real statically typed language, not a middle-ground.
In what situations do you find weak typing useful? I've only ever had it introduce bugs and not make my life any easier. Meanwhile dynamic typing makes it a lot quicker to prototype things (vars that can be null or an int, for instance).
Numpy wouldn't work in JS because you can't overload operators afaik. Numpy/scipy are reasons why many people love Python.
It would work. All those overridden operators are just functions. It wouldn't be as concise or as intuitive though.
Yes, that was the point ;) Both languages are practically Turing complete so they are equivalent if you're just interested in what you can build with them.
Ah ok, by "numpy wouldn't work in JS" you meant something like it wouldn't be popular or as loved. Makes more sense now.
Terrible compared to what? What do you find a better language? What makes a language terrible for you?

Is COBOL terrible or C Or Go?

Good questions, not sure I can answer satisfactorily :)

> Terrible compared to what?

Terrible compared to other available programming languages.

> What do you find a better language?

Lisps, Haskell, Erlang, Rust, but even eg Python, Ruby, C, Java.

> What makes a language terrible for you?

Allowing me to do unreasonable things and resulting in unreasonable behaviour. Eg JavaScript:

[] + {} == [object Object]

{} + [] == 0

> Is COBOL terrible or C Or Go?

Programming languages are products of their time and context.

When COBOL was created, it might've been the best there was. By now, I think COBOL can be considered worse than many alternatives. If someone decided to write a non-toy greenfield project in COBOL today, I'd be surprised and might question their sanity.

C has two things going for it: it's a simple language and it's close to the hardware. I wouldn't call it terrible.

Go, now I really dislike Go, but I think there might be situations where it's the right tool for the job. Simple web services perhaps?

PHP was terrible already when it was created. I don't hold that against Rasmus, he just wanted to get simple things done, and didn't even intend to create a full-fledged programming language.

JavaScript... Brendan Eich wanted to put Scheme scripting in the browser, but because Java was popular, he was told by management to make it look more like Java and also to call it JavaScript. Oh also he had like a two week deadline or something.

Yea, I dunno... good hard questions :)

“PHP paid my bills” is the same argument as “NHS saved my life” in the UK
You're biased, they suck. Doesn't make you a loser for working with them, we all do it. But it's just pulling the wool to think that their obvious utility somehow counter-acts their (also obvious) lousy design. My personal advice is don't identify with your tools. Mark of a mature craftsman is knowing the nature of your tools and getting the job done anyway.
I don't really post anti-Javascript commentary, but I have an intense hatred for it because I disliked it and I had to use it for 10 years because it was the only client side language for the web. It is a bit irrational at this point, but I'm not a fan of imperative languages these days, and combining that with past experience makes me really not like it.

I don't particularly care about php because I have basically zero experience with it.

And here I am, making great cash programming in JS. And using it to create my own businesses :) And loving it.

To each their own I suppose.

I think someday we will be able to duplicate the basic brain of an infant in a computer. Don't forget all the information is in our DNA and there's not that much innate knowledge - most of the infant's brain relates to the amazing capacity to learn. Someone will then take one home and train it like a human baby. It will become so close to a human that it will spark debates about whether it has self-awareness and whether it should have human rights. I regret I won't be around to see it, but who knows - maybe I'll be back :-)
Reading a speculative prediction, given been watching progress from up close for 57 years, is interesting.

Any meaningful milestones along the way, that you think are worth noting. Tasks or roles that indicate progress?

> Don't forget all the information is in our DNA

I'm not so sure about that (but I'm pretty green on bioinformatics). I mean, for one: https://xkcd.com/1605/. For two, if that was the case we wouldn't need projects like folding@home and such to tell us what the structures described by DNA actually look like. And for three, there is a massive amount of influence on brain development from elsewhere (both from within the fetal body and from the womb). It's a bit like having a compiler's source code but nothing to bootstrap it with...

Thank you for making me feel young in this crowd! Started in 1974, still at it.
Curious what is your salary? Can you share?
Who cares about the money when one has an ounce of passion for it
Because you need money to eat and pay rent and most importantly provide for your family or offspring if you have any.
I can probably comfortably finance my family (2 kids, wife works part time) on half my current income, but I want to get paid as much as I can (it's not my top priority, but I certainly prefer more money than less).

Stuff like the comment you answered to is how the people pulling in the actual big bucks hope to get you to work for cheap.

Yeah, I didn’t mean working for free, but working on a less glamorous salary with all the other human perks is sometimes just fine, especially if one’s done raising kids and does work to fulfil the calling
I’m genuinely curious, why you curious? :)
Because money matters. There are good arguments for financial transparency.
The salary curve along the career is as well interesting - is it always increasing, or having some drops?
I wouldn't mind sharing, but I don't want to take the chance that someone in my company could be reading this. I started in 1963 at $1.55 an hour, which was actually pretty good back then. It's mostly been increasing, except for several years when I was self-employed. Now it's more based on my domain knowledge in healthcare fraud detection than on my seniority and skills as a programmer.
Congratulations!!. What made you stick to Programming and not go the path of leadership? Are you on linkedin ?
Congratulations! I hope it's okay this has turned into an AMA :D. Feel free to not answer!

What do you think the biggest shift for day to day programming was for you in your 57 years?

Knuth was being paid by Burroughs to implement an Algol-58 compiler in 1960. He’s still programming, and seems to have advice for others on the subject. But I don’t expect to see him here.

Congratulations on being in that company, and may it long continue.

Partly cribbed from my comment downthread: I think I'd classify Knuth as the slightly different "longest working computer scientist". He's known for his quote "Beware of bugs in the above code; I have only proved it correct, not tried it."

Or perhaps I'd classify him as the somewhat more sycophantic "longest working genius" or "longest working cool guy". Heck, Knuth was uniquely awarded a master's degree for his bachelor's because his work was considered so outstanding, he's an organist and composer, and he's hilarious. I love this quote about him: "If you had an optimization function that was in some way a combination of warmth and depth, Don would be it."

A quote from him in an interview I found: "Indeed, as mentioned above, my life's work was to be a teacher."

That's the way he likes to paint himself. From a lecture he gave at my university I remember that he said something along the lines of, that he usually came up with the idea and others wrote the code. From the experience out of the same lecture, however, I can tell you first hand that he knows his way around code and that he can code. The lecture was indeed more of a hands on workshop with Knuth spending most of the time in Emacs coding MMIXAL assembly - pretty low level stuff actually.
Just because he can code doesn't mean he does on a daily basis for a day job, which is what this ask hn post is about no?
Arguably, TAoCP has been his day job since the 60's, and it's full of code.
Knuth still does code basically on a daily basis. At least that's what he said in some interview (writing two complete programs per week on average, small and large, and that definitely qualifies him as software engineer among other things) and I have no reason to doubt it.

https://www-cs-faculty.stanford.edu/~knuth/programs.html

Oh I have absolutely no doubt that Knuth can code better than I (or most people in this thread) ever hope to.

But being a programmer and a computer scientist -are- two very different things. Simply in his daily activities over the last sixty years, Knuth has been writing tens of thousands of pages, doing a lot of math, diving deep into computer science topics. (That is not what I do in my employment as a programmer.) This guy has been sitting behind a keyboard and writing code. (That is what I do.)

To be honest, it's a bit weird to judge a man on the basis of a joke he made over 40 years ago.
(comment deleted)
Now, I certainly wouldn't judge someone based on an out of comment snippet from nearly a half century ago, but Knuth has been portraying himself in a less-programmery, more CS-and-teacher-y way for forever, including interviews from last year. And I think he's being honest - that is who he is.

But being a programmer and a computer scientist -are- two very different things. Simply in his daily activities over the last sixty years, Knuth has been writing tens of thousands of pages, doing a lot of math, diving deep into computer science topics. (That is not what I do in my employment as a programmer.) This guy has been sitting behind a keyboard and writing code. (That is what I do.)

Anil Nerode is almost surely the oldest working computer scientist today - https://math.cornell.edu/anil-nerode - He technically is in the math department at Cornell but he has been there since well before Cornell had a computer science department.
I just read his CV. He got his PhD under Gödel. He was at Princeton when Einstein was still there. Amazing!
Congrats! I love reading inspiring posts on HN!

There are probably many of us who will probably follow in your footsteps. Provided that Stack Overflow continues to exist, I have no plans to ever stop programming either.