One of the most important things to pay attention to when writing software is how we name our symbols. Data and behavior should be named in a way that represents the essence of what we're trying to do. Naming affects understandability and reflects code quality, so use names that clearly communicate your intentions, and refactor those names when your intentions change.
Writing changeable code makes it easier and more cost-effective to add features to existing software. Writing changeable code doesn’t take longer, but it does require paying attention to certain things when building a system. It's important to have a good suite of unit tests that support refactoring code when needed, and test-driven development helps you create independently testable code.
Code can express what we want to accomplish, but it’s a little more difficult to express why we’re doing something in the first place. The people who maintain code are often not those who originally wrote it, so documenting why helps set a context and gives clues as to what the author was thinking when they came up with a particular design, making developers' jobs easier.
Many organizations appear to suffer anxiety at the thought of programming. They want to get everyone but the programmers in a room to discuss a project down to the minute and the dollar, without a full understanding of the coding required. But a few hours of code experimentation generates far more understanding than days of debate by architects and analysts. Don't be scared of programming.
The majority of managers are promoted due to their software development expertise. But becoming a successful manager requires a drastic change of focus. There is a set of expectations to consider before making that leap to the “dark side.”
You may not have heard about gamification, but instructional designers are now using game principles to help with retention of learned material in many forms of training. Ross Smith and Rajini Padmanaban believe that developers' UX and app design can benefit from gamification.
Most software needs to be "maintainable" and have high "internal quality." But what does that mean in practical terms? Code smells form a vocabulary for discussing code quality and how well suited code might be to change. The smells also provide good indications as to what to refactor and how.
Mistakes happen. It's how you respond to them that matters. Teams might react to a bug with panic and blame, leading to a quickly hacked fix and possibly more issues. Taking time to investigate and learn leverages problems into process and practice improvement and a higher quality product.
In this interview, Melissa Benua, senior backend engineer for PlayFab, explains the new way of life that continuous integration brings. She imparts practical advice for creating builds and running automation on the fly without spending hundreds of hours or thousands of dollars.
Josh Michaels is an independent software developer who makes apps for the iPad, iPhone, and Mac under the company name Jetson Creative. In this interview, Josh discusses mobile development, testing aggressively, and keeping users happy.
Joe Justice is a consultant at Scrum Inc. and inventor of the Extreme Manufacturing project management method. He also is the founder of Team WIKISPEED, an all-Scrum volunteer-based, "green” automotive prototyping company.
"Fun" and "kindness" aren't the first things that come to mind when thinking of the mob, but in software development—they're mandatory. Woody Zuill discusses how mob programming takes a very agile and collaborative effort at delivering great software on time, and with the respect of everyone on board.
To keep your iOS app running butter-smooth at 60 frames per second, Apple recommends doing as many tasks as possible asynchronously or “off the main thread.” Joe Keeley introduces you to some basic concepts of asynchronous programming in iOS. He discusses what threads and queues are, how...
To be most effective when managing a large program, the component projects should limit their batch size, create networks of people, and report status in a way that works for the entire program. For those of you who are not quite ready for agile, Johanna Rothman explains how to use staged...
What is the best way to learn a new programming language or improve coding skills with the language you already use? Cory Foy has developed a new method for learning—and teaching—new programming languages and improving programmer expertise on their current languages.
The demand to deliver more software in less time is increasing. Give in to the pressure without thinking, and you end up facing burnout, stress, business risk, and, most likely, even more demands. Refuse, fight the good fight, and it is likely the business will replace you with someone else.