Herewith notes from the white-hot center of the Internet software profession. Maybe the reality these reflect prevails across other technology territories, but I wouldn’t know. In no particular order:
Videoconferencing · Generally it sucks. There’s Skype ’n’ TeamViewer ’n’ Zoom ’n’ Webex ’n’ our own Chime ’n’ GoToMeeting ’n’ join.me and they all suck in their own unlovable idiosyncratic ways. The visual glitches I can tolerate, but the audio problems make me want to scream; dropouts, static, echoes, the noise of hands softly leafing through a document drowning out any non-booming voice.
In my decades-long career, I’ve used one videoconferencing system that was reliable and almost always Just Worked. It was by Polycom, but then the infrastructure people said “super old school” and replaced it with something modern that often doesn’t. I suspect darkly that the technology is passable but a bean-counter somewhere has refused to buy enough bandwidth to make it sing? Blecch.
Screens · The amount of screen real-estate per geek grows monotonically. Dual-27" screens plus your laptop’s own screen are table stakes, and I’m seeing the occasional massive 50"-plus 4K screen. I asked one guy “How can you use all that space?” He said “I can’t of course, all the stuff I’m actively working on is in the middle third, bottom half. But having everything else within visible reach is such a win.” OK then.
I have to admit that I’m becoming increasingly conscious that the pixels on my curved 34" Dell U3415W are in fact visible, and the contrast between that and my Retina laptop screens is a perceptible irritant. #FirstWorldProblem.
Desks · The proportion that are motorized is higher every quarter. I’d find it hard to live without mine. The mix of people standing and sitting makes the otherwise-dreary rows of software-engineer desks a little easier on the eye, which welcomes disorderly human distributions.
Office space · Since I mentioned it: All the high-tech companies I’ve worked for have resolutely ignored the research I hear about that seems to say putting expensive engineers out on the floor with no separating walls leads to grievous productivity losses. Isn’t this biz supposed to be data-driven?
Diversity · We do work on the problem, but the gender ratios are still not good.
If you can get past that (I can’t) there are grounds for good cheer. Here in Vancouver we draw from the very considerable Canadian talent pool, but our immigration law lets us hire major distributed-systems talent from almost anywhere in the world. The resulting mix actually makes me feel optimistic about humanity; the AWS Service groups that surround me offer visible in-the-flesh proof that there’s plenty of software talent in any ethnic, linguistic, or geographic slice across the membership of Homo sapiens.
I’m amused that when chance lands two engineers on a problem who happen to share a native tongue, they immediately drop out of English and into Polish or some south-central Han dialect or whatever it is Nigerian geeks speak to each other. There’s this one group near me that has three guys named Muhammad; one them is called by his actual name, then there’s “Mo” and “Momo”. It seems to work, and by the way Momo seems to be the leading expert on AWS Region Build Automation, which is a big freaking hairy deal around here. Protip to the industry: If you’re not recruiting out of West Africa, you’re missing out on major engineering talent.
Darkness · I’m talking about screens. What with the advent of Mojave, light text on a dark background has officially re-entered the GUI mainstream. But more or less all the younger engineers had already switched their IDEs over to light-on-dark. My white-background IntelliJ and Goland screens mark me as a dinosaur.
I’ve cared deeply about typography and presentation for a long time and the issues here are interesting. I freely acknowledge that my preference for dark-on-light is probably an artifact of my having tuned my brain, in my youth, to ink-on-paper. Since screens are, at the end of the day, light-displaying devices, there’s an argument that the natural on-screen design language for typography and information display is light-on-dark. I wonder if there’s quantitative research in the space?
Speaking of IDEs · I guess the big story is the decline of Eclipse from “more or less everybody’s default” to “there are still people using it”. VS Code has momentum but IntelliJ has a plenty of loyalists, and then the front-end tribe are often in Atom and Sublime. I’m happy to report that neither Vim nor Emacs have gone away. But recently our license server was having problems and I couldn’t use Goland and found the Emacs go-mode story pretty weak.
Speaking of languages · It’s no secret that the Internet still runs, more than anything else, on Java. Could be worse, I remember when it all ran on PHP and Perl. And I don’t want to diss Java too much. The tooling story is exceptional, and once your JVM gets properly warmed up, there’s nothing that runs usefully faster. And these days, for new stuff you should spell Java “Kotlin”. Especially since if you let those young pups who won’t get off my lawn use Java, they’ll emit all this Java 8+ stream/lambda stuff that is easy to make indecipherable.
What’s happening out on the front-end frontier, the Cambrian explosion of JS-based technologies, makes me happy that I mostly don’t go there.
On the back end where I live, we’ve got Go and Rust creeping in big-time. I’m no longer surprised when I pull up some package buried deep in our serverless infrastructure and it turns out to be in Go. Well, and for serverless code too, if only because of the fast startup.
If you live in the world of ML or data science, you’re using Python; you don’t have a choice and it’s not terrible.
Then Rust, for when you get close to the metal. There was an internal new-languages thread where someone said “If you can’t tolerate GC, use Rust. Otherwise use Go.” Sounds reasonable. A few zealots are saying everything new should be in Rust because otherwise you’re being wilfullly unsafe. But I like having the runtime manage memory for me, whenever I can get away with it.
Inside the software · REST is still a really good way to piece pieces of the software world together. Of course, what with the rise of HTTP/2 and QUIC, what the programmer thinks of as RESTful requests are something quite other, out on the wire. This feels about like us thinking we’re using x86 instructions on our silicon even though what the circuits are doing is really totally different.
To the extent that interfaces aren’t REST, they’re mostly event streams of one kind or another. Where by “Event” I mean “JSON blob”; by and large good enough. This is the area I’m working on this year, lots of opportunities for improvement.
The good news: Each generation of devs that comes along is a little more test-infected than its predecessors. I still run across islands of ignorance where they think it’s OK to ship code now and do the unit tests later (as if that ever happens), but less and less each year.
Which computers? · Still more Macs than anything else, although there’s an undeniable Windows renaissance. Having said that, even the smart people with the coolest Surface devices are often bitching about problems with things called “drivers” — what are those for, anyhow? — and lockups, and saying “Sorry, just a moment while I get my computer going”.
If I were a little less aged and cynical, I’d be boiling over with anger at Apple’s inexcusable stewardship of the Mac franchise; Gruber’s “D” grade is maybe even generous. This is a product that used to feature instant wake-up (gone), MagSafe (gone), lots of useful I/O ports including SD card readers (gone), a good built-in photo editor (gone), and the world’s best keyboards (gone). It absolutely shocks me that a company can get away with making its product successively worse and then worse again, year after year. Among other things it speaks to how good the core design of MacOS is.
But maybe 2020 is the year of Linux on the desktop?
Comment feed for ongoing:
From: Bob Haugen (Feb 16 2019, at 16:11)
We live in different worlds. I don't know anybody who uses Java anymore. They all use node.js or some other JS on the server. (Which drives me nuts, but I am an old fart.)
Rust is coming on, though. Just not for me. I need to learn Elixir. For a project, not for fun, apparently...
[link]
From: Ross Karchner (Feb 17 2019, at 05:28)
Have any of your colleagues switched to Cloud9 as their primary development environment?
[link]
From: Norman Walsh (Feb 17 2019, at 10:17)
Contrary to Gruber, the latest keyboard has not fixed the issues with repeating keys. It's driving me nuts on my 2018 MacBook Pro. I need to take it into Apple, but they're going to take it away from me when I do and so I keep dragging my feet because that's so inconvenient.
[link]
From: Paul Morriss (Feb 18 2019, at 01:29)
I use Medium so much my finger itched to highlight this sentence:
"If you’re not recruiting out of West Africa, you’re missing out on major engineering talent."
so consider it highlighted.
I'm 99% sure your last sentence is a joke, but you know your stuff so maybe it's not. If you turn out to be right you can take the credit for calling it.
[link]
From: Doug K (Feb 20 2019, at 12:34)
Thank you, an interesting overview from the cutting edge.
"putting expensive engineers out on the floor with no separating walls leads to grievous productivity losses. Isn’t this biz supposed to be data-driven?"
Not when the data conflicts with profits/expenses.. the productivity gains are hard to measure in a KPI or ROI calculation, the expense of private offices is easily determined.
Our company recently remodeled the 30-year old office space and made it significantly worse, with lower cubicle walls and closer packing of people. Most of us have had to buy over-the-ear 'phones for conferencing and customer calls.
light-on-dark hurts my eyes for the most part. Though come to think of it, the old mainframe green screens were light on dark, and I didn't have a problem with those. I still have my terminal emulator set that way..
Linux on the desktop is never happening. I try it every few years, and every time it still requires considerable technical knowledge and willingness to root around on dubious sites for drivers and other bits of code to glue it all together.
There's enough proprietary firmware and scraps of proprietary software in any desktop that a pure Linux install just don't work. Still for enthusiasts only.
[link]
From: Andrew Reilly (Feb 22 2019, at 00:17)
The laptop situation really is terrible at the moment. My last MacBook Pro was so awful that I traded it back to IT for the Windows alternative. It's 14", which is too big to comfortably travel with, but at least the keyboard is good.
If someone could figure out how to host a web-fronted IDE server-side, I reckon I'd happily switch to a ChromeOS device. VS-Code, Atom etc are all Electron-based, which means that the fact that they're hosted on your PC is mostly an arbitrary decision.
As an old fan of the X Windows environment, used to my dev systems being the big-iron in the back room, I can't understand why no-one has got back to that state of nirvana in the last twenty (thirty?) years...
[link]
From: hawkse (Feb 22 2019, at 10:12)
Spot on regarding the Mac. There is plenty hardware out there on par with or better than what Apple currently is offering. OS X is what still keeps people buying the stuff - and brand recognition, of course. If Apple continues on like the last 3-4 years, they'll soon finally get rid of all those demanding users and can at last focus only on branding. Sad state of affairs.
[link]
From: Michael (Feb 26 2019, at 10:43)
Regarding REST, I'm surprised you didn't mention GraphQL.
[link]
From: Ross Reedstrom (Feb 26 2019, at 12:12)
re: linux laptops Dell is making a really nice laptop in the XPS 13, developer edition. Preinstalled w/ Ubuntu, and they're keeping up with updating to the latest LTS. Take a look, especially now that the (finally!) solved the camera-up-your-nose problem.
Chromebooks (linux in google-clothing) have taken over the edu market, and aren't going away soon.
[link]
From: James Cunningham (Mar 25 2019, at 14:13)
A little late to the game here, but ...
For what it’s worth — not much! — I genuinely don’t mind the current MacBook keyboards. In fact, I kind of like them, though I wouldn’t go so far as to say I’m gaga over them. They certainly don’t measure up to the mechanical keyboard I have at my desk, but I mean, of course they don’t. And don’t forget that they have a pleasing clickety clack!
I’ve never understood the massive amount of hate they get. Now touchbar hate, that I could get behind.
—
My coworkers aren’t developers so maybe that explains the difference, but I routinely get “wow, your screen is gigantic” comments about my 27in 4K display. (Brought it in myself, since life is too short to use the company-provided dual 21-inchers.) I’d love to get two of them but I’m afraid folks would start to talk about how crazy I am...
[link]