July 2014 Newsletter
Three: 1. The optimum number of software engineers that can collaborate on a single project. 2. The number of programmers who will write most of the code in a system developed by a team of 24 engineers, two project managers, three group leaders, a quality lead and an office manager. –Russ Olsen, Some Important Numbers For Developers
Have the courage to use your own understanding! That is the motto of enlightenment. –Immanuel Kant
Mixing one’s wines may be a mistake, but old and new wisdom mix admirably. –Bertolt Brecht
I have found that the best way to critique something is to create something better. –Michelangelo
To be able to be satisfied with little is not a failing, it is a blessing—if, at any rate, what you seek is satisfaction. And if you seek something other than satisfaction, I would inquire (with astonishment) into what it is that you find more desirable than satisfaction. What, I would ask, could possibly be worth sacrificing satisfaction in order to obtain? –William B. Irvine, A Guide to the Good Life: The Ancient Art of Stoic Joy
Try not to become a man of success. Rather become a man of value. –Albert Einstein
There is no music in a 'rest' but there’s the making of music in it. And people are always missing that part of the life melody. –John Ruskin
The command line isn't an old technology, it’s just an alternative one that happened to be invented first. –climagic
If you want to lift yourself up, lift up someone else. –Booker T. Washington
Do your work, your best work, the work that matters to you. For some people, you can say, "hey, it's not for you." That's okay. If you try to delight the undelightable, you've made yourself miserable for no reason. –Seth Godin
Among the most highly-touted new features of Java 8 are the introduction of some functional programming features, particularly the addition of lambda expressions. With the many functional languages built on top of the JVM, such as Clojure and Scala, just how functional is Java 8 and does it really matter? This article looks at some of the relevant points.
http://www.infoq.com/articles/How-Functional-is-Java-8
As we’ve noted in this newsletter, agile development (just like any other methodology!) is starting to show some of its limitations. This developer has published a proposal for an evolutionary revision in the style of the Agile Manifesto with an emphasis on collaboration.
Mary Meeker’s annual report on trends in the Internet realm are the closest thing that we have to a crystal ball. This year’s report is not a drastic departure from the themes of last year. In particular, mobile is still the key topic for developers.
http://simplicity.laserfiche.com/content/11-takeaways-mary-meeker%E2%80%99s-internet-trends-report
This article claims that measuring the development process with the objective of ‘improving’ it is inherently flawed. Instead, the author says you should carefully consider what your objectives are and then determine what factors actually reflect that.
http://www.infoq.com/articles/metrics-original-sin
Just like development projects require some planning and assessing of your capabilities, organizations need to take the same steps when preparing to adopt agile development practices. This article gives some pointers about not only assessing your readiness at the macro level, but how to measure preparation for some of the key elements of agile practice.
http://blog.sei.cmu.edu/post.cfm/is-your-organization-ready-for-agile
Most developers are familiar with the concept of technical debt. But how do you explain it to line of business management in a way that helps them understand the importance addressing these key architectural aspects of your system? This article lays out the philosophical arguments to use.
https://medium.com/@joaomilho/festina-lente-e29070811b84
One thing about Scrum that is difficult to learn (and often gets quickly lost by a working team) is what story points actually mean. The key to story point estimation is that they are supposed to be relative measures of size and complexity. This author offers an interesting approach to learning the concept.
One of the things that they don’t teach in school is that your application isn’t valuable, no matter how “good” it is, until it’s in the hands of the actual users. This author explains that shipping your system is the only appropriate measure of success.
http://renderedtext.com/blog/2014/01/30/become-an-exceptional-programmer-by-learning-to-ship/
If ever there were a godfather of computer programming, it would have to be Don Knuth. The author of the seminal The Art of Computer Programming texts, his impact in programming is both broad and deep. Here are his responses to questions posed by some of the other luminaries in the world of programming. As always with Knuth, they are humorous, self-deprecating, and enlightening.
http://www.informit.com/articles/article.aspx?p=2213858
This excellent video, with complete transcript, explores one of the key aspects of good software testing: Your role is to provide stakeholders with information so that they can make good decisions about the project or application. In other words, you are in the business of risk-management. Too often, testers concentrate on finding defects without understand the context of the project.
http://blog.smartbear.com/testing/hunt-for-information-not-bugs/
This is an interesting rumination about what characteristics define and affect the quality (real or perceived!) of applications. This author says that longevity and number of users are good measures of software quality.
http://www.codingismycraft.com/2014/05/20/what-do-we-mean-by-high-quality-software/
As we are moving toward the “Internet of Things”, such as self-driving vehicles and the like, this author says that we will need to make a fundamental shift in how we develop software to improve reliability and ensure safety.
http://startupjuncture.com/2014/06/19/best-bug-free-code-code/
Just because public APIs can be copyrighted doesn’t mean that REST APIs are going away. Even for internal, enterprise projects, especially where mobility is important, these techniques are valuable for reducing coupling. Here are a few tips on some best practices for building your services.
http://onlysoftware.wordpress.com/2014/05/17/rest-api-best-practices-reloaded/
Neural networks are gaining popularity in a variety of fields, including artificial intelligence. But if you don’t have experience with them, they can seem confusing. This is an excellent introduction with examples and clear explanations.
http://moalquraishi.wordpress.com/2014/05/25/what-does-a-neural-network-actually-do/
Programming and computer science are relatively young disciplines and, accordingly, there are few “classics” among the literature. However, Knuth’s The Art of Computer Programming is certainly one of the classics. Here’s an excerpted chapter that deals with algorithms for generating random numbers.
http://www.informit.com/articles/article.aspx?p=2221790
Algorithms and data structures are the foundation of almost all programming. But have you ever stopped to think about which are the most important (or, at least, most widely used)? Here’s one developers take on the top 10.
https://medium.com/tech-talk/the-real-10-algorithms-that-dominate-our-world-e95fa9f16c04
Currying is one of the common principles of functional programming. This tutorial shows how to use the process with JavaScript to simplify code and make it more clear what the intention of the code is.
http://fr.umio.us/favoring-curry/
One of the underlying theoretical principles of functional programming is lambda calculus. Many traditional languages are adopting some functional principles, such as the introduction of lambda expressions in Java 8. This tutorial helps you understand the principles of lambda calculus and how it is applied in functional programming.
http://palmstroem.blogspot.com/2012/05/lambda-calculus-for-absolute-dummies.html
As with most other salary surveys for programmers in 2014, this one, based on input from more than 2200 technology workers, shows developers’ wages steadily edging up. Some of the greatest gains have occurred for testers and for workers in the Midwest.
http://www.drdobbs.com/architecture-and-design/2014-developer-salary-survey/240168195
Many developers eschew documentation. Nevertheless, everyone appreciates good documentation on a project, whether it’s formal or informal. This excellent guide helps you understand the various options available for documentation and their suitability to different situations. Likewise, the author provides good examples from each category.
http://brikis98.blogspot.com/2014/05/you-are-what-you-document.html
According to experts, the single biggest boon to productivity is to make small adjustments to your work processes, such as blocking out time for work, develop routines to avoid procrastination, and prioritization of work. Check this article for more suggestions.
http://online.wsj.com/articles/to-make-yourself-more-productive-simplify-1403399038
With raises barely outpacing inflation in the wake of the “Great Recession”, this author claims that most workers can expect 10%-20% pay increase when switching jobs, which means that over 10 years, those who change jobs every couple of years will make 50% more than those who stay put. I’m not sure that the logic really pans out, but it is something to think about and should give you some support to ask your boss for a raise if you a loyal, long-time employee.
In this review of the new book, Overwhelmed, about the counterintuitive fact that, even though we are more productive than ever, we are working more, the author, by referring to Keynes’ famous essay “Economic Possibilities for Our Grandchildren”, suggests that “busy-ness” has taken on high-value social status which drives an arms race of one-upmanship. Nevertheless, there are those who disagree with the thesis of the book and article.
http://www.newyorker.com/arts/critics/books/2014/05/26/140526crbo_books_kolbert?currentPage=all
With the fact that demand for Java developers remains high, it’s important to stay abreast of the technologies and tools in the Java eco-system. This excellent survey of over 2500 developers shows the tools that are popular and up-and-coming.
http://zeroturnaround.com/rebellabs/java-tools-and-technologies-landscape-for-2014/
Need a reason to take a vacation? Maybe taking a vacation actually has a net positive impact on the economy, at least, according to this article. Research shows that vacations actually improve productivity and the longer the vacation the greater the impact.
http://www.newrepublic.com/article/118285/workaholism-america-hurting-economy
Just like with governments, you need to work on developing relationships with your co-workers during the good times, so that when you need help, they’ll be there for you. This excellent article offers practical tips for how to forge those bonds.
No one sets out to fail (or be a failure). So why are some people successful and others not? This interesting article claims that it comes down to a fundamental difference in mindset: the “fixed” mindset that says our intelligence and motivation are static and the “growth” mindset that says we can change and improve.
Bob Cringely, in his own inimitable way, takes a number of major US ISPs to task for failing to augment network capacity where they interconnect (so-called “peering points”) with IP backbone providers, such as Level 3. I imagine that this won’t be the last word on this matter. (Disclosure: I’m a Level 3 employee and shareholder.)
http://www.cringely.com/2014/05/06/14890/
While it’s certainly not small, weighing in at over 200MB, Babun is an excellent productivity tool for Windows developers who prefer working in a Unix/Linux-like shell. Babun (pronounced like “baboon”) is a customized, stand-alone version of Cygwin with a plethora of great add-ons for productivity and ease of use, including Git, oh-my-zsh, a great package manager, and auto-update.
Server-side JavaScript application development using Node.js continues to grow. If you are looking for a good IDE (and, especially, if you already use Eclipse), you’ll want to check out Nodeclipse. It adds comprehensive Node.js support to the Eclipse platform, including syntax highlighting and code completion for JavaScript and JSON files, native integrated JavaScript debugging, a variety of plugins, and more.
Qonsole is a tiny utility that provides a console (Command Prompt or terminal, if you prefer!) on Windows similar to the one made famous by Quake. It allows you to quickly summon and hide the console with a simple hotkey combination (Window + C, by default). It can use the regular Windows cmd.exe shell, Console2, or MinTTY.
http://sourceforge.net/projects/qonsole-ahk/
Virtualbox is one of the greatest tools, especially for testers and developers. But, have you ever wanted to have a portable version, so that you could run a virtualized OS on any system? That’s exactly what Portable Virtualbox does! And it even includes full support networking on both 32-bit and 64-bit Windows host systems.
If you use the Google Chrome browser (or one of it’s “respins”) and you have a lot memory (probably 8GB or more) on your system, you can allocate additional RAM to Chrome to improve performance in tasks such as switch tabs, scrolling long pages, etc. Just open Chrome and put chrome://flags/#max-tiles-for-interest-area in the address bar and change the value for max-tiles-for-interest-area to 512. Then click Relaunch Now to restart Chrome. This allocates 512MB of RAM to the main Chrome process.
With the pace of technological change, some things that we can only dream of today might not be that far away, such as ads on your refrigerator or thermostat. This site features some excellent images with signs and notices that may not be too farfetched.
http://signsfromthenearfuture.tumblr.com/
OK… So maybe taking a test isn’t your idea of fun… But this is fun and helps linguistics researchers to understand how our language evolves. Plus, you might learn about words that, typically, only men or women know.
I’ve often thought that some of the things that we concentrate on when interview development position candidates were inane. This is a nice comparison that certainly rings true in many ways.
http://www.jasonbock.net/jb/News/Item/7c334037d1a9437d9fa6506e2f35eaac
This article is a little more technical than usual for this section of the newsletter, but I find technology history fascinating. This article tells the story of how von Neumann came up with his architecture for computers and how it was exploited and improved upon over time.
http://www.linuxvoice.com/john-von-neumann/