, 52 tweets, 12 min read Read on Twitter
If I was learning a first programming language today, here are the ones I would consider.

- JavaScript
- Python
- Ruby
- Java
- C/C++

There are a lot of caveats here. I'm ready for the questions and hate.
If you wanna fight about it, at least start by assuming that my reasons for choosing this list are probably different from yours.
I don't think that's true. And either way, I'm not sure whether "in fashion" is an important criteria for deciding whether you should learn a language or not.
Because I don't know much about C#, so I can't speak to it. Again, this is just a list from some rando on the internet. I don't know everything.
I'm mostly staying away from common debates about different kinds of languages. I am interested in the framing of how people learn though. There's no one size fits all here of course. Different people learn in different ways.
In the context of learning, some people would benefit from starting with a more strict language. Even with the headaches and roadblocks early on.

Others would do better getting started faster and feeling more success early on. Then learning from experience why strictness helps.
I've never understood the urge to treat Python and Ruby as interchangable while other languages are "different". Even I used to do it before I realized it made no sense. Learn one or the other. Yes there are tradeoffs.
Looking back on my early CS edu, it feels important that my whole first semester was only pseudo-code. Especially as someone who had no prior experience. No runtime, no compilers, no errors. Just "do you know what this code is supposed to do conceptually?"
We wrote on paper mostly. Which in hindsight was weird for a CS department but awesome as a constraint. The pseudo-code languages had rules. But they were all abstract. We weren't learning by blind trial and error, but by discussion and feedback on every solid attempt.
This experience also colors by nuanced take when people talk about coding interviews and how nobody codes on whiteboards. I agree with the critique, but have always been super comfortable coding on whiteboards.
I also attribute a lot of these early experiences with helping me be comfortable learning new languages. (Not that it was "easy"). I believe it's partially because I started with a strong conceptual mode, rather than having my early models mapped directly to an existing language.
I was gearing up to troll people all day by not telling them why I chose this list. But I'm gonna tell Matt because he's one of the few who asked directly. Also because he's black and from ATL. That should give you a sense for how subjective this is.
The list is in no particular order. Some people assumed it was. I thought of JavaScript first because:

a) it's the language I know best
b) it's the one I personally prefer
c) is in the top 5 languages that will make you marketable and ensure gainful employment for a long time
JavaScript is the most accessible and most easily distributed language in history. The web is the greatest invention in the last several decades and you have to use JavaScript to program a large portion of web clients. (That may change if web assembly takes off)
If you wanna always be able to get a job. You should learn JavaScript and web development. Don't @ me.
I added Python and Ruby next as super popular languages for web development. My list is highly skewed towards web development because that's what I know. The field of computing is much wider than what I know. Keep that in mind, and then remember that this is my list.
Both Python and Ruby are super easy to get into. Pretty accessible to learn. Have big communities and lots of resources. Popular and we'll supported frameworks and toolchains. Pick either one. You'll be fine.
Disclaimers. I don't like Ruby for... Reasons™. I like PHP more than Ruby (version 5 or above only). I put Ruby in and left PHP out because the Ruby community is much more adept at finding Ruby slander and fighting about it. And I don't have time for that shit.
PHP has come a long way. It is a real language now. Versions 6 and 7 are very respectable. Frameworks and toolchains aren't as good. Laravel is legit though.

I just think Python and Ruby have edged out PHP in terms of adoption and marketability for web developers these days.
Java is the other language for web development. It has all of the benefits of community, support, marketability, etc. It is just an entirely different learning experience as a language. And you'll tend to gravitate towards completely different kinds of problems.
The upside of learning Java is that it also comes with learning the JVM as a runtime. The JVM is the most valuable software runtime environment outside of a web browser. Don't @ me.
With the JVM you also get access to other popular languages. You can run very respectable alternative versions of Python, Ruby and JavaScript. Clojure is a great language you can get into on the JVM. If you wanna be able to get a job for a long time. Learn the JVM.
I agonized about whether to put C/C++ on this list. I have real experience getting paid to write code in these languages. I'm not sure I would do it again with C/C++. And I have the least confidence in recommending it here.
But C/C++ rounds out this list as covering the gamut of things you might wanna do in the realm of interesting web development problems. There WILL be a time when someone says "this isn't fast enough, maybe we should rewrite in C".
A large part of the world of mobile devices and other kinds of computers that aren't laptops or servers still want C/C++. Any respectable operating system is written C/C++. Or perhaps something "lower level", but that starts to seriously eat into your marketability.
Also, you probably won't feel like you really know how computer memory works until you write some C/C++, fuck it up real bad, and then fix it. That's only in the context of learning though. No matter what anyone says, you can have a long career without ever learning this.
At some point, other languages like Go or Rust might overtake C/C++ in various parts of the computing space in terms of popularity, support and marketability. That time is still pretty far away IMO. That's why they aren't on this list.
Anyway that's pretty much it. That's how I came up with this list in as full context as I can expand on right now. I hope it makes more sense. Still not interested in fighting about it. But I may answer other questions.
Embedded systems, e.g. phones, tablets, appliances, drones, robots. Also gaming, fintech (banking/payments), AI. These are off the top of my head.
Previous tweet in response to "what kind of jobs would you pursue writing C/C++?"
Perhaps. But feeling enlightened is not a criteria I considered important for making this list. You can't get paid for that.
It is absolutely not. But it is a nice language and people should check it out.

But only Python 3. Don't write Python 2. Don't let anyone convince you to write Python 2. If they wanna pay you to write Python 2, charge a lot.
There is nothing to agree with. I didn't make any statements about right or wrong ways to learn. I said "this is how I learned and these are some of the benefits I think came with it."

Come on y'all. I made so many concrete statements worth fighting about. None of them were about making judgments on *how* to learn programming languages. Stay focused.
What if your "dream job" is any one that is safe, in a growing and reasonably stable industry, and pays really well?

(Yes this is a question about privilege. Yes it is rhetorical.)

Can you suggest a change to my personal and completely subjective list? No, no you may not.

But I agree this isn't optimized for ease of learning. All of these languages are terrible for learning except *maybe* Python.

I'm not sure if there is any kind of standard related to healthcare tech. But I know there's a lot of java. And if it's data heavy, python is pretty popular.
Interesting. Thanks for the correction.

I used to write PHP 5, and I know PHP 7 is a thing. I made an assumption about the evolution of PHP and neglected to validate it. Sorry for the bad information.
If you know that your system will have to do a lot of precise, non-trivial calculations, think hard before choosing JavaScript. It has some real limitations with math. (though it's getting better).
Are you referring to this personal and completely subjective list that I made? I'm gonna disagree.
Making lists on Twitter is free y'all. ❤️
C and C++ "hate" each other in the way Liv and Fitz do. The slash stands.
Again, this list is not in order. If the question is which one would I recommend learning first, I can give a lot of "it depends" but any of these are viable.
When people ask me about coding, I show them JavaScript, and if they hate that, I show them Python instead.

With js, they don't need to setup an environment. I can just show them what their web browser already does. With Python, there's way less syntax to get bogged down in.
I still don't like the significant whitespace in Python. But that's an artifact of my first real programming being in "C-style" languages. I'm all about curly braces and semi-colons. I find that many people who are just learning don't need or want them. They're distracting.
I don't have any perspective on this. Depending on how young, I know there are some languages designed for teaching kids though. Scratch comes to mind. scratch.mit.edu

That'll probably skew towards Python or C/C++. These 2 stretch into much wider territory than web/application development. For networking/security maybe learn bash or Perl scripting? Other than that, I'm not sure. Others can offer more perspective.
I'm winding this thread down. But there are a whole set of people who aren't gonna sleep well if I don't say more things about C# and Swift. I've only dabbled in these languages and I don't know the ecosystems or communities, so take this with a grain of salt.
Both C# and Swift are good languages and quite popular within their ecosystem. The key distinction is that they're tied to a platform and a company. Microsoft for C# and Apple for Swift. That's not a bad thing. But it matters and it's why they aren't on my list.
A big part of the criteria for my list is I'm addressing people who care about the marketability and longevity of the skills they develop. Languages that are largely controlled by single for-profit companies have a different arc than ones that are not.
That doesn't mean you can't have a great career with these ecosystems. It doesn't mean you shouldn't learn them, even as a first language. It's just not the advice I would personally give.
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Marco Rogers
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($3.00/month or $30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!