Excitement is no substitute for competency. Remember which is more important. –Steve McConnell, Code Complete, p. 832
The major problem of life is learning how to handle the costly interruptions. The door that slams shut, the plan that got sidetracked, the marriage that failed. Or that lovely poem that didn’t get written because someone knocked on the door. –Martin Luther King, Jr.
Bad programmers have all the answers. Good testers have all the questions. –Gil Zilberfeld
You will never reach your destination if you stop and throw stones at every dog that barks. –Winston Churchill
The true wisdom on which we ought to set our eyes is perfection, which consists in union with God by love, according to the saying of the Apostle St. Paul: 'Above all I commend to you charity, which is the bond of perfection', and joins and unites us with God. –Alphonsus Rodriguez, Practice of Perfection and Christian Virtues (1609)
Far better an approximate answer to the right question, which is often vague, than an exact answer to the wrong question, which can always be made precise. –John Tukey
Much of what gets attention in software development circles on the Internet focuses on startup environments and other “high-speed” or fast-paced situations. However, many of us (perhaps most!) work in enterprise application development jobs. This article does a nice job of explaining why acquisition and development seems slow and offers some structural changes to help improve speed and agility.
https://zwischenzugs.com/2018/10/02/why-are-enterprises-so-slow/
I have concluded that if you have insufficient information that make a reasonable estimate on development work, you should simply not make any estimate. However, this article has given me reason to reconsider. The author makes the point that if you use estimation properly, such as to quantify risk and uncertainty, rather than to predict completion, bad estimates can provide useful information and can then effectively be revised during the process.
https://ntietz.com/2018/08/31/estimates.html
Undoubtedly you know about the Agile Manifesto, but perhaps you haven’t seen the Minifesto. It’s a developer’s personal principles for minimalist development. While many of the concepts fit into the agile philosophy, they go beyond it to emphasize the objectives and outcomes of productive development rather than the process.
Any application that has been around for a while will have incurred some technical debt: outdated framework, bad code, etc. But, as a manager, how do you decide when to pay the technical debt. This author explains some of the principles, starting with measuring the impact of the technical debt.
https://hackernoon.com/for-cto-when-is-the-time-to-pay-technical-debt-65343f18e5e4
Does your team struggle with getting technical debt work prioritized highly enough? This article provides some good ideas about how to sell the importance of “sharpening the saw” to your product owner and stakeholders.
https://gojko.net/2018/08/30/sprints-marathons-root-canals.html
While test-driven development (TDD) certainly has its detractors, for many development cultures and methodologies, it’s a fine principle for ensuring good code and preventing regression problems. This article explores some of the benefits and demands of the discipline engendered in TDD.
https://medium.freecodecamp.org/8-observations-on-test-driven-development-a9b5144f868
Undoubtedly, this article has sensationalized the situation around the risks of modern life due to our increasing dependence on automation and the algorithms behind them. Nevertheless, for developers and testers, it also serves as a reminder about the importance of understanding the potential consequences of our work, that applications and systems are tools, and that we need to think of the big picture beyond the specific bits of code we work on.
https://www.theguardian.com/technology/2018/aug/29/coding-algorithms-frankenalgos-program-danger
Typically, we hear about problems with microcode in cars’ control systems, but this one is different. In this instance, a programming error on the assembly robots resulted in missing spot welds, which has caused the automaker to scrap almost 300 vehicles.
If you are new to Node.js, it can be daunting to get your head wrapped around the idea of JavaScript on the server and how you would use it. This excellent, comprehensive tutorial explains the concepts and how to get started.
https://www.raymondcamden.com/2018/08/10/nodejs-for-the-nonnodejs-developer
Databases are ubiquitous in application development, but often we don’t think about how the design of our database, such as the level of normalization, affects performance. This comprehensive tutorial looks at how joins and related characteristics of a database impact query performance. It should give you some good tips on how to construct a good database design and to properly index it.
https://www.brianlikespostgres.com/cost-of-a-join.html
Ray-tracing algorithms have a legitimate reputation for difficulty and complexity. If you want to learn the basics of this technology, check out this step-by-step tutorial that uses simple JavaScript constructs to teach you how it all works.
https://tmcw.github.io/literate-raytracer/
Memory leaks tend to be one of the more insidious types of problems in Java applications, because they are often hidden. This article explains the situations that result in them and how to prevent them through good coding practices.
https://stackify.com/memory-leaks-java/
Idempotence is a fancy word (borrowed from math) that essentially means that your application (or, more often) web service should respond with the same output/results when using the same inputs. This article explains it very well by comparing non-idempotent and idempotent solutions to a given example.
http://cloudingmine.com/idempotence-what-is-it-and-why-should-i-care/
If you’ve worked in an open-plan office, you probably already anecdotally know that they don’t do any of the supposed things to promote collaboration, improve communication, etc. Now, researchers at Harvard Business School have demonstrated empirically that not only does productivity suffer, but counterintuitively so does collaboration and communication.
Technological disruption has happened for eons and AI is simply yet another such technological change. According to this author, most of us don’t need to fret over the possibility of AI taking our jobs soon, because it’s just not good enough at many things yet, particularly jobs requiring judgement of some type.
One of the conundrums of the technology job market is that jobs usually require experience, but how do you get the needed experience to begin with? This startup founder says that instead focusing on the technical dimensions, you should concentrate on the “fit” of the candidate in terms of basic ability, motivation, collaboration with co-workers and potential for development/growth. Quite a refreshing perspective in the world of “measurement-based” hiring.
https://leonardofed.io/blog/startups-hiring.html
One characteristic of professionalism is continuous improvement. Programming requires that each of us improve both technical and “soft” skills. This article distills key principles from several top developers and experts.
https://www.7pace.com/blog/become-a-better-programmer-skills-development
This article gives a broad, yet comprehensive retrospective on the technology developments in the ISP environment since 2008.
http://www.potaroo.net/ispcol/2018-06/10years.html
Optical networking technologies dominate the transport networks of most long-haul and metro telecom providers. But how much do you know about how they work. This comprehensive, but (mostly) non-technical introduction will help you understand the key technologies and principles.
https://www.nanog.org/sites/default/files/Steenbergen.Everything_You_Need.pdf
Fizz, substantially inspired by Prolog, is fundamentally a language targeted for AI and machine learning applications. Some of the interesting features of the language are the strange natural-language orientation, functional programming characteristics, and fuzzy logic capabilities. Source is not available yet, but the author provides Linux and Mac OS X binaries.
Pinpointer is a Firefox browser extension that allows you link to specific content within a web page. And the links that are created will work in any browser, even if it doesn’t have the Pinpointer extension, by falling back to the main page itself.
https://bengoldsworthy.net/program/pinpointer/
Nodebook is a lightweight REPL for JavaScript/Node.JS that runs locally in your web browser allowing you to write JavaScript code, including server-side code using Node.JS and its libraries, and see the results immediately in split-screen notebook. It is like Jupyter notebooks for Python but implemented entirely in JavaScript. It’s a great tool for quickly testing ideas in JavaScript.
https://github.com/netgusto/nodebook
Doubtless that you visit web sites with annoying banners or other page elements. ekill, inspired by the ubiquitous X/Windows xkill utility, is a Google Chrome extension that allows you to click on these elements to remove them from the page. Simple and effective.
https://github.com/rhardih/ekill
Fire is a tiny utility to execute “End Process Tree” on an application. Just select (set focus to) the application that you want to terminate and press <Shfit>+<F4>. It will prompt you to confirm terminating it. That’s it! Complete C# source code is available.
https://github.com/LewisTehMinerz/Fire
From the lighter side of science comes this little gem. You’ve probably observed that breaking a piece of dry spaghetti noodle results in three or more pieces instead of just two. Thanks to some inquisitive scientists we know why. Not be too much of a spoiler, but the “trick” is to twist the noodle while bending, but you have to twist it 260°! Just reading about this makes me hungry!
http://news.mit.edu/2018/mit-mathematicians-solve-age-old-spaghetti-mystery-0813
Everyone has their personal favorite editor or IDE. But have you considered using the venerable (or just old!) MS Paint for development? Clearly a tongue-in-cheek tool, it’s a real thing that runs OCR against an image (screen shot, etc.) and converts the output to a source file.
With flu season just around the corner, you might want to take heed of some of these 15th-century remedies for various maladies. It even includes a formula for invisibility.
https://www.laphamsquarterly.org/roundtable/medieval-wellness-tips