October 2013 Newsletter
If you want to build a ship, don’t drum up people to collect wood and don’t assign them tasks and work, but rather teach them to long for the endless immensity of the sea. –Antoine de Saint-Exupery
It’s a curious thing about our industry [software development]: not only do we not learn from our mistakes, we also don’t learn from our successes. –Keith Braithwaite
The effective programmer is keenly aware of the limited size of his own head. –Edsger W. Dijkstra
Development estimation for software projects is definitely more of an art than a science (at least, at this point). This article doesn’t claim to solve all of the intricacies involved in estimate a development effort, but it gives some principles for how to do it based on the premise that every new piece of software is a machine that has never been built before
Scott Hanselman makes an excellent observation about the myth of developers who are significantly better than the average (sometimes called “10x developers”). He emphasizes that most projects are team efforts and organizations should focus on developing high-performing teams, by looking at the particular skills of each team member. Of course, there are some who disagree with this view.
Most of us have probably worked with someone who would give up trying to solve a technical problem without going very deep (or someone who would spend days trying to figure it out on their own). This article suggests a good solution to these conundrums where the person spends another 15 minutes, including documenting what they’ve tried, and then must ask for help. This helps to strike a balance between giving up too soon and spending inordinate amounts of time struggling for a solution.
Most managers operate primarily on metrics of some sort. This article makes the relevant point that using metrics requires a certain level of maturity both on the part of the individuals/managers and the organization as a whole.
Organizational culture is one of the most important factors in determining productivity and success in application development. This author explains 10 factors that he believes are key to a healthy, effective programming culture.
If you think about “difficult” projects that you’ve worked on, you’ll probably recognize that it wasn’t technological limitations, but interpersonal problems (so-called “soft skills”) that were the main pitfall. This author suggests that the current “growing pains” with agile methodologies are mostly rooted in the same fundamental problem.
This article emphasizes the agile principle of “people over processes” by noting that user stories are intended to describe functionality and behavior that adds value and not to waste time on formality and preparing stories for non-value-added items.
One of the interesting aspects of the agile development methodologies is that most of them came about just about the time that our world became “highly connected”. With the ubiquitous connectivity, many development teams are now widely distributed, while quite a few of the agile principles emphasize co-location (for example, “stand-up meetings”). This author suggests that the next wave in agile will be how to adapt it for distributed teams.
Most developers are familiar with the concept of “flow”: the situation where you are totally focused on the task at hand and code just seems to pour from your fingers. This article looks at how to achieve flow in programming on a consistent basis by reducing distraction.
While most of us probably don’t work on applications or web sites with this high of a profile, the problems with the health exchange web sites certainly show the value and importance of good design and testing in most any endeavor.
As humans, we use tools to give ourselves an advantage: be more productive, simplify processes, and more. This comprehensive report explains how develop tools and methodologies influence the quality and schedule of projects.
This excellent article gives some ideas about how the test planning process varies between manual testing efforts and automation projects. He emphasizes that automation efforts are typically application development projects themselves and, accordingly, need to be planned as such.
Are you wanting to learn development for Android platform, but aren’t sure where to start? This excellent 12-part video tutorial series takes you step-by-step through the process, including topics such as consuming external services over HTTP and local data storage. (The course is essentially a gateway to try to get you to purchase the IntelliJ IDEA tool, but you can do the entire course using the free community edition of the platform available here.)
Keeping your hands on the keyboard helps your productivity. Here are over 5 dozen keyboard shortcuts for Google Chrome browser to help speed your web browsing.
Even if you haven’t used it, you’ve likely heard about (or, at least, seen sites developed with!) the Twitter Bootstrap framework. This excellent six-part video tutorial series teaches you how to build a responsive web design, including navigation bar and footer with the built-in grid system.
If you are looking for a new job (or even if you just want to keep your skills sharp!), chances are that you’ll do some sort of coding during your interviews. This opt-in newsletter will send you a weekly programming puzzle and solution which includes an explanation of the solution and possible alternatives.
October 2013 marks the 40th anniversary of Ken Thompson and Dennis Ritchie presenting their paper about the new operating system they had created: Unix. Ken Thompson said, “The scariest thing I’ve ever done.”
As a child, you may have heard the phrase: Idle hands are the devil’s workshop. The grown-up equivalent is probably the mantra that you need to be doing something all the time and don’t waste any valuable time. Contrary this conventional wisdom, brain researchers have found that “mental downtime” is important for solidifying memory from short-term into long-term memory.
We all have those “rules” that we live and work by. One of the original creators of Adobe Shockwave shares her tips for maintaining sanity on development projects, as a technical leader, and just with life in general.
Everyone wants to be productive at their work. However, many times productivity is diminished by factors beyond each worker’s control. Here are some tips for how managers and the entire organization can improve productivity.
With real earnings stagnant over the past several years and a recent survey showing that less than half of job candidates negotiate salary, you would do well to heed these tips for effectively trying to get a little more money in your pocket when taking a new position.
In this opinion (rant?), the author says that the political climate in the US is mostly to blame for the lack of technological advancements in telecom services and that this is preventing adoption of cloud technologies by business.
Freelan is a free, open-source VPN application. It supports both peer-to-peer (direct) secure connections and traditional server-based VPN connections, as well as, hybrids of the two. The focus of the application is on performance and security, but usability improvements are in the works.
JetBrains has just released a new version of their excellent PyCharm IDE for Python and they now have a free, open-source community edition. It is limited to pure Python development and, therefore, doesn’t include all of the additional tooling of the commercial version, but it is still a competent and full-featured IDE. It includes code completion, integrated debugger, support for virtualenv, integration with Git, Subversion, and other popular version control tools, and much more.
Have you ever wondered if the Enterprise from Star Trek is bigger than the Galactica craft? Wonder no more! This amazing chart shows the relative sizes of hundreds of space craft from the world of sci-fi.
Even after more than 35 years, the opening text crawl from Star Wars is still spine-tingling. This guy re-created the whole thing using HTML and CSS. And he even provides a detailed tutorial on how to build it.