Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What skills to acquire in 2019?
218 points by miguelrochefort on Dec 26, 2018 | hide | past | favorite | 183 comments
I quit my software development job 4 months ago to take some time to travel, develop some ideas, and improve myself. I have a very flexible schedule, and I'm eager to make the most out of 2019.

What are some skills (technical or not) you think someone in my situation (or anyone else) should consider acquiring in 2019?

I've been learning Elixir, which is really good for creating concurrent and scalable systems. Concurrency has always been something that has fascinated me and I see in Elixir a chance to make very concurrent code without having to deal with locks, race conditions, and all the other icky low-level stuff. Elixir is also a functional language, making this is the first functional language I've learned, which is another reason I'm enjoying it.

Over the past couple years, I've heard from developers who were very satisfied with Elixir, so I finally sat down and started to learn it.

As I've been learning Elixir, I've been writing a series called "Learn with Me: Elixir" at https://inquisitivedeveloper.com. The idea is that anyone else who's also interested in Elixir can follow along as I learn it and learn it for themselves as well.

Of course, playing around with it has also helped me learn far more than just reading about it. Writing about it has helped me learn a lot better, and my hope is that someone else will also find my writing useful.

For those who are not aware, Jose Valim (the creator of Elixir) live-streamed all his solutions to this years Advent of Code on Twitch (found here: https://www.twitch.tv/videos/346878345?collection=YDM6eKu6bh...). I found this to be very informative and enjoyable. It is definitely worth checking out regardless of your proficiency in Elixir.

I use Rails for my web programming needs, and I've heard a lot of people talk about switching from Ruby/Rails to Elixir/Phoenix because of "concurrency", but I'm going to be honest and say I don't know what that means. I'm not a CS grad and I'm not super familiar with all of the terminology.

Can someone help me with two things? Really trying to understand the benefit.

1. When you say "concurrency" do you just mean "handles more users at the same time" or is there something more to concurrency? I keep seeing web chat applications in tutorials for Elixir but chat is such a small application of a technology that I find it hard to believe the majority of Elixir users are building chat systems. What are you using the concurrency for? Why isn't Rails sufficient for that application?

2. Given that most web apps are CRUD, are there any benefits to using Elixir for a typical CRUD website (other than less-than-tangible things like "it's functional")?

Much appreciated!

I'm a single core server, and I have a queue of tasks. I can process them one at a time. But say I don't want to work on one task at a time. I might decide to do some database operation and while I'm waiting for the response to come back, I might decide to do some work on a separate thread so I'm not idling. We now have concurrency. If I add more cores, and my program is coded to be able to take advantage of that, I have more workers to execute that queue and now we have parallelism! If I then go and add separate computers (nodes) and connect them over a network, we have created a distributed system which itself may be a concurrent, parallel system.

What Erlang and therefore Elixir gives you is a very sound mental model whereby your communication between nodes and separate workers is done via message passing between Erlang processes (read: not OS processes), and the receiving process may or may not be on the same computer as the sender. Those messages may also be synchronous or asynchronous, depending on what you're doing.

It also gives you a nice mental model for failure. Imagine I'm doing some super big indexing of some alphabetized data. It may make sense to subdivide that work along letter bounds, where some worker does A, another does B, ... etc. Suppose the worker for Q failed. What do you do? You may have to kill the entire job, but you might be able to get away with just repeating Q, or maybe even some subset of Q. But you as the worker that just failed are not in the best position to make that decision, so you fail and let your supervisor know, just like in a large organizational structure. That supervisor may decide the whole job is unrecoverable and fail and let ITS supervisor decide what to do. Erlang/Elixir gives you a toolkit to describe these operations via constructs called GenServers and Supervisors that you organize into what are called "supervision trees".

It also guarantees "fairness" between your jobs. Say you have the letter example, and whatever you're doing, the letter L s taking WAY more time than anyone else. To preserve overall system integrity, the Erlang VM will decide to say "hey man, you're gonna get a chance to finish but I'm gonna let M get some time for a bit and I'll come back to you." This is called "preemptive scheduling". This gives Erlang its "soft real time" properties.

All this to say, you're really setting yourself up to build more complicated systems if you need to. But even if you're not, and you have a typical CRUD app, things like preemptive scheduling are super powerful. Consider a web server. It may make sense to give each request its own process. If you have one that's taking too much time, the system will make sure you're not backing up completely by making sure the next request can run, for at least a little bit.

I'm kind of handwaving details here, but this is the general idea behind these types of systems. Erlang as originally designed was to handle telephony switches and such, and therefore had to handle many different callers all at the same time, on systems with not as much parallelism, and therefore being able to process jobs literally simultaneously, but they needed to ensure that the calls waiting to be connected could connect eventually.

They also designed around being able to hot upgrade your system. If I'm a telephone pole computer, there's no way they're gonna send a guy out to me to upgrade my system, and I want to make sure I can update the computer while it's still servicing the calls coming through it.

If you have a single core/threaded computer you can only schedule one task at a time and concurrency is an illusion.

What this functional language does is mask the complexity involved in SMP systems where state and data are subject to races via concurrent access. It also allows you to subscribe to the doomed philosophy of fail once, try again, try harder while ignoring the underlying cause. Trying the same thing over and over while failing has a name associated with it.

It implements a separate scheduler which superimposes it's rules over what ever OS kernel scheduling is in place. Sometimes you don't want that complexity.

It's functional. Who cares about functional as the _only_ model for a programming language?

I enjoyed this explanation, thank you.

Curious to know what the differences are vis-a-vis big data tools like Hadoop or Spark; as a user of those tools I recognized a lot of common failure patterns in the example above. Thanks!

I'm unfamiliar with Hadoop/Spark beyond knowing what they are and vaguely where they'd be used, but I imagine they tend on the "well we can just recalculate sub-jobs" failure models, instead optimizing developer speed over computational speed. Though that is wild speculation.

You wouldn't use Erlang/Elixir for doing calculation because that's just not what it's good at. But you might use it as something to manage jobs in a larger distributed system perhaps. Though my suspicion there is you may run into tooling impedance mismatches as you get deeper into the failure modes.

Sorry I can't speak more knowledgeably about that. I'm curious if any WhatsApp folks are around and can comment on if they ever made their Erlang systems talk with their Hadoop/Spark stuff and what that all looked like.

I enjoyed your explanation as well.

I love Elixir. There are very few things that it leaves me wanting from other languages, and I am happy for having added it to my professional tool belt a few years ago. I recommend it for beginners and experienced folk alike. The community is pleasant, industrious, and I feel like I get to code in a sane environment every day with escape hatches in just about every spot I would expect them to exist (due mostly to the macros + BEAM). Though I do not take advantage of this as often as I would like, being able to drop down to native Erlang trivially basically doubles the ecosystem size.

I second Elixir, but I'd add Phoenix to the pile, especially if you do any web programming. Read these two books, in this order, and buy them from pragprog.com since they are DRM free there:

1. Programming Elixir by Dave Thomas (https://pragprog.com/book/elixir16/programming-elixir-1-6)

2. Programming Phoenix by Chris McCord, Bruce Tate and José Valim (https://pragprog.com/book/phoenix14/programming-phoenix-1-4)

Nice, bookmarked as I may be hitting Elixir up soon.

For those who want to start at post #1, here ya go > https://inquisitivedeveloper.com/lwm-elixir-1/

Elixir sounds like an awesome combination of the advantages of Golang and immutable + functional-first languages, nice!

3 critical skills that will help you through out your life: 1. Learn to workout well - crossfit, hire a trainer, etc 2. Basic financial knowledge - investing, taxes, RSUs/Options, etc 3. Presentation skills - most of your career will be determined by how effectively you communicate, influence and persuade. Invest in it.

There’s a lot of better ways to work out than crossfit. But I agree with the basic premise! Learn the skill of lifting heavy things and running farther than you’re willing to walk.

I’d add to presentation skills: negotiation skills. I’ll recommend Chris Voss’ book “Never Split the Difference” as I have been to all my relatives this Christmas.

I have done crossfit, other HIIT gyms, weights, swimming, running etc etc. However the best exercise I can recommend is one you enjoy. Try squash, Rock climbing, yoga etc till you find something you enjoy and you want to excel at.

This business of exercising for the sake of exercising for the rest of your life as if it is some sort of cross to bear is not the best technique to staying healthy! Try and enjoy it.

I'm not a crossfitter either, but I've trained at Crossfit gyms for about a year in the past. Yes, high intensity training with complex Olympic movements create a situation where injuries might more easily occur, but if one just goes there for a few months to learn the basics of movements/lifting form, it can be beneficial even if you go workout by yourself later on.

Can you elaborate on why other things are "better" than crossfit? I've found it to be very time-efficient and well-rounded.

A lot of folks give CrossFit crap (and a some of it is justified). It is hip to hate on it. If you can get a box that has a good owner/coach, CrossFit is an excellent way to learn about fitness and your limits. The biggest issue I have is the lack of quality control between gyms. The community/class aspects help push you, the types of movements and workouts can be very effective at both strength, cardio, and capacity. Work on mobilizing and form and you are golden with CrossFit.

I started crossfit in September at 515 lbs.

Trust me it REALLY depends on the box and the coaches...there's 2 coaches that aren't super helpful, but they're still nice and friendly, but the owner, and 2 of the other coaches are amazing.

At 515, you can't do a ton, so they walked me through modifications, they give me extra help to get better form, they slow me down when I want to push past my limit or feel I'm not progressing fast enough -- so I don't get injured.

Heck, they even call and fb chat w/ me if I miss a class. I started 9/10 @ 515. It's 12/27 and I'm 430. Goal is be <300 by 2020 (40th birthday).

I can see CrossFit REALLY sucking if quality isn't there, and the coaches suck, I don't like going to classes AS much when the good coaches aren't coaching, so I think that's the difference..

A normal gym you just have equipment, quality doesn't matter that much, in CrossFit --it's all about the people running the place, if they aren't attentive to those who might need extra help getting up to par, then find a different box.

Agreed! And awesome progress!

Thanks. Been a great year. CrossFit helped me overcome depression, and a lot of things. Probably some with focus too... Also more confidence. Can't wait to recap my progress next Year... hoping to be < 300.

I tried 3 crossfit gyms. They all played such loud music that after each session my ears would ring and it made me agitated. Ended up sending the one an email, but apparently it has something to do with motivation.

Yeah, no good. Quality control would help a ton.

CrossFit is an easy way to injure yourself.

As reported in NSCA study, which court found containing “false statements”.

"It is taken as established that the NSCA had a commercial motivation for making the false statement in the Devor Study (…) that the NSCA made the false statement in the Devor Study with the intention of disparaging CrossFit and thereby driving consumers to the NSCA (…) (and) that a loss in CrossFit’s certification revenue was the natural and probable result of the false injury data in the Devor Study."

Non-crossfitter here. I have a personal trainer who is also a non-crossfitter. His assessment of the program is that it is too one size fits all.

crossfit is like scientology of fitness

It's really not. I used to do it, and then quit it. Nobody even tried to armtwist me into not leaving (except for asking for 30-day notice)

Lol this had me dyin. Thanks.

1. useless 50+ unless you enjoy pain and injury. 2. Buy something that is always worth something, take care of it and make enough $$ to enjoy life. Leave something for your family and rainy days. 3. Presentation skills? Communication skills and I'd say those are only useful when you have something to communicate. Technical and creative skills are just as important.

OP list is the young mans guide to SV future reality if I had to guess.

Do you know of a way for an amateur to get more efficient at preparing their own taxes? As an American living in London, I feel like I spend waaay to much time going down research rabbit holes to answer questions like “does HMRC consider Roth IRAs to be like pensions?” or “Does the IRS consider a help-to-buy ISA to be a PFIC?”

Unfortunately persuasion is usually done at the bar. Often enough the "presentation" is just a formality.

Maybe. Persuasion is also about finding shared success/common ground, and its almost a negotiation in that way. Look at Robert Cialdini's books on Amazon. Similarly books on negotiation by Maggie Neale or Chris Voss (Never split the difference) are really helpful.

Great advice! Do you know of any links/resources to help develop skills 2 and 3?

https://www.amazon.com/Robert-B.-Cialdini/e/B000AP9KKG - Robert Cialdini's books are good.

Never Split the difference from Chris Voss is a good book. Persuasion and negotiation are also as much about effective listening. Something I've practiced hard this year is to be mindful of creating a pause before I respond. Pause for like 2 seconds.

For investing, etc - highly recommend starting with this - https://mebfaber.com/timing-model/

Forget stock picking, it is generally a fool's errand.

Also - Tony Robbins did a good job with his book "Money: Master the game". Look up the "All weather strategy" from Ray Dalio referenced in that book. Diversification across non-correlated assets, compounded over time creates wealth.

My personal recommendation for learning to give better presentations is to just do it. Start your own little tech convention and do as much public speaking as possible. You get the "bystander effect" at social events when someone has to say something to a crowd but nobody wants to do it, so step up and get some practice! People don't judge you for errors nearly as much as you think.

As for written communication, Markel's Technical Communication was used in my English class in college and I remember getting a lot out of following its directions. As you might expect, it's very well written. Of course, I had the advantage of classroom instruction, but I think it would be helpful even for self-study.

read Iwillteachyoutoberich.com to start on #2 his site is by no means the end all be all, but it will give you a start.

+1 to this, I think Ramit Sethi's material is a great introduction to financial knowledge. This year I'm following up with Bogleheads and, if I can handle it, The Intelligent Investor

In addition to the other replies, read up the wiki on r/personalfinance

I would love for us tech folk to dip our toes in idea history, hermeneutics and rhetoric.

We need to think about the way we think and talk about the way we talk. I mean reflect on the state of things, instead of blindly increasing shareholder value. We glorify engagement, but we’re arguably glorifying how addictive our creations are.

What if apps maximized for less time spent, like help users just do their work and get on with living life?

When I work on web sites that deliver services I often picture users being in a hurry. People just want to get on with life, not live their lives within my server side rendered single page web app. :)

What if apps maximized for less time spent

Today I used an automated delivery booth. At the end it reported in big letters: "you took your order in 2 minutes 12 seconds". Made me vividly remember the end-of-level screen in classic Doom. Maybe that's a good idea: make the session time prominently visible, to have an urge to optimize.

Like a package locker? Why did it take two minutes?

Well, I liked the end-of-level screen, but the rest of UI was not so new-user-friendly, especially not sleepy-new-user-friendly.

About half the time I was staring at the instruction "the box will unlock now" with the box in question still behind a closed door before trying to pull the door harder.

I say dive in, don't be shy. There is so much that these specific intellectual paths lead to.

Can you recommend a few resources on idea history, hermeneutics and rhetoric?

Got any recommendations on How to get started studying rhetoric?

I took a course in rhetoric and encountered the book Don’t Think of an Elephant by George Lakoff https://www.amazon.com/Dont-Think-Elephant-Democrats-Progres...

Short book, yet enlightening on rhetoric. Can recommend, regardless of political affiliation.

The skill I am working on the hardest for 2019 is being able to put down my phone. Or more generally to stop the cycle of mindless addictive loops, checking for comments and upvotes on social media, endlessly refreshing forums, and so on.

I’ve tried a few times over the past year to make headway on this and haven’t felt successful, so I’m redoubling and trying to deconstruct the concept a little, figure out some rules and habits to impose on myself, and so on.

I don’t feel confident of success at all, it feels like the defining characteristic of our time is that we’re all walking around with the equivalent of a gram of cocaine in our pockets 24/7.

My working theory is that drastic abstinence oriented solutions are the only way forward.

Any success stories welcome.

I've had a lot of success via Ulysses contracts: https://en.wikipedia.org/wiki/Ulysses_pact

You're stuck in these loops through little fault of your own. Our environments are engineered to be very addicting; tech products train our brains to crave a quick hit of stimulus at the slightest hint of boredom.

Trying to fight against this with just willpower alone is an uphill battle. Willpower fluctuates throughout the day, and (supposedly) it is a finite resource per unit of time. You may win a few battles, but the strong cues in your environment remain, and will likely snare you next time around.

It's hard to resist the temptations because they are pleasurable and salient rewards in the here and now, in a way that longer-term, more abstract goals (read a book, stop wasting time on junk info-snacking, etc) can never be.

Ulysses contracts bridge this gap by pulling the longer-term, more abstract goals into the here and now, endowing them with an immediate saliency of their own. Now your new habits can fight on the same ground as your old habits.

Examples: the person who, in trying to quit smoking, gave a friend a check for $5k and promised that if she smoked again, she'd have to report herself to her friend, who would then donate that money to the KKK.

Examples of my own: - I jettisoned caffeine by promising my spouse that for every caffeinated drink I took, I had to give up in proportion something I love dearly (e.g. skip a day of meditation) - I cut down on online boardgaming by promising a friend that I would only play with him -- and should I play with an online stranger, my friend would receive $5k and proceed to squander it at the poker table. (Making the resulting outcome of your contract breach, something that stings, that is visceral and has an emotional valence to it, it key to making the contracts successful).

It also helps to engineer your environment. Remove the cues and temptations. I've had more mixed success with this. But quitting FB, Linkedin, definitely removed strong loops. (My brain fought like hell against their absence, then after the three week mark, never a peep again. Goes to show the arbitrariness of our cravings)

I've been working on this over the holidays, since it's a chance to spend time with people I don't see too often. I have had some success with the Android app Cold Turkey. Every time I catch myself using the phone in an undesirable way, I can lock it for 15 minutes or so. Instead of putting it away and then absently picking it up again 30 seconds later.

EDIT: I know it's cliched to give technical tricks as answers to comments like this, but these tricks are actually IMHO the best solution to these problems. Trying to enforce through willpower alone seems a losing battle. Eventually the habit fades and you don't need the tricks anymore.

Hey! I've been fighting the same battle, mainly with facebook and smartphone usage.

With facebook, I unfollowed all the people and groups and pages, rendering my wall totally empty. Now I can still use it as an actual SOCIAL network - messaging friends on messenger and taking part in/creating events.

With smartphone - I highly recommend turning your display into grayscale. On android, it can be found in developer settings (google how to enable it). Together with high contrast settings, everything is perfectly readable, you can still call and text, take pictures, whatever. But looking at the grey display just doesn't give the satisfaction nice colors do. Try it. Also wristwatch helps, since you don't need to look at the phone to check time.

The easiest way to put down your phone is to not have it around. If you go to work, leave your phone in your jacket pocket in the wardrobe. You can check on it once per [interval of your choice], other than that it won't even be around. Out of sight, out of mind.

It's worked great for me and doing it in the office has also drastically reduced the amount I use my phone outside of it.

For putting down your phone, for me one thing that has been very helpful was not getting data. This basically prevents me from using my phone anywhere but work, school, and home. I live in a city that allows me to connect to many hotspots if needed, but oftentimes I just don't bother. Helps a lot not to have notification streams or timesinks available to you.

The section about news in The 4 Hour Work Week helped me the most in this respect. Once you try it, it is easy to translate to social media.

One tool I have found useful is the app Freedom. Another I’ve found useful in thd past is Forest.

You don't state your programming background but you mentioned C# in previous comments.

I would recommend machine learning as a very useful skill to acquire.

I have to be more specific because "machine learning", "artificial intelligence", and "data science" are really large topics that can encompass difficult math and PhD research.

For application programmers, I think a very realistic subset is using an existing "machine learning toolkit or API" (e.g. Keras in Python) to analyze data and solve problems. You use the machine learning algorithms but don't necessarily write them from scratch. This level of proficiency only requires high-school math. The analogy would be knowing SQL even though one doesn't write b-tree algorithms from scratch or using the "=PMT()" function in MS Excel without deriving the annuity equation from first principles.

I think machine learning concepts (classification, clustering, etc) will become an expected baseline of programmer knowledge just like SQL was 25 years ago. Its usage will become more pervasive and will be utilized by more people that don't have "data scientist" in their job title.

I don't mean to imply it's impossible, or throw out some appeal to authority, but dabbling in ML is not going to open doors for you. I worked in and around the field for more than a decade. Companies who are serious about this stuff can sniff a beginner out and they tend to want credentials. It's a deep subject, so that's not terribly uncalled for, and knowing how to throw a classifier together does not in any way mean you're competent and able to solve hard problems.

Not trying to be a downer, just my $0.02. For fun? Sure, go for. For career development? You had better be serious and ready to devote the next 5-10 years. I do not at all agree that ML is going to become a baseline skill.

I don't mean to imply it's impossible, or throw out some appeal to authority, but dabbling in ML is not going to open doors for you. I worked in and around the field for more than a decade. Companies who are serious about this stuff can sniff a beginner out and they tend to want credentials.

What I think you're missing is that ML is becomeing accessible to organizations WAY outside the sphere you're referring to. In the not-too-distant future, "Bob's Small Engine Repair and Screen Doors" will want to take advantage of ML / Data Science / AI. And it may well be the case that all they need is somebody that can implement Linear Regression or K-Means using SK-Learn, or using a cloud ML API.

And larger organizations will always have room for people with varying levels of skill, especially as demand for the most highly skilled people outstrips the available supply.

and knowing how to throw a classifier together does not in any way mean you're competent and able to solve hard problems.

Not everybody is solving a "hard problem". By way of analogy... if your car has a broken connecting rod, you need to take it to a mechanic who knows how to pull an engine, tear it down, rebuild it from scratch and put everything back together. If you have a bad O2 sensor, that work can be done by somebody much less knowledgeable. If you need the oil changed, that can be done by somebody even less knowledgeable still. Or to use a different analogy, you don't need a neurosurgeon to cut out an ingrown toenail. Use the right person for the job at hand.

> Companies who are serious about this stuff

What about companies who are not serious about this stuff? There are tons of companies who are not actually trying to solve a hard ML problem. They just want their own recommendation or prediction engines. That doesn't require any deep understanding or 5-10 years in this field.

A ML puritan might say that is not real or serious stuff and this is all fad. That might be true. But I think that is one of the ways someone can start off their 5-10 years journey - working on simpler problems and getting paid.

> ...just like SQL was 25 years ago.

Oh boy have I got news for you :)

What’s the news?

That SQL is still relevant after 25 years.

Original comment never mentioned that SQL wasn't a baseline for programmers anymore.

There appears to be a “10” situation here, some see through the hype, others don’t.

I would say the baseline is a little higher now, maybe that is what he meant? But yeah, SQL is required knowledge for any programmer.


Not necessarily in your workplace, but sure, that too if you're into it.

Mostly I mean community groups of like-minded folks who stay in touch, remain active and do meaningful things together, like speaking up against bad uses of technology in government and law enforcement. Or training people how to get started in tech. Or hacking something together that could be meaningful for the lives of people in a city.

This has been the most satisfying tech-related thing I’ve done in the last few years.

It’s how I’ve felt most useful outside of my day-job, and also how I’ve gained a broader perspective on the culture, values, and practices at other companies.


The tech giants are having massive scandals because they lack it. Whatever you do, be here for the end user. Think about their lives and make it no worse.

How I understand empathy in our context: in addition to privacy and security, have empathy for your real user, who chances are is not the middle class educated fashionable 20-something from the Google commercial. Your real user might be elderly, or poor, or uneducated, or a kid, or a harried parent.

If you convinced them to pay you, maybe that money wasn't just pocket change to them. Maybe you sold them a hope for an honest well earned diversion, or something that could make their lives a bit easier or more streamlined or fulfilling. Don't sell out that hope with nagging, annoying up/cross-sells, attempts to addict, or by making the user feel unsafe and paranoid, or by tripping them up with unasked for "innovative" features/UI overhauls or confusing ux.

Given the scale at which our work is deployed, any one of us has the power to unwittingly cause, in aggregate, huge amounts of stress, as if people need any more of that these days.

Excuse the rant, this year my cynicism with a big chunk of our industry has reached a high I couldn't have imagined.


It's sad how dependent the business models of Big Tech are on keeping users ensnared in the services they've simulated digitally. My plumber, my ISP, not even my bank demonstrate the engagement thirst of these megaliths.

Alternatively, not responding to mass media scandals as if they're indicative of real life.

Hah I was gonna say Empathy as well!

That seems similar to the concept of "ruinous empathy". In other words, don't waste your feelings on others, especially if you may have to fire them.

Having been on both sides of that coin, being fired and having to fire others, it's clear to me that reducing the amount of pain is important, even if such an act must be done.

Meditation. Being able to direct your attention, to be present in difficult situations, to care about others when it's easier to worry about oneself, and to be willing to see truths that contradict one's self-image. There is much to be gained from this simple practice, and much to be lost from foregoing it.

"the faculty of voluntarily bringing back a wandering attention over and over again is the very root of judgment, character, and will. [...] An education which should improve this faculty would be the education par excellence." - William James

Note also that you can train these useful skills in ways other than extended courses of formal sitting meditation. (Which also often come with a lot of woo attached.)

https://wakingup.com/ and https://www.headspace.com/ are both woo-free choices I'd recommend.

Leadership skills.

Whether or not you need them today or not, whether you want to be in a leadership role soon or not, they are essential for anyone seeking to progress and you can’t start too soon.

There are many many ways to approach this and I’ll just offer two book titles that I believe would be beneficial.

1. Start with Why 2. Extreme Ownership

A much faster way to understand the central message of "Start with Why" would be to watch the TEDx talk:


Is the book worth reading, in addition? I see very mixed reviews.

Don't waste your time with the book—it's complete fluff: unoriginal, rambling, repetitious, with faulty reasoning…

Financial literacy. I find many of my smart, technology friends don't really have a solid grasp of finances and economics. Something as simple as a six-month cash flow spreadsheet would do wonders for most people. I am trying to instill this in my older children.

I highly recommend "The Index Card: Why Personal Finance Doesn't Have to Be Complicated"



Index card the book refers to: https://i.imgur.com/S1sR5Dy.jpg

/r/personalfinance flowchart: https://i.imgur.com/u0ocDRI.png (How to prioritize spending your money)

> I find many of my smart, technology friends don't really have a solid grasp of finances and economics.

This describes me, unfortunately. I consider myself fairly smart, did well in college, tons of technical skills, but I am -terrible- with money. I keep a 12-month spreadsheet showing income and expenses for every pay period and one showing current debt, but beyond that I know I’m awful about it. A lot of it comes from my parents also being terrible with money and never teaching me saving vs. spending, investing, etc,. I’ve figured out some of it on my own but I still struggle.

I’m glad to hear you’re trying to teach your children better.

> I keep a 12-month spreadsheet showing income and expenses for every pay period and one showing current debt

This means that you are not terrible with money. 90% of practical personal finance can be expressed as follows: expenses < income. The rest is implementation details.

That's fair. When I say I'm terrible with money I mean more in the realm of saving vs. spending. I have a small amount in savings for emergencies/cash flow safety but I definitely do not have 6 months worth of expenses set aside or hundreds of thousands of dollars in my 401(k) as some of my peers seem to. Also, if I'm being totally honest my retirement plan is basically to never retire, partly for financial reasons but also because I like working in my current industry and staying busy and don't see that changing.

Part of that comes from being in a high cost-of-living area with a child and student loan debt, but I also know that a part of it is due to the fact that I buy things I don't need way too often.

Savers are often finding ways to make inertia work for them. Every penny in my 401k was directed there by my employer. I never saw it in the paycheck, I don't think of it as something I have available to spend. Others might use a bank account they don't have a debit card attached to. Or for debts, might set up an automatic transfer to eventually pay it off, and bury their credit cards in a filing cabinet somewhere.

Some people find luck with budgets. Don't tyrannize yourself - it's OK to carve out some of your budget for buying things you don't need - but you can balance that with letting yourself save some. And budgets don't have to be 100% set in stone - when my friend wanted some replacement computer parts, he cut back on his food budget (by cooking more instead of eating out) for a bit to "afford" it.

I realize this is easier said than done, though!

Even if you never plan to retire, having a rainy day fund / a long runway will help take the stress out of layoffs, and give you more time to find the job you want vs the job you need to pay the bills, etc. - hopefully helping ensure you keep enjoying working in your current industry :)

Is there any benefit to doing this in a sheet rather than something like Mint?

I just check it occasionally to make sure my net worth increases month-over-month. Any financial decision like buying a car I take the net income average over time as potential spending bound.

For those who still live somewhat paycheck-to-paycheck (or who manage their money that way as I do), Mint can be a bit challenging to use because it only allows budgeting at a monthly resolution and things like pending charges, etc., can be tricky to manage.

For me it's easier to see "I have A amount coming on B date with C expenses due and D left over for saving or spending" than it is to try and budget monthly and deal with all of the expense carry-over, etc., that Mint tends to do. Maybe I'm doing it wrong but it's a system that, so far, has worked for me for a little over a decade.

Funny, but I still use a 6-month cash-flow spreadsheet broken down bi-weekly. I teach my children about other tools, and what they should learn about to do it better, but if you dutifully keep a 6-month to 1-year cash flow spreadsheet, you are leagues ahead of the average person. It was the first tool (started in my thirties, and in my mid-fifties now) that made me avoid waking up to a negative balance, because I couldn't foresee expenses coming in right before my paycheck. I admit I haven't done much beyond this, however, compared to my parents, I am doing much, much better. I can only hope my children can write the same twenty years from now!

I didn't consider resolution under a month. I can see that angle. I know some of the graphics are not detailed enough so I will occasionally dump the CSV data from it and make a graph in excel.

Writing. Clarity, brevity, and expressiveness are all too rare these days, especially in technical writing and presentations. Writing well can greatly improve your thought process and make your message sing.

I'd start by reading Strunk & White, which nicely addresses clarity and brevity, leaving only a source for expressiveness, which is basically storytelling. There I like the writing books by Steven King, Ray Bradbury, and Ursula LeGuin, but many other worthwhile primers of style are (almost) as good.

Then practice writing while critically reading the best works of good writers, carefully observing their techniques, and then stealing them liberally. Ask friends you trust to assess your work and explain what they liked, didn't like, and why.

Thanks for the tips. Any other recommendations to improve clarity in writing and speaking? I’m not a native English speaker and I’ve been looking for ways to improve.

I read Style: Towards Clarity and Grace recently and found it really practical and actionable

Interviewing. I spent about 3-4 months this year working on my interviewing and competitive programming skills via LeetCode, reading The Algorithm Design Manual, and taking classes at Bradfield School of CS in San Francisco. I feel like it's made a world of difference. I know Hacker News tends to hate on programming interviews, but it really pays to be good at them (and trust me, it's a learnable skill). I do agree that the algorithms-and-whiteboard method can be highly problematic, but I've come to firmly believe that the time for criticism is when you're designing the interview for a candidate, not being interviewed.

Agreed! It's definitely annoying to train something which doesn't seem particularly related to our jobs, but it's worth the effort.

The career impact of becoming a better programmer or leader is tiny compared to the impact of moving to a better company.

If you're a free agent and you're not interested in interviewing or working for big companies, then I would say the top skills to learn are listening/negotiation and maybe time management, unless you're already great at those things. Same advice if you're already at one of the best companies and don't need to interview :)

You spent 3-4 months honing your interview skills, that sounds very expensive.

Are you claiming that this practice made you a better programmer overall or just better at interviews?

It isn’t just hackernews hating on the current way of doing programming interviews, it’s a widespread sentiment in the industry. The current way of doing interviews seems both excessive (requires 2 months of practice) and easily games (with 2 months of practice...). Who is winning from this?

> You spent 3-4 months honing your interview skills, that sounds very expensive.

Assuming a 25% pay bump, it more or less pays for itself in a year.

Not counting the effect of compounding. Bumps are typically by percent, so every point you chisel out early in your career is valuable.

Assuming you couldn’t get that job any other way, sure. However, even most Googlers would think that is excessive (even if they did it themselves, most of them would not admit to it).

The current way of doing interviews seems both excessive (requires 2 months of practice) and easily games (with 2 months of practice...). Who is winning from this?

While I have never had a leetCode style interview, I’ve also far removed from Silicon Valley. That being said, if that’s what my local market required, that’s what I would do.

“The [job] market can stay irrational longer than you can stay solvent”

Both - my interviewing skills got better mostly from doing mock interviews and exposure to the questions that would be asked during an interview, but I'd say my programming skills got better from learning more about algorithm and data structure design, as well as carefully thinking about edge cases so as to beat the battery of test cases that each LeetCode problem has.

We really have to be careful here, because many CS programs have or are planning CS courses specifically designed around LeetCode problems as a way of giving their students a leg up in the interview process. If these kinds of interviews become more widespread (and there are a lot of companies trying to copy google here), this will only intensify and possibly begin push out other CS courses with more useful content.

That kind of future would be very dystopian for the field.

From a very pragmatic standpoint, the most useful courses in college are those that help you get a job.

Taken to an extreme that can get ridiculous (eg if colleges start teaching courses titled “fake it until you can make it”).

What’s the difference between “faking it until you make it” and “learning on the job?” I don’t think I have had a single job in 20+ years where I didn’t spend the first six months in Imposter Syndrome territory.

Maybe that is what the big corps think? Then why not just replace CS programs with boot camps that focus on passing the tech interview?

Could someone pass the LeetCode style tech interview without understanding computer science terms?

For the record: I see nothing wrong with having a two year degree that spends the first year focusing on algorithms and the basics of computer science and the second year focused on a practical emphasis where graduates can hit the ground running. Whether that be embedded programming, game development, big data, web development, etc.

Mostly, sure. They could definitely do it with just a two or three of classes from the program I went through (a first quarter theory course + the algorithms course + the data structures course). You could compress those into a couple of classes really easy.

My first year also included digital logic, computer architecture, and compilers. None of that would help with LeetCode, so get rid of it. My second year in the program consisted of Programming language paradigms, operating systems, data structures, and final year advanced digital logic, advanced computer systems, and an independent capstone project...again, not relevant to LeetCode. I never bothered with the algorithms course (my plate was full, it was an elective) because LeetCode wasn't needed for interviewing back then (but most algorithms don't seem foreign to me either). This was (and still is) a top ten world-ranked CS program.

You could totally master LeetCode taking only a few non-major courses and then augmenting that with math courses. Heck, you could master LeetCode by singularly focusing on mastering LeetCode in a 6 month bootcamp.

I'd also argue it's more like a 2x pay jump if you're early career. I'd love to know about companies who paid that well and didn't require leetcode

C. I read K&R and did every exercise in it this year, and it really changed how I thought about programming, even in higher level languages. Specifically, I feel like it's made me a lot more considerate about algorithm design and detecting edge cases. More justification: https://blog.bradfieldcs.com/the-cost-of-forsaking-c-1139864...

You are not going to get much love here. But you are right.

Well then, I'm happy with just your love.

I think the electronics and electronics fabrication industry is ripe for major disruption in 2019. The end of copper clad fiberglass boards are in sight, and that will change the way we think about electronics in fabrication.

Electronics is also kind of exciting right now in particular. The open hardware community while in it's infancy still, is growing rapidly. Notably, the ESP32 platform has allowed home brew IoT technology to grow very rapidly as it brings a processor and Wi-fi to a chip for less than $5.

>The end of copper clad fiberglass boards are in sight, and that will change the way we think about electronics in fabrication.

That's an interesting thought. But where would this lead us?

> The end of copper clad fiberglass boards are in sight

Where can I read more about that? My google searches have not been fruitful.

interesting. Thanks!

The other approach is through a copper ink such as this one: http://copprint.com/

This looks cool and could be a much easier solution than the aforementioned laser/printing setup. Judging from the website though it doesn’t look like they have a product ready to go, is that true, and are there any alternatives? It would be nice if there was a filament I could just plug into my 3D printer and start using :p

I think googling "conductive" plus one of "3d filaments" or "t-shirt ink" or "epoxy" or "resin" or "nail polish" or "paint" is a good place to start.

I believe that company will probably sell the ink by the barrel full for industrial fabricators.

1. Go deeper into the PyTorch ecosystem to be able to work my way through an ARXIV research paper and implement it. 2. Go deeper into Calculus and Linear Algebra to support my quest to understand the PyTorch implementations better. 3. Using these newly acquired skills build a better clone of a very popular SAAS offfering that charges an arm and leg for even basic operations and offer it at a deep discount. 4.Learn marketing skills(NOT Growth hacking) 5. Learn tech interview skills. Similar to what someone had posted.

I am in the middle of a technology pivot - moving away from the on-prem/Microsoft stack to AWS development/Devops/networking and the $cool_kids JavaScript full stack along with Python.

Also adding on Docker/Kubernetes and ElasticSearch.

Finally, I’ve railed against the need for LeetCode style studying and I haven’t had an interview in almost 20 years that has required it, but I guess I will get back to basics and start working through it.

Two things I want to focus on are Kubernetes and Golang.

I've played with them in the past, but not spent enough time with them to be confident using them in production.

Go is undeniably very useful, just feels like such drudgery actually working with it.

Just my 0.02, but I started my primary project in Golang this year (a first for me) and have genuinely enjoyed getting deeper into using the language. Great tools, great community, and a clever language -- what more could you want?

In my limited experience so far, I just keep finding out how to do something then wondering why it's so complicated.

Things I could do in Python in ~10 lines, seem to require at least double in Go.

I'll keep learning it though, I'm sure I'll start to see the benefits soon!

Absolutely, the language is well designed with good tools but it isn’t very eloquent. I find other languages much more enjoyable to work with Ruby, Typescript, Kotlin or even Java.

I've been using K8's for over a year and have built some golang apps. But would like to take a deeper dive into understanding parts of the k8's source, build my own controllers, etc. If anyone else is interested let me know maybe we can start a niche community.

I'm about to start a role using Kubernetes and been trying to kickstart golang. I'm mildly interested, are you part of the golang slack?

Google hoopla.

Clairvoyance will become increasingly important in 2019.

Any hands-on MOOC for that out there? ;-)

Find a TV show where the protagonist is always right, like House. It will teach you all you need to know, and provide a healthy role model.

I've made a list of things I'd like to learn soon. These are personally important to me, but based on your circumstances and specializations, it may (or may not) be important for you as well.

1> Learning to learn From my interactions with some of my friends, I've come to realize that I'm pretty bad at learning, or at being focussed and determined enough to put work into it. I'm not sure how I can correct it, but I've decided to learn at least one skill (like playing guitars, skateboarding, etc.) that requires persistence.

2> Calculus. statistics and some neuroscience I'm a PhD student and my work primarily focuses on machine learning applications. However I've come to realize that there are too many AI Engineers and very less AI researchers and computational neuroscientists. I feel it's sad that a lot of people are following the hype-train for deep learning, while there is a third-generation neural network (spiking neural networks) that needs more research. Although this has been around for about a decade, the field is still lacking in terms of research. To even contribute a little bit into the field, I would need more knowledge in calculus, statistics and neuroscience (at the very least, about how neurons work). Even if I end up being unable to do research in the field, I still think calculus and stats are very important, so its a win-win anyway.

3> Psychology. I've had my own battles with anxiety and depression, and one of the things that has helped keep me at bay even when I had suicidal thoughts was my knowledge about mental health. I could tell myself "this is not right, fight it or get help", because of what I've learned about psychology. I believe that learning psychology can help me better understand myself, my thoughts and my yearnings, as well as that it would give me the ability to understand others who are going though similar (or more difficult) circumstances. On the side, learning "persuasive psychology" can probably help with understanding the effects of different marketing tactics, while also maybe help me deal with difficult people. Other things like cognitive behavior therapy and mindfulness are also things I need to learn, but that would require some help from a therapist.

1) If you haven't, take this MOOC: https://www.coursera.org/learn/learning-how-to-learn

2) Machine learning and computational neuroscience are two different fields. You really don't need to understand neuroscience to contribute meaningfully to machine learning.

You'd be much better served by studying mathematics like real/complex/functional analysis, abstract algebra, probability, etc.

3) If you've struggled with suicidal thoughts, anxiety, and depression, don't bother waiting to see a therapist. Finding a therapist should be the first thing on your list.

I love calculus and stats. It's such a pity that I don't get to use them at work, but it's good to have the ability to use them. And keep trying hard beating anxiety and depression! No one can help you with this sort of battle except you. If you haven't read The Alchemist, I highly recommend this book.

Hope all goes well. Happy new year mate

I've just begun my dive into games programming (coming from a web dev background) which has taught me to think about problems from a data-driven perspective, and how to write performant code.

It's also a great way to learn how complex programs are structured and iterated upon. Games have so many layers of abstractions which are fun to explore :) I'm following the Handmade Hero series which aims to create a production-quality game from scratch - https://handmadehero.org/ - building and engine and all.

1. Learn Math required for ML/AI.

2. Learn to write deep content.

3. Learn to manage personal finances

4. Learn to invest

5. Learn to draw

6. Learn to sing

7. Learn to have proper 8 hours of sleep

8. Attempt to build a profitable startup again

Can you go into more detail on what you mean by "write deep content"?

I think number 8 is probably mutually exclusive with most of the others, especially 7!

I write on Medium. But, most of the content I write only touches the surface of a topic. It doesn't go deep into the topic like some of the excellent articles upvoted on hackernews.

Could you post a link to your medium posts or atleast divulge your medium username so that I can look your articles up?

Agreed with the other commenter: don't be too hard on yourself. At first glance, these are pretty solid and nothing to be ashamed of.

A few things that have helped me tremendously as a writer:

1. Volume. There really is something to the idea that going for quantity over quality eventually results in higher quantity and quality. The more you write (and read), the better you get at it. Also, no one churns out consistently great stuff. You may need to write dozens of mediocre pieces to find a great one.

2. Consider hiring an experienced editor to go over a few of your posts. You'll learn a lot in the process.

3. There's a need for "shallow" writing too. You might want to write a WaitByWhy-style 25,000 word post on blockchain, but 1) that's incredibly hard to do, and 2) there's only so many people who want to read that. The audience of people who might want to read a 800 word post on the subject is a lot bigger, and writing a short-but-informative post is its own skill.

4. Why do you want to write? In 10 years, what do you hope to look back and have gotten out of it?

Anyway, keep up the good work :)

Thanks.Dont be too harsh on yourself. You had to start somewhere. I lookforward to your new and improved articles in the New Year.

Our industry is behind when it comes to understanding race and racism. Proof: Slack's mistake this last week.

In 2019, learn about institutional racism and why we have to undo it. Take a course from the People's Institute. If you haven't learned about this in depth before, be prepared to learn a lot and have your preconceived notions challenged.


I promise you'll walk away with new perspectives and discover a whole new area you can grow and make a difference in.

I'm glad someone has mentioned this here. It's something our industry is really not taking seriously at all and needs more people pushing for.

As you mentioned company decisions have real racial effects, and those decisions are often made by homogeneous teams that lack diversity and perspective.

If anyone wants a recommendation for reading to build up some knowledge about these issues I would recommend reading "White Fragility" by Robin DiAngelo. She does a great job breaking down lots of common misunderstandings white people have about race, and why those misunderstandings are created in the first place.

I start with a pretty strong bias against any philosophy that counts skepticism of itself as proof of its own existence. It's like a religion that says you know it's true because other people will claim it's not true.

I'm not sure what you mean by this comment. How does it relate to the discussion on racial equity?

Public speaking. It's a skill I developed later in life, and could have used very frequently had I had previously. The power of oration to influence people is quite amazing.

Learning Azure Dev Ops is always good as it makes it possible to publish your own Ideas in a scalable environment that is affordable. Microsoft Learn is pretty neat as they will take you through the basics for free, just take your time. You also get nifty badges from Microsoft for completing different learning modules. They are very much making it look like a nice page you can attach to a resume.

This is fantastic.

This year I'm going to build a small CNC mill and learn to operate it correctly. That and dance cha to at least a competent social level.

Learning more Math.

Contrary to popular belief that you don't need math to do "programming", you actually do need math to progress in said field. Whether you like it or not, Math will be a limitation when it comes to acquiring new knowledge in the computer field. For example, I've been wanting to do Machine Learning for awhile and it just so happened that you need a lot of Math to fully understand it. I've been reading the book "Machine Learning for Humans" and that book is amazing and can't recommend it enough. [0] They explain complex concepts in ever so simple sentences, but reading through the book, you see formulas and equations that are intimidating to the person that is not used to reading them. I would assume that a math major would have a different and opposite experience.

So yes, more math.

[0]: https://medium.com/machine-learning-for-humans

Sales. You will have a different job every day and meet different people until the end of this world.

Do something that would be orthogonal to the current sum of your life experiences.


If you have time off, do something risky that you wouldn't do normally. Why? Because soon enough you'll likely be back in the normal swing of things and unable to take that risk.


Work on a farm

Do the Appalachian trail (or similar)

Take the train across Australia

Learn to ride a motorcycle

Learn to play guitar

Etc Etc

I worked on an organic farm this past year for two weeks (through WWOOF) and it was probably the best two weeks of the year for me. It really opened my eyes to how food is produced and just how much humans have changed the landscape of the planet - well worth the effort

I spent 6 months at home and abroad travelling and WWOOFed for 3 weeks of it. Those 3 weeks had the biggest impact and resonate through my life even today, years later.

Take the train across Australia

Learn to ride a motorcycle

Learn to play guitar

Are these risky endeavors?

I take your point. Maybe "difficult" or "alien" would have been better adjectives.

Postgres, Rust, and Angular is the current long term support tech stack. Start with Heroku and some AWS S3 buckets to store media assets.

UX research methods. Then finding projects/teams you want to work on.

Personally? Thinking about writing a book on SMT solvers, extending jHipster to other languages, doing some high performance SAAS offerings, publishing my semigroup research, my serverless complie optimzation toolchain, and my LLVM based operating system call taint annotation for C++/Rust to get Haskell style IO annotations.

A little on the noes perhaps but try learning how to teach. I took some time to learn how to teach English many years ago and it was a great perception changer.

Investing is a great skill to have. Starting with understanding different asset types, their histories, modern portfolio theory, diversification, tail risks of all assets, how central banks and other banks work. I believe the market can be beaten, but you have to have more financial knowledge than the average retail investor.

While this might be true, I think a more reasonable skill to acquire would be a better grasp of financial literacy.

People spend an incredible amount of time accumulating capital, but many spend hardly any time learning to properly manage it, relying instead on financial advisers selling commission driven products.

I think that it is often the mentality of trying to "beat the markets" that lead people to make poor financial decisions, when in fact the majority of the population would benefit from taking the time to obtain a fundamental understanding of their own personal finances.

We can say both are important skillsets (two sides of the same coin), so I won't argue with you :)

Also maybe beating the market is not that important, but I was making a mistake of accumulating cash without investing it when I was younger. I didn't have spending problems though as I was frugal in my life (though being too frugal was a problem in itself as well).

I would recommend Robert Shiller's course at Yale (available on youtube) which covers all those subjects + some.

+1 to this. Reading The Bogelheads' Guide to Investing was a game-changer for me.

a personal skill which improves life over time, e.g. take up meditation, tai chi, yoga, regular fitness or similar

If planning on going freelance/solo develop presentation skills. (reading up on stuff like https://www.amazon.com/gp/product/0321668790?ie=UTF8&tag=gar...)

For technical skills, really depends on where your interest and skills are ... look for longterm trends and learn stuff that matches your personality/interests/skills

Not a list of "whats", exactly; more like a list of "whys": https://80000hours.org/

Ideally gain skills that will weather the potential recession that should start mid-year? Not sure what those will be exactly, but perhaps others have an idea...

Networking and interpersonal skills. I was around when the .COM bubble burst and all your technical skills that made you easy signup bonuses a year earlier were worth nothing. But knowing somebody who trusted you would give you the job.

That's something we should all have already, regardless of when a recession hits.

I've been getting pretty psyched on Machine Learning / Tensorflow. I plan on diving deeper into this world in 2019

I hesitate answering because I am not really a software engineer, but I think a strong understanding of philosophy will probably help. I see a lot of other comments in this thread recommending empathy, organizing, hermeneutics, etc. Most of that goes under the admittedly large umbrella of philosophy.

Software engineering/programming is somewhat distinct in most fields because you can by some abstraction recreate and scale a thought with high fidelity. In the past, we could transfer or spread thoughts through books or other media. This might've created some sort of mimetic action on the consumer of the media, but it would probably be some corruption of the initial thought of the author. Consider for example, Marx claiming that "what is certain is that I myself am not a Marxist" (not that I am intending to start a political discussion, just to point out that sometimes artists distance themselves from the art). By contrast, a computer program is a thought that is enacted with precision each time it is called. Which is what makes the content of program so philosophically important. Ethics of course becomes paramount because speech is now action in a much more salient way than it ever was before. But the questions of values and of aesthetics should also be considered.

You will probably have to carve out your own fields of study within philosophy and how it relates to computer science beyond the usual accelerationism, trolley car problems, digital physics, etc, but I think it will be well worth it if I'm just giving my two cents here.

Philosophy and functional programming are my most important skills. Ontology and logic are super useful for a programmer.

Have less girlfriends

said no programmer ever ;)


While that could be stated better, Organizational Theory 101 is that there are three levers of power - relationship, expert, and role in that order. After ignoring relationship power for years, that has helped me get ahead more than anything.

The 48 Rules of Power should be on your bookshelf as well. (This not entirely in jest.)

Cloud, machine learning, AI. If you haven't gotten your Ph.D. in machine learning by now, you're at considerable risk of being replaced by an offshore dev who can do your job for pennies on the dollar. As for languages, the future of computing is JavaScript (except for the lowest and most performance-sensitive layers, over which the Rust Evangelism Strike Force has an unshakable claim).

Nontechnical skills: practice vipassana and observe a strict, austere hipster diet (preferably plant-based) if you want to not die. Learn how to sustainably live off-grid with zero emissions if you want to not kill the planet. And for God's sake, delete your FANG accounts. All of them.

"As for languages, the future of computing is JavaScript (except for the lowest and most performance-sensitive layers, over which the Rust Evangelism Strike Force has an unshakable claim". You mentioned AI/ML both of which are deeply embedded in Python ecosystem though R is still the choice of academia. JS is and will continue to be a client only Tech stack for ML because of it's lack of a NUMPy like Math library. Between friends you should also add Python to your arsenal of languages to learn.

I have a feeling that will all change once the data community gets wind of TypeScript.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact