Culture / Programming Languages

This Week in Programming: Practicing Good Developer Self-Care

26 Apr 2019 12:00pm, by

Came here looking for the best tool? How about some self-care.

Which language are you using for your latest project? That one!? Oh no, that totally won’t work, you should be using this one. And that framework is trash, check out this. And I mean, as far as IDEs go, throw that out the window. Vim for life!

I’m sure that all sounds generally familiar, if a bit exaggerated. Go to a local tech meetup, have a beer or three, and the next thing you know the opinions about what language tops another are flying about. It’s standard to any trade, really, and it just boils down to your usual trash talk. But amidst all that trash talking, we may overlook the fact that it’s more trash than anything else and that what really matters are our personal habits and this new-age-y thing called “self-care.”

Do you get enough sleep at night? Do you frequently get up while working to stretch the legs and get the blood flowing? Do you eat properly and not simply overdose on caffeine and sugar to make it through the day? How about your work hours — are you managing to work just 40 hours a week, or does your schedule more closely resemble the hours protested by Chinese workers, exemplified in the 996icu GitHub repository that refers to working 9 am to 9 pm, six days a week? The name of the repository, by the way, refers to the fact “that by following the “996” work schedule, you are risking yourself getting into the ICU (Intensive Care Unit).”

While benchmarks may indeed prove that one database or language performs faster than another, “Practical TLA+” author Hillel Wayne offers a Twitter thread on this very topic, arguing that “One of [his] most controversial software opinions is that your sleep quality and stress level matter far, far more than the languages you use or the practices you follow. Nothing else comes close: not type systems, not TDD, not formal methods, not ANYTHING.”

Now, before you go arguing that, indeed, your favorite language, type system, what have you, will surely make the difference, give self-care a chance. After all, Wayne provides quite a few links to back up his assertion.

For example, Wayne links to a study on the impact of language choice on code quality which he says doesn’t find that language choice “reduces defects that much.” There’s a study (or two) on test-driven development, and another on the effects of clean code on readability, that he says really find little to prove in the way of benefits. In the meantime, however, there are numerous studies on “things we know have obvious, overwhelming impacts in ALL kinds of fields. Things like sleep.” One finds that chronically getting less than seven hours of sleep “causes dramatic degradation on all mental tests” while another finds that those who work consecutive 50 hour work weeks are less productive than those who work 40 hours. The list goes on, which you are free to review, but Wayne sums it all up in a few tweets.

So, it’s Friday. Turn off that screen and head on outside. Or take a nap. Go for a walk, get some exercise, and learn when to walk away. Maybe even more importantly, take these habits with you into the work week. Your code quality (and your brain and body) will thank you for it. And in the meantime, here’s a quick recap on the latest in the world of what’s going on in programming.

This Week in Programming

  • Rust’s Focus on Governance, Polish, and Finishing Long-Standing Requests: The Rust team committed to following an open roadmap back in 2017, and has released a roadmap for the year ahead each year since. Rust’s 2019 roadmap offers its own, open source project version of “bug fixes and performance improvements” (see tweet above), promising to focus on governance, long-standing requests, and adding some polish to existing features — in other words, keep working on hard problems while also dealing with the people part of a rapidly growing project. The Rust core team has grown from 8 members to more than 100 across various sub-teams within a few years, which can make the people problem equally difficult to the technical ones. Specifically, the Rust team has created a new Governance Working Group, which will be “devoted to working with each team to hone its governance structure and to help pass lessons and strategies between teams.” In addition, they may work to hone the RFC process adopted in 2018. And as far as the “polish” goes, that will focus on compile times, IDE support, working on WebAssembly support, and “improving the reference and laying out the unsafe code guidelines”.
  • GitHub Opens Up Actions Parser, Satellite Scholarship Tickets: GitHub released its Actions feature last October, and now it is releasing an open source parser for the workflow tool, which the company says has been used by thousands of users, but remains limited to “the tools GitHub provided.” “To expand that universe,” they write, “we need to release the parser and the specification for the Actions workflow language as open source.” Both the language specification and parser are available under the MIT license in the actions/workflow-parser repository, with syntax-highlighting configuration files for Vim and Atom under the syntax directory. According to the announcement, “there is a Go implementation, which is the same code that powers both the Actions UI and the Actions execution platform” and “a Javascript parser in development.” And in totally separate GitHub news, the company is now accepting applications for GitHub Satellite scholarships with a due date of 12 pm PT on Monday, April 29 for the big event in Berlin on May 23. Apply here.
  • GitLab 11.10 Works on the Pipes: As we noted when GitHub announced Actions “nowhere in the announcement or otherwise does GitHub use specific phrases like ‘DevOps’ or ‘CI/CD,’ instead opting for words like ‘workflow’ and ‘automation.'” GitLab, on the other hand, is all about continuing to “add features to provide visibility into the DevOps lifecycle,” which it has done with its lengthily-titled announcement this week of GitLab 11.10 with Pipelines on the Operations Dashboard, Pipelines for Merged Results, and Multiline Merge Request Suggestions. The enhanced Operations Dashboard will help give a view into multi-project pipelines, which are common to microservice architectures with code in multiple repositories. The latest version also allows you to run pipelines against merged results, which will “catch errors that would only surface if you had rebased often, allowing for much quicker resolution of pipeline failures and more efficient usage of GitLab Runners.” The final highlighted feature of this release is the ability to “suggest a multiline change, specifying which existing lines to remove, and introducing multiple lines of additions,” but the blog post also notes several others, including “Scoped Labels, a more thorough Container Registry cleanup, Composable Auto DevOps, and the ability to purchase additional CI Runner minutes.”
  • Node.js 12 Arrives: That’s right, the announcement of Node.js 12 came this week, with “faster startup and better default heap limits, updates to V8, TLS, llhttp, new features including diagnostic report, bundled heap dump capability and updates to Worker Threads, N-API and ES6 module support and more.” This release will become LTS in October 2019 and the announcement notes that “Node.js 12 continues the trend of making building and supporting native modules easier.” Read on for the full details.
  • WebAssembly Gets a Package Manager: Wasmer, a startup looking to make WebAssembly accessible outside of JavaScript by creating universal binaries has announced WAPM: The WebAssembly Package Manager, “a new tool that will help you use WebAssembly anywhere.” This release includes a command-line application and a website and package registry at wapm.io, which the company says it hopes “will ease the use and distribution of WebAssembly modules.”

Feature image by Rain Carnation from Pixabay.

A newsletter digest of the week’s most important stories & analyses.

View / Add Comments

Please stay on topic and be respectful of others. Review our Terms of Use.