This is what Wisdom means: To be changed without the slightest effort on your part, to be transformed, believe it or not, merely by waking to the reality that is not words, that lies beyond the reach of words. If you are fortunate enough to be Awakened thus, you will know why the finest language is the one that is not spoken, the finest action is the one that is not done and the finest change is the one that is not willed. –Anthony de Mello, One Minute Wisdom
What I cannot create, I do not understand. –Richard Feynman
Do not spoil what you have by desiring what you have not; remember that what you now have was once among the things you only hoped for. –Epicurus
Inspiration is for amateurs; the rest of us just show up and get to work. All the best ideas come out of the process; they come out of the work itself… Every idea occurs while you are working. If you are sitting around waiting for inspiration, you could sit there forever. –Chuck Close, Face Book
A reward system based on ego satisfaction and reputation optimizes for interesting, novel work. Everyone wants to be the master architect of the groundbreaking new framework in the hip new language. No one wants to dig through dozens of Java files for a years-old parsing bug. But sometimes that’s the work that needs to be done. –Stuart Sierra, Apathy of the Commons
Love truth, but pardon error. –Voltaire
The risk of a wrong decision is preferable to the terror of indecision. –Maimonides
Everyone knows (or perceives) that technical debt is generally a bad thing, but why is that the case? This article takes a nice approach by looking at various causes of technical debt and then recommended solutions for each.
http://jakeyesbeck.com/2016/03/06/the-real-cost-of-technical-debt/
Among the on-going debates about roles and responsibilities in IT is the perennial discussion about whether architects should write code. This thorough analysis considers an interesting option of architects who spend most of their time socializing principles and interacting with other team members to build understanding of the architecture.
http://ithare.com/knowledge-sharing-architects-as-an-alternative-to-coding-architects/
IEEE has released their third annual survey of programming language popularity and the top three languages, respectively, are C, Java, and Python. This marks the first time that C edges out Java for the top spot and Python jumped over C++ to take the bronze. Most interesting (to me!) is that the R language for statistics and data science landed in the #5 spot. The article is interactive, so you can slide-and-dice the results to your liking.
http://spectrum.ieee.org/computing/software/the-2016-top-programming-languages
With the recent backlash against the agile practices and methodologies, this article examines how organizations can be agile versus “doing agile”. The article emphasizes that agile is more about mindset and philosophy and not about tools and process.
https://www.infoq.com/news/2016/07/paradigms-truly-agile
Most of the industrial economy is predicated on the notion of economies of scale: the cost per unit goes down the more units made. However, software development turns this concept entirely upside down. This article eloquently explains how software is different with respect to economic factors.
http://allankelly.blogspot.com/2015/10/software-has-diseconomies-of-scale-not.html
While the title of this article is a little bit provocative (probably intentionally), it offers some good points (no pun intended!) about the trouble with using story points to estimate size/complexity of user stories. The bottom line is that estimation (whether it’s in points or some other unit of measure) should focus on building consensus on the team about what it will take to achieve the objective.
Last month, we featured Mary Meeker’s annual list of hot technologies. This month, we have another summary report from Evans Data about the top technologies on developers’ radars.
One of the keys to successful and efficient development is good communication. And the interaction between testers and developers is one of the most important areas to ensure that the communication is good. This author provides some tips on how improve the tester-developer relationship.
http://techbeacon.com/joe-colantonio-how-get-testers-developers-working-together
In yet another salient example of how important software is in almost all aspects of life now, we learn that a 15-year-old defect in the statistical analysis software used in fMRI cluster analysis calls into question the validity of results. Fortunately, the impact is (apparently) not relevant to treatment, but it seems odd that results would not be validated for more than a decade to determine correctness.
http://www.theregister.co.uk/2016/07/03/mri_software_bugs_could_upend_years_of_research/
Doubtless that you are familiar with Voltaire’s aphorism, “The perfect [best] is the enemy of the good.” This is probably nowhere truer than in programming and development. And while many of us tend to have perfectionist streaks, we must make peace with the fact that delivering good value is more important than fixing all of the little warts.
https://www.exceptionnotfound.net/code-is-never-perfect-code-is-only-ever-good-enough/
Certainly, it’s obvious to most readers of this newsletter that writing good software is no mean feat. This article explains, from the mathematical perspective, why even the simplest of programs is exceedingly difficult to prove to be correct.
http://blog.paralleluniverse.co/2016/07/23/correctness-and-complexity/
What does the career outlook for software testing look like in 2016? According to this summary of report based on a survey of over 500 testing professionals, the future looks bright. While tester roles are changing (or, more accurately, will continue to change), 3/4 of respondents said that independent testing is still an important role on teams.
https://dzone.com/articles/the-state-of-the-software-testing-profession-repor
PostgreSQL has really changed the landscape of open-source relational database systems with many great features to simplify data analysis, while retaining the familiarity of SQL. If you are just getting started with PostgreSQL (or want to dip your toes in the water on the advanced features!), there’s no better way than through these exercises. This interactive site allows you to enter your answers to the questions posed and even get hints, if you’re stuck. And the content runs the gamut of basic (beginner) SQL to advanced features.
If you build anything using Amazon Web Services (AWS), such as the S3 storage platform, this site is a must-have for you. It provides simplified documentation for all of the AWS APIs, including brief descriptions of each method. And, of course, it links to the official AWS documentation if you need more details.
At one time or another (and even in this newsletter!), you’ve probably seen or used Venn diagrams to show how the SQL joins work. This author says that we should instead simply rely on our intuition about sets for understanding. What do you think?
https://blog.jooq.org/2016/07/05/say-no-to-venn-diagrams-when-explaining-joins/
Everyone has need to undo a commit (with or without push) to a Git repository at one time or another. This single workflow graph shows the Git commands to reverse your actions.
https://github.com/nickdesaulniers/git-dot
One of the new buzzwords making the rounds in development and devops circles is “serverless architecture”. The whole notion itself is confusing and fraught with misinformation. This excellent, comprehensive article explains the concepts and uses the de facto standard of AWS Lambda to illustrate the ideas.
http://martinfowler.com/articles/serverless.html
Google’s Go language continues to gain ground in the systems programming arena and now it’s moving further in web development, as well. This detailed tutorial shows how to use Go and several other open-source tools to quickly build microservices using the Bauhaus approach.
http://nicholasjackson.github.io/microservices/go/building-and-testing-microservices-part1/
We’ve mentioned before that technology workers tend to have a higher rate of imposter syndrome. However, just knowing about it, doesn’t necessarily help you correct it. This article gives some specific suggestions for how to turn your thinking around when those self-doubts start sneaking in. Although you might not want to banish some of those thoughts completely.
http://www.wsj.com/articles/steps-to-turn-off-the-nagging-self-doubt-in-your-head-1465838679
Seattle tops the list of Glassdoor’s annual survey of cities with best pay for developers. However, you’ll find some (perhaps) surprising places in the list, including Madison, WI and Raleigh, NC which made the top 5. One of the nicest features of the list is that it’s based on salaries adjusted for cost-of-living, so you can make apples-to-apples comparisons.
https://www.glassdoor.com/blog/25-best-paying-cities-software-engineers/
Looking to make the transition from development to management? This article gives some sage advice about the fundamental mindset change that you must make around the definition of “productivity” and how it now must be measured by the achievements of your team. He notes that this is often the most difficult shift for technical workers in moving to management.
http://www.tombartel.de//2016/07/05/recalibrate-your-productivity-sensors/
When accepting a new position, do you negotiate with the hiring organization for better salary or benefits? According a survey of over 5000 tech workers, almost half do and almost 60% of those with 10+ years of experience do. And you always need to know the “rules” for how to negotiate, if you decide to do it.
https://www.comparably.com/blog/whos-negotiating-their-salary-in-tech/
Agile development methodologies have seemed to given “schedule” and “deadline” a decidedly negative connotation. For example, consider the #NoEstimates movement. In this article, the author makes a good argument about the value in schedules and routine from the perspective of allowing you to have a life outside of work. And his argument probably dovetails nicely with “Good Enough” philosophy.
http://nickjanetakis.com/blog/schedules-arent-a-constraint-on-life-they-let-you-live-it
In response to Wired Magazine’s article The End of Code (which we featured in the June 2016 issue), this author debunks several myths that machine learning and artificial intelligence are going to put developers out of work in the next 5 years. While it’s true that technology is disrupting low-skill jobs, for the foreseeable future, someone (a person!) will be needed to write code.
http://blog.thefirehoseproject.com/posts/end-of-code/
Technology pundit Jean-Louis Gassee says that the Verizon-Yahoo merger is doomed to failure due to the vast differences in corporate culture between old-school telecom providers and content providers. He doesn’t pull any punches in his dislike for telecom providers. And doubtless that you’ll read any other articles about this merger that have both “mendacity” and “necrophiliac” in them.
https://mondaynote.com/verizon-no-we-cant-become-dumb-pipes-ddab2b41a2d8
Robomongo is a cross-platform GUI for working with Mongo DB NoSQL database that expands on the familiar Mongo DB Shell by supporting multiple shells in tabs, autocompletion, tree view of JSON results, and more.
Visual Alchemist is a minimalist, easy-to-use data modeling tool built in JavaScript and Python (only for live database interaction). It doesn’t require any special installation or configuration; just download it and open the index.html file. It allows you to build your table definitions and visually create key relationships. With the Python module, you can push your model to your MySQL database.
https://github.com/prahladyeri/VisualAlchemist
If you like the functional programming paradigm of Scala, but still write a lot of native Java code, then Halva might interest you. Essentially a syntax translator, it allows you to write your Java applications using almost all of the idiomatic Scala constructs and methods in any Java class.
https://github.com/Randgalt/halva
Even though WiFi is ubiquitous in most places, there are still plenty of places where you still have to plugin to get Internet access. SimpleRT is an open-source reverse tethering utility for Android devices, which allows you to share your computer's internet connection with your Android device via a USB cable. Just plug in your USB cable and run the utility on the computer and Android device. And it doesn’t even require that you have ADB installed or that your Android device be rooted.
https://github.com/vvviperrr/SimpleRT
If you use the excellect MyBatis ORM/data-mapper tool for Java, Empusa is a great add-on for it. Empusa allows you to take an existing database and, via JDBC, generate a full set of DAOs, data mappers, and MyBatis configuration files for the database. It’s a real time saver when starting out development from a given data model.
https://sourceforge.net/projects/empusa/
Feeling overwhelmed by the proliferation of JavaScript frameworks? Well, maybe it’s time to return to those thrilling days of yesteryear with this MVC web framework written in Fortran 90. You might sneer, but it has everything you need, including support for Jade templates and SQLite database.
https://github.com/mapmeld/fortran-machine