What, then, is time? If no one ask of me, I know. But if I wish to explain to him who asks, I know not. –Augustine of Hippo
Pain is inevitable. Suffering is optional. –Haruki Murakami, What I Talk About When I Talk About Running
While this article is directed mainly toward game developers, the concepts apply broadly to any domain of programming. The author makes the point, using relevant, specific examples that your job is to provide a working application that meets your customer’s need and not to develop “neat” tools or re-invent the wheel in the contexts of libraries, utilities, etc. He emphasizes that you should take advantage of available tools and libraries, not try to out-smart those developers by building your own.
http://howtomakeanrpg.com/a/not-your-problem.html
Do you think that you are reasonably good at task estimation on your development projects? This article says that most teams fail to use familiarity with the task and experience with similar tasks in the past as good predictors for the validity of the new estimates.
https://www.linkedin.com/pulse/most-project-managers-ignore-huge-aspect-task-maioli-mackeprang
You probably know id Software as the company that gave us hit games like Quake and Doom, but this company has had several expert programmers over the years. In this article, founder John Romero expounds on the development principles and practices that made them so successful, many of which are popular today under the “agile” umbrella.
http://blog.felipe.rs/2017/02/25/id-software-programming-principles/
Application development project failure doesn’t get quite as much attention as in the past. Nevertheless, failure (outright and from lack of meeting objectives) is still a problem. This article suggests that traditional project management practices are part of the cause and recommends that smaller teams with more ownership of results should be used instead.
http://blog.mojotech.com/why-products-built-by-large-teams-fail-so-often/
Based on a survey of 3200+ project managers, the PMI’s annual report on the status of the PM profession identified the most important factors in project success. The most important factor is reducing waste; for the first time, respondents indicated that waste has fallen below the 10% threshold.
http://www.techrepublic.com/article/5-keys-to-project-success-according-to-a-pmi-survey/
By now, most of us are keenly aware that the good-paying, post-war industrial jobs aren’t coming back, done in more by automation than anything else. So what kind of job will future generations look to? According to this article, coding looks to have a bright future in replacing some of the lost jobs.
https://www.wired.com/2017/02/programming-is-the-new-blue-collar-job/
Just as the reactive/async programming paradigm has caused a substantial change in development approaches, testing must adapt, as well. This article points out some of the salient aspects and gives suggestions for how to get the most benefit from your testing.
https://daveceddia.com/what-to-test-in-react-app/
Your project is nearing the finish line. What’s left to do? You probably want to have some “end-to-end” tests. But what does that mean and what can I do to ensure that they are good/useful? This article provides some practical tips on not only developing an appropriate end-to-end test suite, but also maintaining it.
https://testing.googleblog.com/2016/09/testing-on-toilet-what-makes-good-end.html
By taking a historical view of development practice, this article (and associated podcast) try to understand why we have bugs in applications to begin with. Moreover, they go on discuss some of the inherent problems considering the debacle with the baggage-handling system at Denver International Airport.
How do you sell management on the importance of an independent test team? Perhaps “productivity” isn’t at the top of (or even on!) your list, but it should be. This excellent article explains how testers not only validate the applications functionality, but improve the results and productivity of the development team. The author especially notes how automated testing (by developers) simply can’t replace effective, motivated testers.
https://codeahoy.com/2017/02/17/testers-make-software-teams-highly-productive/
This retrospective of some of the high-profile software and security failures from last year provides a relevant reminder of the importance of thorough application testing. Moreover, the author explains specifically how effective testing could have prevent (or, at least, minimized) these problems.
https://dzone.com/articles/13-software-failures-of-2016-that-testing-could-ha
JavaScript has some odd quirks, but understanding those oddities is key to writing idiomatic JavaScript. This article explains some of the esoteric, hidden corners of the language that can improve your productivity and ability to understand others’ code.
http://jazcash.com/a-javascript-journey-with-only-six-characters/
By now, you’ve probably heard about immutable objects and that you “should” use them. However, perhaps no one explained the benefits. This article gives some clear explanations of the advantages.
https://medium.com/@0x13a/3-benefits-of-using-immutable-objects-886ca2c56e85
Most online (and offline) typing tutor applications emphasize typical writing. SpeedCoder is specifically for programmers/developers, offering practice sheets in 10 different programming languages. You can even upload your own code and use it for practice. And the whole thing is free.
Not everyone will need to know about the Unix/Linux /proc file system, but understanding will almost certainly make you a better developer, especially if you use new systems languages like Go or Rust, by helping you comprehend how the OS manages the various processes and how it actually runs your application.
https://fredrb.github.io/2016/10/01/Understanding-proc/
Let’s face it. The JavaScript development ecosystem is complex, even for those with a good deal of experience. If you are just getting started with some of the latest and greatest JavaScript technologies, like React, ES6, etc., then this tutorial helps you get the various tools for both back-end and front-end JavaScript development installed and working together, starting from the very beginning with installing Node.JS and NPM.
https://github.com/verekia/modern-js-stack-training
If you’ve ever used a GUI running on Linux or Unix, chances are very good that you interacted with the X Window System (a.k.a. X11), even if you didn’t know it. X11 is the de facto standard graphics platform for Linux/Unix. This interactive tutorial, which features real X11 displays embedded in HTML5 Canvas element, explains without a lot of technical jargon how the platform works and how the various pieces fit together.
https://magcius.github.io/xplain/article/
Do you know someone who is simply more productive than everyone else in your organization? Have you wondered how he/she does it? This list should give you some tips for habits to improve your own productivity and perhaps even your overall well-being.
https://www.linkedin.com/pulse/surprising-things-ultra-productive-people-do-every-day-bradberry
How often do you consider the legal or ethical consequences of the work that you do as a developer or other technology worker? As software becomes more ubiquitous, but often more hidden, these factors are more than just philosophical abstractions. This article looks at how others deal with some of these dilemmas.
http://www.businessinsider.com/programmers-confess-unethical-illegal-tasks-asked-of-them-2016-11
The creator of the Ruby on Rails framework has caused a groundswell of support in his opposition to using ad hoc programming tests in interviews. Many other prominent developers have lent their support to the cause by admitting that they have to “Google it” to remember some basic concepts.
Still thinking about what you’re going to do in 2017 to improve your skills? Regardless, this seems like some good advice: learn machine learning. The data science field and especially machine learning are exploding and everyone needs some background in this. To get started, you may want to browse the machine learning links on Pinboard.
Most readers of this newsletter are familiar the difficulty and complexity of measuring and evaluating developer performance. (Hint: Don’t grade based on lines of code!) But how should you assess whether an employee (or you!) are doing well or not? This article provides some great principles and context. The bottom line (according to this author) is that it’s the soft skills that are most important.
http://blog.professorbeekums.com/2017/01/how-do-you-know-developer-is-doing-good.html
In almost every case, at some point in your technology career, you will come to a fork in the path where you must choose between a technical track or a management/supervisory path. For those who opt for the technical path, most often the first stop is as a “senior” developer, where you act as a coach/mentor for other developers. But many times the role of senior developer is ambiguous and variable from organization to organization. This article gives a broad perspective on not on the “qualifications” for the senior role, but what the role could/should mean.
http://blog.professorbeekums.com/2016/12/what-makes-senior-software-developer.html
Grafitti is a free analyzer for Java JAR files that gives you nicely-styled HTML output showing the number of classes, interfaces, and abstract classes, Java version, Maven and other dependencies and more. It’s available as an online tool (just upload your JAR file) or as a downloadable utility for offline use.
Working on multiple systems is commonplace in development today. And often it’s useful to be able to quickly share your clipboard across various systems. LANClipboard is a small, single-executable client-server that does just that. It even allows you to password-protect the server (sender).
https://github.com/jlxip/LANClipboard
Sophie is a cross-platform (binaries are available for Windows, Linux, and Mac OS X) browser and administration tool for Solr indexes. You can list and search your index documents, modify the schema, add and update the index, and more.
https://github.com/fengtan/sophie
The Visual Studio Code editor is an excellent, multi-purpose editor for Windows. This site provides ports for “regular” Linux (both APT and YUM packages are available), as well as special builds for Chromebook (running Crouton) and Raspberry Pi.
We often think that entrepreneurship is a modern creation. But this article points out that someone is always out to find that something that you just must have. Kind of reminds me of those vintage ads that Wendy’s restaurants used to have on their tables.
http://www.collectorsweekly.com/articles/the-oddest-doohickeys-of-industrial-age-entrepreneurs/
Doubtless that you’ve been accosted by the “Windows error” browser pop-ups on your forays across the Internet. This guy took the scammers on in a way that is both hilarious and incredibly effective.
http://jollyrogertelephone.com/i-am-going-to-eradicate-the-inbound-windows-support-scam/
In what must be one of the strangest uses of technological indirection, this hacker demonstrates the ability of the Wine platform to run on the Windows Subsystem for Linux (WSL) under Windows 10. Now I just have to figure out how to get it to run on Docker!
https://woafre.tk/2017/02/08/wsl-wine-runs-on-it/