Software Engineering

For software engineers and those interested in learning about and developing skills in the area.

7 Interview Questions About Citrix

Citrix Logo
Citrix serves nearly a quarter of a million clients around the globe with its dozens of products. Its software includes open source cloud computing technologies as well as server and desktop virtualization tools. When scouting for engineers who know Citrix, employers want not only a broad understanding of its applications, but considerable hands-on experience as well. If you’re interviewing for a Citrix-related position, you can expect to hear these questions. How many Citrix users do you support in your current… continue…

The Basics of Perforce, a Free Enterprise VCS

Perforce VCS
It’s hard to believe that as recently as 10 years ago, many bedroom developers hadn’t got into using Version Control Systems. Shamefully, I can remember occasions when I had multiple source versions going and had to struggle to work out which one was the most recent. It was madness and I once lost an important file and then a full day recreating it from scratch. By far the most popular open source VCS is probably Linus Torvald’s Git. But for… continue…

Where the iPhone 5 Kicks the Mars Rover’s Butt

Martian Landscape
Giving the Mars Rover Curiosity the brains she needs to operate took 5 million lines of code. And while the Mars Science Laboratory team froze the code a year before the roaming laboratory landed on Aug. 5, they kept sending software updates to the spacecraft during its 253-day, 352 million-mile flight. The rover’s mission is to gather and analyze the Martian landscape for signs of microscopic evidence that life may have once existed there. Right now, she’s preparing to drill… continue…

Comebacks for When They Say ‘Your Code Sucks’

Magnifying Glass Code Thumbnail
It’s tough enough to have people criticize your code, especially when the comments are coming from an intern. On Slashdot, one anonymous user had precisely that gripe. After ten years as a developer, the kid “started ripping into my on how terrible it is,” with complaints that are “simply because he does not have the experience with it to actually understand what the code is doing.” His bottom line question: He is a smart guy with lots of promise, he… continue…

More on Taking the Pain Out of Code Reviews

CSS Code
Code reviews are one of the most valuable exercises we conduct in software engineering. They’re also among the most painful. Last week, I looked at different approaches and the circumstances where each can be most effective. This week, we’ll get into source code management tools, and how the branching or commit mechanisms can affect how easy — or difficult — it is to isolate code for review. Source Code and Branching Code reviews are about units of code, usually one… continue…

10 Nice Ways to Say ‘Your Code Sucks’

Slipping and Falling
When you’ve got a colleague whose work looks more like Medusa’s hair than code that’s actually supposed to do something, you don’t have many good options: You can fix it yourself, complain to your manager, whisper about it to other team members, hold it all in until your head explodes or, maybe the scariest of all, go talk to the messy coder directly. The truth is, the scariest option is also the best. Most of the time, you can do… continue…

How to Take the Pain Out of Code Reviews

CSS Code
Code reviews. There may be nothing in software engineering that’s simultaneously more painful and more helpful. They’re helpful because they provide specific feedback looking at the code as code. They go beyond “Does it work?” and become learning opportunities for both the author and reviewer. But they’re painful because … well, have you been in those meetings? It’s always painstaking work to read so closely and look for small mistakes. Now do it in a three-hour meeting. It’s no wonder… continue…

Learn How to Program in Dart

Dart Language
This is the first tutorial in a series on learning to program in Dart, Google’s alternative to JavaScript. Although no other browser manufacturer has shown any interest in implementing Dart, JavaScript has certain flaws, particularly in maintaining large applications that effectively limit it. Big JavaScript applications are hard to debug and maintain. Google developed its Web Toolkit, or GWT, for developing applications in Java, then translating them to JavaScript. Dart takes a similar approach. You write and test your code in Dart,… continue…

Aligning User Stories, Use Cases and Requirements

Pair_programming_ thumbnail
In a previous post, I contended that requirements are still an important part of most enterprise environments, even those that might be using Agile lifecycle methodologies. However, I didn’t specify exactly how those requirements should be captured — or what even constitutes a requirement. This is an important question that spans both Agile and Waterfall methodologies. Many organizations feel that user stories are sufficient to build both code and project structures around. Is it out of the question to consider… continue…

5 Steps to Mastering Design Patterns

jigsaw_puzzle thumbnail
Design patterns are an important part of software engineering today, but what many folks don’t realize is how ubiquitous they are becoming within the full spectrum of IT activities. This is partly due to the flexible nature of patterns. Mastering design patterns is a critical part now of most IT architects’ roles, and from a larger perspective is also becoming increasingly important for most enterprises. Design patterns are meant to accomplish three critical things: Increase the speed of the design… continue…