You are reading Compiler, a software engineering newsletter by Triplebyte editor Daniel Bean that delivers regular reportings and rantings on the industry's top news, trends and interesting players.
Happy weekend, everyone!
What’s the programming language you use the most? Do you love it or hate it? Regardless of your answer, I think it’s probably time to learn a new one, and here’s why.
This week, I investigated the topic of learning new programming languages, and I started with an interview with Nate Ebel, author of Mastering Kotlin. The longtime Android engineer credits learning Python to get away from C++ for driving him to stick with coding while in school. And he told me in greater detail why adopting Kotlin (and mostly leaving behind Java) turned into an important decision that’s kept him happy to continue plugging away for the last several years.
I know some don’t put much weight into this argument, but I honestly think I have more fun writing Kotlin ... For me, it’s more fun to write code if I’m learning as I go, and learning more and more about Kotlin over the years has been a big part of that experience...
[For technical reasons,] I certainly feel that my switch to Kotlin, across multiple projects, has been a positive investment. I’ve seen the enforcement of type nullability lead to more thorough handling of edge cases and improved data flow throughout an application. I’ve seen complex data transformations reduced to a few, easy to read lines of functional code. I’ve seen reductions in the total amount of code in a project after migrating to Kotlin and less code overall to write, review, and maintain.
You can read all of Ebel’s thoughts on this topic in my blog at Triplebyte: Expert.info: Upgrade Your Programming Language to Upgrade Your Love of Programming.
Some other engineers I spoke to about what drives them to pick up or change programming languages had similar things to say about finding happiness and satisfaction through learning new ones.
Software architect Tom Mornini told me he frequently tests out new languages “for taste” to see what grabs his attention. “[I’m] currently five-plus years into a love affair with Go,” he said.
(And if you’re worried about being able to apply your new-language fling to your projects at work, Ebel explained in our chat how to effectively convince your employer when switching languages is good for business.)
“There will be for sure developers that after some years eventually get bored to code in the same language and decide to go for a different one, just for a change’s sake … [and] I think developers should always be curious,” said Ruby developer Anna Costalonga.
Of course, beyond the fun brain-teasing that learning new languages provides a lot of engineers, there are some other more “practical” reasons to never stop adding to your toolbelt, Costalonga went on to explain.
“First of all, a coder’s main language may slowly get less in demand, and there may be more hassle in finding new gigs or jobs with that. Sometimes it’s the same employer that makes you learn new languages,” she said.
But you don’t always have to go completely away from your favorite language to expand your chops. Learning new libraries, like React and Angular in JavaScript, can be new and fun challenges that also open you up to new projects and opportunities, web dev Aphinya Dechalert told me.
“For me, I don't exactly go around learning new languages,” she said. “Even though JavaScript is one language, the multitude of frameworks, libraries, modules, plugins, and whatever else has its own nuances and requirements...
“These flavors find me when my current use case requirements don't fit neatly, and it's easy to explore into other spaces within JavaScript itself. While it all boils down to JS, the differences in architecture, usage and actual implementation can make it seem like they're different languages.”
You’re probably thinking that of course you can make yourself a better candidate in the industry by learning more languages. Everyone knows that. But it’s probably never been more true than now. I’ll refer you back to this enlightening article at Toward Data Science from a couple of weeks ago that does a good job of breaking down how software engineering is actually becoming a more fragmented and complex line of work, evidenced by the fact that programmers and devs are expected to be proficient in more technologies today.
In other words, it’s not really OK anymore to just know FORTAN. And not only because that’s kind of a boring language.
But you tell me. When was the last time you learned a programming language, and why did you learn it? Leave a comment on this post or email me at daniel.bean@triplebyte.com to chime in.
News and Conversations
Apple’s Craig Federighi talks macOS changes, other WWDC news. Marques Brownlee
“I am underappreciated.” Stuff Engineers Say
Rust wants to rescue the world from dangerous code. Protocol
How to save your brainpower and code more efficiently. freeCodeCamp
Tools to improve a web developer’s workflow. UX Collective
I just hit $100k a year on GitHub sponsors! Here’s how I did it. Caleb Porzio
From Triplebyte
Are you making this very avoidable mistake in algorithm interviews? A new blog post at Triplebyte covers ambiguous technical language and how using it in technical interviews can cut away at your credibility and chances at landing the job. Read about getting your “binary trees” as a “binary search trees” straight here.
Debugging is not just a skill you learn. It’s a philosophy. “The best debuggers I've seen have one thing in common: a mindset that allows them to wholeheartedly embrace problems,” writes engineers Joseph Pacecho in his latest blog about the benefits of applying Stoicism to one of the most maddening facets of software engineering. Find out how bugs that stand in the way become the way here.
Some companies hiring engineers on Triplebyte right now:
Check out Triplebyte’s Actively Hiring page to find more companies that are looking for software engineering talent right now!
Tech Update of the Week
Apple announced new app-building tools ahead of the Mac’s move to ARM: The news coming out of Apple’s first-ever virtual WWDC was as real as it gets. The biggest piece: Mac is moving to an Apple-made processor that’s similar in architect to what powers the iPhone and iPad. This will (eventually) make app-building for Apple devices as one-stop-developing as ever, but since Macs with Intel aren’t completely going away for a number of years, things on the coding side are going to need to be a bit more robust for now. Luckily, Apple is trying to cover all the angles with the new Xcode (version 12) that builds a new kind of macOS Universal apps — ones that will work with ARM — by default. In the shadow of that, improvements to SwiftUI and Catalyst were also rolled out. For all the details on the most important WWDC dev tools releases, check out 9to5Mac’s write-up here.
Triplebyte helps engineers assess and showcase their technical skills and connects them with great opportunities. You can get started here.
If you just happened upon this newsletter, subscribe with the button below to get new editions sent right to your inbox.
I'd love to learn Erlang, Go, Rust, Julia, and little languages like Faust, fix-up-crummy-exiting languages like Kotlin , Less, Typescript --- but I'd have to get paid for that. And as pointed out, language is kind of irrelevant: it's the universe of RESTful APIs, overused packages like jquery and numpy, and tensorflow , and of course your problem space's idiolectical coding conventions, testing workflow, and legacy quirks and polyfilling that means that lots and lots of learning needs to go on. And all that learning needs to be compensated.