Courage is the supreme virtue, because it is the guarantor of every other virtue. –Bergen Evans
Nothing so bolsters our self-confidence and reconciles us with ourselves as the continuous ability to create. –Eric Hoffer
Patience is the companion of wisdom. –Saint Augustine
You have to learn the rules of the game. And then you have to play better than anyone else. –Albert Einstein
I would therefore like to posit that computing’s central challenge, “How not to make a mess of it”, has not been met. On the contrary, most of our systems are much more complicated than can be considered healthy, and are too messy and chaotic to be used in comfort and confidence. –Edsger W. Dijkstra, The end of Computing Science?
However beautiful the strategy, you should occasionally look at the results. –Winston Churchill
Programming is art built on top of logic. –Erika Heidi, The Art of Programming
Return to top
Michael O. Church is one of my favorite development bloggers, because he offers well-considered, thoughtful observations on the practice of developing software. While I don’t necessarily agree with all of his positions in this article, he does concisely outline some of the problems, especially from the perspective of front-line programmers. Some observers suggest that agile and scrum are not inherently bad, but poor application of the techniques is the real problem.
It should be axiomatic that your application can only be as good as the requirements that define it. Accordingly, this article explains the importance of clear, detailed user stories with valid acceptance criteria by using a three-step process of asking questions, outlining the story, and only then writing the user story in the formal language.
This article is almost certainly controversial, but the author raises a very relevant point about the importance of understanding the business need and avoiding projecting our own (unfounded) beliefs on the application we are building. He emphasizes that agile methodologies tend to unduly enable the later.
We seem to hear quite a bit about technical debt, but most of it seems anecdotal and not very well quantified. This research report puts some hard facts behind the concept based on a broad survey of programmers and development managers. The most significant finding was that architectural choices have the greatest influence on technical debt.
Unless you’ve been hiding under a rock for the last several years, you know that NoSQL (which means different things to different people!) continues to grow in both market and mind share. However, traditional RDBMS still dominates. This article looks at the shift and makes some predications about how this plays out in the long run.
Functional programming (FP) can sometimes seem rather esoteric. While many articles focus on advantages like lazy evaluation and concurrency, this article examines FP from the perspective of how it can improve correctness of implementation and testability, which are certainly quite practical applications of the paradigm.
According to research of a variety of projects, the majority of project failures are due to poor estimation of cost, effort, and/or duration and poor business decision making at the beginning of the project. The authors say that among other things standardizing on terminology with respect to terms related to schedule and avoiding using them interchangeably can help project success.
Certainly, the Healthcare.gov debacle will go down as one of the great IT failures of the 21st century. But here is the story of a small team working out of a house in suburban Maryland that rescued the project and re-built a functioning site using agile techniques.
Agile development methodologies are great, but just as with any technology solution, they can only go so far. This article emphasizes that agile processes can’t compensate for poor scope definition or design, insufficient requirements and the like.
Return to top
Your customer has a reasonable expectation that you deliver a high-quality application to them. Nevertheless, defects are an inevitable consequence of the development process. So how do you strike a balance between the cost to fix these problems and your customer’s business needs? This article gives some practical advice on framing the issue.
Most readers of this newsletter know that I’m a strong proponent of independent testing groups. Here’s another perspective on developer versus QA testing that emphasizes the empirical evidence that QA testing substantially reduces likelihood of critical defects in the released application.
Software tester is a key role on any development project. However, sometimes, testers get less than fair treatment by other team members. This list of suggestions from software testing expert Jonathan Bach will help you foster the respect you deserve and need.
Hemingway famously said, “Never mistake motion for action.” And, as developers, we need to be doers. However, this article suggests that many times we view testing as a “passive” process and, therefore, avoid doing it.
This blogger responds to the common Internet meme that “all software is broken”. He offers some great perspective on the success of software and concludes with the observation that QA plays a key role in development of good software.
The pace of development continues to speed up and, accordingly, cycle times shrink. This excellent article from the Quora development team explains several of the techniques that they use to ensure good quality in a rapid environment. My favorite is how they automatically assign code reviewers when specific files or modules are changed.
Return to top
Maven has essentially replaced Ant as the de facto standard for Java (and many other JVM-based languages) build tools. This brief guide will help you get your first Maven build process set up and includes specific instructions for how to use Maven in Netbeans, IntelliJ, and Eclipse.
The web is chock full of style guides for most any programming language that you can think of, but you’d be hard-pressed to find one for SQL queries. This comprehensive, well-structured guide for SQL covers just about all of the topics that a developer would need to write consistent SQL syntax and DML. It may even set you on your way to becoming a data architect!
This brief (49 pages), free book (PDF) introduces you to the concepts of functional programming using the familiar Python programming language. Each concept is demonstrated with code. Topics include lambdas, closures, lazy evaluation, higher-order functions and more. Likewise, the author shows how to avoid using imperative programming in Python to adapt to the functional paradigm.
Think you are a regular expression expert? On this site, you can
prove it (or not!). It gives you some sample text and challenges you
to write a regex to match it. But be careful; with this site, you
may end up with
three problems, including burning a lot of time. And
the site has a companion tool to help you build a regex from sample
Return to top
Exercise… Not many of us enjoy it, but we all know that we need to do it. But beyond the physical health benefits, it also has significant psychological and mental health benefits, as well. Learn about how this works.
Sometimes it’s hard to figure out what our specific role within our organizations is. Fundamentally, our business value is to use technology to solve business problems. Certainly, one thing that you can do to bring value as a worker is to relentlessly drive out complexity in all aspects of your job, not just in code, but process, technology, and any other area. This author provides some great insights into how to identify complexity and manage it.
Agile development pioneer Kent Beck explains his process for progressing from an idea to making it a practical improvement in his workflow. The key aspect of the process is persistence in presenting to the idea to others once you’ve validated its value to you personally.
Accenture’s CEO said that they will change 90% of their performance management process, including getting rid of the yearly performance review. It will be replaced by more timely direct feedback, including after completing an assignment, and other techniques. Could this be the start of a revolution in HR policy at other companies? (And, to be fair, Deloitte introduced a streamlined 4-question evaluation form earlier this year.)
After a few years in a technical position, it’s common to face moving into a management role. But most developers aren’t really prepared for such a transition. David Loftesness, the former director of engineering at Twitter, provides a 90-day program, divided into three specific month-long segments, to help adapt to the new role. This article also offers several “do” and “don’t” tips.
While you may think that you learned everything you need to know in kindergarten, this article proves (pun intended!) that even some of the more challenging math classes offer more than you might think. Of course, some of the points are esoteric, but, then again, so is quite a bit of life.
How do you deal with stress and fear? What if you could develop a technique to minimize your autonomic response to fear, so that you can think clearly in your response? This article outlines the process that Navy SEALs, who probably face more than their share of fear-inducing situations, use to remain clear-headed.
Most of the readers of this newsletter recognize that programming and development jobs have somewhat different career paths than other disciplines. This article gives you some specific, practical advice for advancing your career as an individual contributor. One of the most interesting perspectives is that you are climbing a tree (many branches) rather than a ladder.
Return to top
Researchers at UCLA have found a new technique, called “hyperentanglement”, to use quantum entanglement between photons in multiple dimensions, instead of the usual just one (typically polarization), to allow each dimension to carry information. This greatly increases the amount of information that each photon can carry and potentially allows increased communications bandwidth.
Telecom hardware providers continue to up the ante for speed and distance improvements. This one involves an announcement from Alcatel-Lucent of 300 Gbps over 10000 km using a new type of fiber and modulation technique. It seems like the fiber speed/bandwidth race is the new Moore’s Law quest.
Recently, the AT&T-sponsored open-source SDN platform called OpenDaylight has transitioned the tool to production-ready. Several carriers have already deployed it in production and AT&T itself is using it to manage bandwidth for consumer mobile services. Likewise, the Large Hadron Collider’s data management relies on OpenDaylight.
Return to top
Even with flexbox, it can still be notoriously difficult to create CSS to center elements in your layout. This simple, intuitive online generator has you put in a few attributes and it will generate the appropriate CSS ready to paste in to your CSS file. It will even include Internet Explorer-specific prefixes for support back to IE 6, if desired.
This site provides a simple, free REST API for getting information about any country in the world. Some of the details available include capital city, official name in various languages, 2- and 3-character ISO code for country, time zones, international dialing codes, currency, and much more. Great service for your e-commerce applications.
Immutables is a Java library to apply immutability via annotations. This substantially simplifies making objects/classes immutable and provides a consistent, fluent technique for doing so.
Run on Droid is a basic Java REPL tool for Android that allows you to execute code directly on your device or emulator. It has support for all Android SDK APIs and even has buttons for common code snippets, such as dialog boxes, buttons, capture screen, etc.
Q is a simple enhancement to the grep utility, built using the new Rust language and PCRE, that allows you to search files for common regular expressions (regexes), such as IP address, URL, etc. Instead of having to remember the regex syntax, you just define the regex in a configuration file with a name and Q uses that name. You can use multiple names in a search with either logical “and” (default) or “or”. Really handy for search log files!
Coolbarz is in the category of tools that do one thing only, but do it well. It’s a tiny docking toolbar launcher for Windows. It supports multiple desktops (you can even assign toolbars to specific desktops) and can support 1-4 toolbars on any edge of your screen.
Return to top
I love waffles! On most Saturdays, my daughter and I make waffles together. If you’re a geek who likes waffles, then this might be just what you need. Now, if we can just get one with the Vim key bindings on it…
Imagine a world where Donald Trump worked in IT? Well, maybe you shouldn’t do that! Either way, take a look at this humorous Twitter stream (of consciousness—or lack thereof!).
Most of us aren’t Internet entrepreneurs (or even live in Silicon Valley). So if you talk to one of those folks, you may have trouble understanding them. This reference should help!
Version numbering in software development is one of more difficult matters to address. The current de facto standard is called semantic versioning. But this developer recommends that you opt for even simpler solution.
Everybody needs a break from the routine once in a while and sometimes working from home is just the ticket. But you need to have a good reason not to trudge into the office. This site comes to your rescue with plenty of “reasons”, both realistic and not so much, for working from home.
You are probably familiar with ROT13 cipher that simply shifts alphabetic characters 13 places. Not very secure… But now feast your eyes on its “twice as secure” successor: ROT26.
Almost every industry has its own vernacular. Well, here’s a lexicon for the technology industry, with a definite bent toward marketing and the startup scene.
Return to top