Macadamian Blog
Getting Started with Code Review
"How the heck am I supposed to find mistakes in his code?"
I was a brand new co-op. My first week on the job, I was asked to peer review a senior developer's code changes. At the time I thought it was crazy - give the new guy some time to ramp up before he can start pointing out others' mistakes... right?
Well here I am, a few years later, a project leader asking new hires to participate in code review from the first week too. In fact, at Macadamian, we've found that one of the best ways to jump start a new team member is to involve him in code review. But wait! Before we send the new guy into the wild, we need to arm him with some essential code review techniques.
Today, we'll look at the 5 essential techniques we recommend to all new team members so they can be fully functional code reviewers from day one.
Ask questions
Many developers believe that the goal of code review is to point out others? mistakes. New developers will often ask "How am I supposed find mistakes in
CES 2012: Thoughts, Predictions, Standouts, and Observations
Now that CES 2012 has been over for a couple of weeks, Stephane Lussier (Macadamian's VP of Engineering) and I, thought it would be interesting to see what still remained top of mind for us from the show. The following 6 were the big winners!
Windows Phone is a serious contender: Never mind that Nokia is a force, with strong presence and brand globally. Windows Phone is gathering steam, and will gan market share with Windows 8. Microsoft is strong in enterprise, and over the next year, IT departments will be looking for a way out of managing apps and support for a multitude of devices. They will be looking for common platforms on which to deploy in-house enterprise apps. Because of it's strong installed base of Windows, IT organizations will be drawn to the promise of interoperability between desktop, smartphone, and tablet apps on Windows 8.
Smart TVs lack compelling use cases: There were an overwhelming number of Smart TVs on display, and other than streaming from services like Netflix, which most Blueray players, gaming consoles, and PVRs already do, Smart TVs lack a compelling use case, and a compelling reason to buy. So far, consumers see it as a "nice to have", but will you really tweet from your TV? And besides, Angry Birds on your TV just isn't the same...
Android tablets - where is the differentiation? Just like last year's CES, I counted dozens upon dozens of tablet manufacturers, and many had at least 2 different form factors. There was no clear differentiation between any of them. Most were using very similar (or exactly the same) hardware, and almost all were running plain-vanilla Android. Aside from price, why would I be compelled to buy a Viewsonic tablet over one from Huawei? The only standout was the Samsung Note, which offers a new form factor a bit bigger than a smartphone, great for portability and note taking. And their launch was brilliant, employing artists to paint portraits of attendees using Samsung Notes.
Design is King: I was really impressed with a few companies that clearly stood out from the pack with great design. One was Belkin, a company previously known for commodity accessories like cell phone chargers. Belkin has been investing heavily in industrial design and User Experience design, and it shows - not only are their products beautiful, but they were showing a number of very useful, compelling products for home security, networking, and energy.
The Healthcare Democracy - a number of companies like Withings and Zeo are producing personal health devices that are now at consumer-friendly pricepoints. With low-cost sensors, wireless connectivity, and smartphones, personal health monitoring is about to hit mainstream.
Android will be everywhere - the real story for Android is not in tablets and smartphones, it's in embedding it in cars, appliances, and TVs. As I looked around, I saw hints of Android peeking through everything from in-car navigation to kitchen appliances. With low-cost hardware, it's becoming cheaper and easier to make everything touch, and everything Internet connected.
2012 will be a very interesting year in consumer electronics. We'll see who suffers from innovators dilemma, and who breaks through with well designed tablets, TVs, connected home devices, and personal health devices that stand out from the crowd.
Stay tuned.
Successful Software Patterns
Poor product designs are often the result of structural and process-oriented problems. Clients will often say, “The product manager presented a great-looking product concept, but the final product just didn't live up.” or “Our developers are really frustrated with our designers. You guys aren’t going to give us a blue sky design are you?”
Avoid Functional and Geographical Silos
There are a number of underlying root causes for these problems. Here are a few we frequently encounter:
- Product management works with the design team at Global HQ, then ships the design offshore. Everyone crosses their fingers and hopes the finished product comes back as beautiful as the original design (hint: it won’t!).
- An understaffed design team (in many cases, a single designer) within the organization serves all of the development teams. Naturally, design is swamped. Managers and developers lose faith that design can deliver and, as a result, begin to exclude designers from projects.
- An external design firm creates a design and “throws it over the wall” to your development team, never to be heard from again once engineering begins. Leading product firms like Apple, Google and Facebook are much more integrated, because the silo-ed approach inevitably leads to problems. When a design team is pushed to work in a vacuum, the development team often end up with a bunch of pretty pictures (in their words) and is left to interpret and fill in a lot of blanks. What does clicking this button in the corner do? What happens when the user navigates back? What do we show when the app loses connectivity? How should controls resize and anchor on the screen when you pinch and zoom?
Certainly there are advantages to working in a functional group or having multi-site teams spread out geographically. But being in a separate function or geography is no excuse to work in a vacuum.
Big Changes in 2012 for Enterprise Software
Talk about "Modern Information Management Software" (or "Modern Enterprise Software") and you'll immediately get eye rolls as people picture images of legacy solutions born in the 1990's. Many of these large software solutions have unfortunately not evolved significantly in terms of usability or technology over the last years, having opted instead for adding more and more features that ultimately make the solution even more complex.
But starting now, these software systems are in for a big change. From CRMs to ERPs to Content Management, market analysts are predicting seismic shifts in these products as five major trends hit us all.
1. New Solutions Driven by the Demand for SaaS
A recent EbizQ article projects the SaaS market will balloon to $21.3 billion in revenue through 2015.
"Corporations," they say, "are increasingly less concerned with issues such as security, availability and performance that were once viewed as significant stumbling blocks to the growth of SaaS. The growth of industry giant Salesforce.com is a testament to this – the multi-billion dollar corporation holds some of the most critical data a company can have: their customer and prospect data."
Now the race is on for vendors to design and build SaaS versions of their flagship products. Creating a new product means an opportunity to capture new audiences by renewing both design and workflow, while keeping the solution comfortingly familiar for current users. The key to success will be a balancing act between the fresh and the familiar, luring new customers while pleasing your bread-and-butter users.
Handle Browser Differences on iPhone and iPad
Ah, browser inconsistencies. Every web developer's favourite topic, right?
We all remember what it was like supporting Internet Explorer 6, and 7, and 8, all for the same product. It was a nightmare! Weeks of wasted effort, all because what worked in one version of IE didn't work in another.
But we're past that now, aren't we? Every mobile browser supports HTML5 and CSS3. We should be safe with mobile Safari. Right?
Wrong.