The title this week is taken directly from a chapter title in technology journalist Clive Thompson’s newly released book, “Coders: The Making of a New Tribe and the Remaking of the World,” which The New Stack featured earlier this week in a podcast interview with the author himself.
Listening to the podcast on my morning walk, I was so struck by the phrase “constant failure and bursts of joy” that I immediately jotted down some notes in my phone about how programming isn’t just a stream of inspiration and creation (as sometimes, nay often, portrayed on screen), but rather exactly that — an endeavor that entails high and enduring levels of frustration, with more time spent fixing things that have never worked than creating world-changing works of art.
Old coder tip: If something isn't working, assume it's your fault, because 99% of the time it will be. Approach each problem with the attitude of, "I'm an idiot, what have I done wrong." Only blame your tools when you have actual concrete proof that they are to blame.
— Mike Hadlow (@mikehadlow) April 5, 2019
Oh, and then there’s that occasional, punctuated burst of joy, that endorphin hit, that keeps you going.
To quote the write-up of the podcast:
One of the things that Thompson learned that he had not expected of the pervasive feeling of frustration and even drudgery associated with spending hours and hours of working in front of a screen. “Everyone who was good at coding was also amazing at unbelievable levels of frustration,” Thompson said. “Because coding itself is both wildly and insanely frustrating.”
6yo, screaming and exasperated: "I wrote the program *perfectly* with *zero* mistakes, and the computer is doing it *wrong*!"
— Ben Adida (@benadida) April 2, 2019
Several months back, we looked at the promise of visual programming as a gateway drug, and I took issue with the idea that any of these tools really gave their users insight or anything near an accurate picture of what programming really is, precisely because of the lack of frustrating errors and bugs. Along these same lines, there was an interesting debate around a similarly unrealistic expectation of programmers being “in the zone,” like in a movie montage, where they sit down and, techno music blaring, create (again) that world-changing piece of software in one fell swoop.
Perhaps the way many programmers like to think is too fragile to survive in a modern corporate context, where interruptions and interactions are common.
Let alone in Agile work where interactions are primary features.
How would you fix software thinking to be more robust? pic.twitter.com/1T5N3SZgR3
— Tim "Agile Otter" Ottinger (@tottinge) April 1, 2019
In much the same way that any mentally intensive endeavor requires focus, there are techniques, many in the thread seem to argue, that can be paired with your usual routine to ensure you can concentrate enough to achieve your goals and at the same time meet the needs of interacting with others and dealing with distractions.
Sometimes, it’s our expectations — of being “in the zone” or perhaps joyously coding with ease – that get in the way of actually getting things done, don’t you think?
"One of the best programming skills you can have is knowing when to walk away for awhile." – Oscar Godson
— Programming Wisdom (@CodeWisdom) April 4, 2019
This Week in Programming
- Visual Studio 2019 Hits the Streets: Much of the news we’ll look at this week has to do with the release of Visual Studio 2019, which is now available for download. Microsoft writes that the new version of its IDE improves on its predecessor with improvements to the template selection screen, tweaks to code navigation, the addition of a “document health indicator and one-click code clean-up to apply multiple refactoring rules,” as well as debugging improvements and AI-assisted code completion. And more. And with all these new additions, you may find yourself feeling a little lost, so the company has also introduced two new ways to catch up — a free course on Pluralsight available until April 22, 2019, and another free course on LinkedIn Learning available until May 2, 2019. To navigate yourself through what’s new, there’s always the Visual Studio site, docs and release notes.
- Visual Studio 2019 for Mac: Alongside its, uhh, PC release (it feels so antiquated to identify PC versus Mac these days, doesn’t it?) Microsoft also announced the release of Visual Studio 2019 for Mac, which is available for download and incorporates new capabilities that were “shaped greatly by your feedback.” According to the blog post, Microsoft says that the new version not only has IDE improvements, but also “improvements for developers building mobile apps using Xamarin, games using Unity, and web applications and services using .NET Core.” As for those IDE improvements, one is the inclusion of a new C# editor, though it is currently opt-in only while they continue to iron out the kinks. The new editor was “built on a shared core with Visual Studio on Windows, and with native macOS UI” and includes IntelliSense/code-completion and quick-fix suggestions, as well as support for bi-directional text, multi-caret, word wrapping and much more. The new Mac version also allows users to run multiple instances of the IDE, so you can work on more than one thing at once.
- Visual Studio Live Share by Default: One of the neat features recently introduced with Visual Studio was its Live Share, which has been in preview for the last year, but is now included with Visual Studio 2019. Live Share is “a tool that enables real-time collaborative development with your teammates” and lets you “share your code, and collaboratively edit and debug, without needing to clone repos or set up environments.” With the newly available version of Live Code, after a year of user feedback, new features have been introduced, such as read-only mode, support for additional languages like C++ and Python, and guest debugging sessions. Microsoft offers that Live Share “can be used while pair programming, conducting code reviews, giving lectures and presenting to students and colleagues, or even mob programming during hackathons.” The new version also comes with new extensions, such as OzCode, which “enhances your C# debugging experience by offering a suite of visualizations”, and CodeStream, which “enables you to create discussions about your codebase to help build knowledge with your teammates” and the ability to include integrated chat.
I have a keyboard made with felt caps so my code can be statically typed. https://t.co/SOmxE8uHKb
— Marion Daly (@marionpdaly) March 28, 2019
- Visual Studio’s Time Travel Debugging: While, no, you can’t use the new time travel tool to go back and renegotiate your contract to charge per line of code instead (see below), you can use it to help debug your code. The Time Travel Debugging (TDD) tool is available in preview for Visual Studio Enterprise 2019 and gives users “the ability to record a Web app running on an Azure Virtual Machine (VM) and then accurately reconstruct and replay the execution path,” integrating with Microsoft’s Snapshot Debugger. As for that whole time traveling part, Microsoft writes that TDD “allows you to rewind and replay each line of code however many times you want, helping you isolate and identify problems that might only occur in production environments.”
- Visual Studio Extensibility Day: Finally, one last tidbit for you Visual Studio extension developers – the company will be hosting Visual Studio Extensibility Day at Build 2019, which is “a day full of Visual Studio extensibility deep dives, geek-outs, and networking” on Friday, May 10, 2019 at the Microsoft campus in Redmond. Visual Studio engineers will be in attendance for questions and troubleshooting, and attendees will get an update from the Marketplace and see what’s on the roadmap, as well as an overview on what’s new in Visual Studio 2019.
And Is being charged;
Per line of code;
// ‼️ 🤯 ‼️
— Abdellatif Abdelfattah (@Abdella6if) March 30, 2019
- IntelliJ IDEA 2019.1 Too: One more note on the world of IDEs, IntelliJ IDEA 2019.1 has also released this week, now with official support for custom themes, among so many other features. One Reddit commenter praised the ability to choose between redo or delete line for Ctrl+Y on Windows as the most exciting feature, but there are too many other features listed to even briefly recap here. There’s a Kubernetes plug-in, a JVM debugger, a diff viewer, and much more. Check out the blog post for all the details, or just download the latest version and see for yourself.
- Amazon’s Deep Learning Containers: Amazon this week launched its AWS Deep Learning Containers, which are Docker images that are “ready to use for deep learning training or inferencing using TensorFlow or Apache MXNet, with other frameworks to follow.” Basically, they make it easier to use Amazon EKS and ECS to deploy these deep learning workloads with preconfigured and validated container images, which are freely available in AWS Marketplace and Elastic Container Registry.
- Need Docs? We mentioned recently the launch of Google’s Season of Docs, an effort to “bring open source and technical writer communities together” and this week, applications are now open for organizations seeking technical writers to work with. The deadline for applications is April 23, 2019, so if you need documentation for your project, now’s the time to apply.
- One Does Not Simply Exit Vim: By the numbers, there’s a decent chance one of you is stuck in Vim as we speak — according to a blog post on Stack Overflow, one question on the site has now helped a million developers exit the infamously difficult to depart editor, and it’s a fun read to end off on. So take a look.
As of yesterday, I'm no longer a Google employee, which means I can finally disclose a secret that's been weighing on my soul:
I was the one who added a release note to Kubernetes 1.9 stating that the canonical pronunciation of kubectl is "cube control".https://t.co/lqU3MGTip9
— Anthony Yeh (@enisoc) March 31, 2019
Feature image from Pexels.