Duty is for some a nebulous term; for many a requirement, for others a resentment, and for yet others an unknown. –Robert Skimin in the Foreword to James Webb’s “Heroes of the Vietnam Generation”
If the doors of perception were cleansed, everything would appear to man as it is, infinite. –William Blake
Future generations may be as shocked by our promiscuous use of social media as we are by past generations' smoking. –Paul Graham
One of the more embarrassing and self-indulgent challenges of our time is the task of relearning how to concentrate. The past decade has seen an unparalleled assault on our capacity to fix our minds steadily on anything. To sit still and think, without succumbing to an anxious reach for a machine, has become almost impossible. –Alain de Botton, “On Distraction” (2010)
Here’s an item that’s sure to generate plenty of controversy. This research study found no significant difference in between TDD (test-driven development) and TLD (conventional test-last development) in terms of testing effort, code quality, and developers' productivity.
http://dl.acm.org/citation.cfm?doid=2961111.2962592
It seems fair to say that technical people aren’t the best at holding meetings, especially “all-hands” meetings. This author provides a good structure for such meetings, including the motivation and focus of each of the aspects. His formula is celebrating people and their achievements (15%), alignment around mission, strategy, and priorities (60%), and Q&A (25%). He says that Q&A is often sacrificed because management spends too much time on the first two parts. And most interestingly, his approach is for this discussion to be weekly.
I know you’re probably thinking, “What do trains have to do with development?” Actually, much more than you might think. This article suggests a development process based on the concept of reliable and frequent releases, similar to how Swiss trains run. He uses the model that the Swiss don’t run to catch the train, because they know that another will be by soon and that you are to pace yourself in your work.
https://www.promptworks.com/blog/swiss-train-deployments
Despite significant advancements in software development in recent years, estimate remains one of the most intractable aspects of the process. This article emphasizes that peak brain fitness is necessary to be effective at estimation. Ensure that you take appropriate breaks and avoid distractions are just a couple of the suggested techniques.
https://www.infoq.com/news/2016/09/estimation-techniques-psychology
We’ve all suffered through the consequences of bad strategic decisions, either on projects or in the organization at large. But why do intelligent people make bad decisions in good faith? This author says it boils down to a cognitive bias where we mistake intuition for actual reasoning. While this might not prevent all boneheaded decisions, at least you now have an awareness and can hopefully head some of these off.
https://medium.dave-bailey.com/the-silent-cause-of-bad-business-decisions-b95d977b5ca7
We’ve all heard it at one time or another and perhaps phrased in different manners, but the gist the same: Our customer’s want things faster. This author makes and often overlooked point that it’s not always the typical problems of poor vision/scope, insufficient requirements, etc. that cause development that (inevitably?) take longer than expected. Development is inherently difficult and the levels of abstraction don’t always mean simplicity (or brevity) in implementation. https://blog.sesse.net/blog/tech/2016-10-26-09-29_why_does_software_development_take_so_long.html
Regardless of what you think of Linus Torvalds’ “style” in interacting with others, no doubt that he’s a brilliant programmer. This article explores his concept of “good taste” development and how each of us can use it to improve our skills and code.
https://medium.com/@bartobri/applying-the-linus-tarvolds-good-taste-coding-requirement-99749f37684a
This new report from NIST provides good summaries of the various techniques available for reducing security vulnerabilities and other defects from applications. It includes indications about which techniques are most applicable for various situations and application types.
http://csrc.nist.gov/publications/drafts/nistir-8151/nistir8151_draft.pdf
Conflict between testers and programmers seems to be an age-old phenomenon. But, as this article emphasizes, this doesn’t have to be the case. This author offers sound, practical advice for both developers and testers to ensure a healthy, productive working relationship. She even emphasizes some of the things to avoid.
https://www.lucidchart.com/techblog/2016/10/05/developers-and-testers-nemeses-or-soulmates/
Sometimes as testers, we don’t consider how the quality of our defect reports affect the likelihood of a problem being found and corrected. This author explains how and why well-written bug reports ensure your problem gets addressed, as well as increases your value to your team.
Using copious relevant examples, this author explains why understanding concatenative inheritance (that’s a mouthful!) is key to success in programming JavaScript, or any other prototypal inheritance-based language. In fact, the most popular JavaScript libraries, like jQuery and Underscore.JS, are all based on this principle.
Modern web browsers can do many amazing things. Many of the features/functions that previously had to be done with JavaScript can now be handled with HTML and CSS along. This site provides examples of those things in both CSS and SCSS.
As we’ve mentioned before in this newsletter, the modern JavaScript stack is complex and getting more so with each passing day. This comprehensive tutorial gives you a step-by-step process for installing and configuring the popular JavaScript development tools, such as NodeJS/NPM, React/Redux, ES6, and more. More importantly, it shows how to integrate the various tools and shows how they work together and/or depend on each other. Overall, it gives you an excellent understanding of the pieces and how they fit together.
https://github.com/verekia/js-stack-from-scratch
I’m not sure about you, but I have really struggled to learn React/Redux JavaScript frameworks. It wasn’t until reading this article that the light switched on about the concepts and paradigms of this platform, especially around asynchronous JavaScript, started to make sense.
http://georgemauer.net/2016/10/29/why-you-dont-get-react.html
Amazon Web Services (AWS) has become the de facto IaaS platform for organizations of all sizes, despite being notoriously difficult to learn and understand. This independent, collaboratively-developed guide covers almost all aspects of AWS divided up into basics, tips, and gotchas for each.
https://github.com/open-guides/og-aws
Do you keep a to-do list, either officially or informally? If not, this article may convince you of the value, since the simple act of writing something down, even if you don’t look back at it again, seems to help you to remember it and properly prioritize it. Moreover, it also seems that the low-tech method of handwriting instead of keeping it electronically helps, as well.
A new survey says that more than 1/3 of American workers (~55 million people!) are considered freelancers/independent contractors, with almost half of millennials (18-24 year olds) in this category. Most freelancers do it by choice and enjoy the flexibility that it provides.
How many times per day do you get interrupted? What do you think is the impact to your productivity and quality? This article explains that in many cases planned interruptions (we call them “meetings”!) often do as much damage as the ad hoc, asynchronous interruptions.
https://jaxenter.com/aaaand-gone-true-cost-interruptions-128741.html
While I wouldn’t necessarily consider 40 “old”, this author gives some great insights into maintaining a technical career over the long run. He emphasizes that, while enhancing your technical skills is certainly a given to success, developing other skills is key to longevity in programming.
http://www.bennorthrop.com/Essays/2016/reflections-of-an-old-programmer.php
This author suggests that the economics of IP networking may be in some trouble (or perhaps just going through a fundamental shift) in terms of how traffic moves from smaller providers to the core backbone providers.
https://blog.apnic.net/2016/10/28/the-death-of-transit/
gdcp (Google Drive cp) is a simple command line tool that allows you to work with Google Drive via the shell on most any platform. You can upload or download files and even re-assign ownership to another Google account all from the command prompt.
https://github.com/ctberthiaume/gdcp
Searching for packages in Python PyPI package index can be difficult and fraught with error. Yip provides a Pythonic, fluent interface for searching for packages that follows the paradigm of yaourt and pacman from ArchLinux.
Even in the mobile browser view, using GitHub on a phone or tablet can be difficult (if not downright impossible). WeGet is a native Android application for interacting with GitHub in a smooth, efficient manner. It supports browsing repositories, searching within and across repositories, starring/following people, and more.
https://github.com/Leaking/WeGit
Managing your workflow when contributing updates to various source code repositories can be dizzying, especially with the proliferation of open-source hosting platforms, such as Github, Bitbucket, etc. git-repo helps with some of the “impedance mismatch” by providing common commands across the various platforms for checking out, forking, submitting pull requests, and the like.
https://github.com/guyzmo/git-repo
Pushing your code to multiple remote repositories can be a frustrating and error-prone process. With gitp2, a simple (just a single source file in Go) command-line utility, you can push to multiple remotes in parallel with a single command. And it supports ignoring specific remotes, if desired.
https://github.com/chiedolabs/gitp2
A humorous look at some of the pitfalls (real or imagined) of several programming languages. Probably not all that funny if you’re a PHP developer.
https://toggl.com/programming-princess