What Does Code Quality Mean to You?

Quality-300x180In today’s world, users hold all the cards. Or as Patrick Hynds of SDTimes, puts it – quality is in the eye of the beholder.

This is especially true when it comes to code. When a developers says their code is “optimized” what does that really mean? Code is judged by many attributes and perspectives, which makes it harder to define quality.

Hynds recently pulled together a list of the things to focus on improving, in order to ensure quality code. Here’s a look at a few:

Performance measures
Perhaps the hardest metric to satisfy for quality code lies in the area of performance. Users expect systems to be faster and faster to the point that instant is just good enough, and anything less is too slow.

The foundation matters
When setting out to construct anything, the foundation matters. Marketing, building construction and even literature succeed most when the opening or foundation is of high quality. Quality code has an even greater dependence in this regard since, in most cases, you are not writing machine language. We all depend on many abstraction layers, for better or worse, to do everything.

Code smell
“It seemed like a good idea at the time…” is the post facto justification for many blunders, with common threads of not thinking about possible ramifications or just taking short cuts. Code smell represents the coding version of this often-heard lament.

Patterns and anti-patterns
A design pattern shows you how you should be doing things and how components should be put together. And, by the same token, an anti-pattern talks about what you should not be doing and how things should not be put together.

Sanity helps
A popular video that made the rounds at the BUILD Conference called “The Expert” depicts a hapless engineer facing a room full of clueless stakeholders demanding impossible results. While exaggerated, these are precisely the kinds of things that must be stamped out early in a project to give the resulting code any chance of being acceptable.

Ultimately the best way to keep up code quality on a .NET project is to keep the requirements reasonable. Every other industry has realized this imperative, which is why we have laws that keep truckers from driving through the night on no sleep, and why there are studies required before medicines and surgical techniques are allowed. Winging it does not produce good, solid results, and code is no different.”

What kind of quality are you looking for? Share your thoughts in the comments section.

5 New Developments Related to the Heartbleed Bug

anyone-who-logs-into-yahoo-imgur-okcupid-could-lose-their-password-thanks-to-heartbleed-bug-300x225With vulnerabilities on giant servers like Google, Amazon, Twitter and Facebook, the Heartbleed Bug is one of the largest security mishaps to ever hit the Internet.

But as the story unfolds, there are a few details that may come as surprise. Here is a list of Heartbleed’s most recent developments.

1. One arrest has been made.  

Canadian police arrested 19-year-old Solis-Reyes in London, Ontario last week. He is accused of exploiting the Heartbleed Bug vulnerability to steal social security numbers from servers of Canada’s tax collection agency and is charged with one count of mischief in relation to the data.

The accusation comes two days after the Canada Revenue Agency announced that the sensitive information of 900 Canadians had been compromised. But law enforcement has not made any direct connection.

The teenager’s lawyer tells a story of when Solis was only 14 and proved that his high school’s computer system was vulnerable to hacking when administration didn’t believe him. It’s very possible that when the Heartbleed Bug news hit mainstream media, he became curious and tested it out for himself. On Tuesday, the Solis-Reyes turned himself in.

2. The company responsible for the OpenSSL software has just 1 full-time employee.  

The breach was the result of a flaw in OpenSSL, a platform designed to provide users with a free set of encryption tools that prevent hackers from obtaining user data.

The irony is that although two-thirds of all websites use this software, the foundation’s revenue stream is so insignificant that it can’t afford a full security audit or to pay a full staff. Therefore, the foundation is comprised of 1 full time employee and 10 volunteers.

Steve Marquess, founder of OpenSSL Software Foundation, released an open statement explaining:

“These guys don’t work on OpenSSL for money. They don’t do it for fame (who outside of geek circles ever heard of them or OpenSSL until “heartbleed” hit the news?). They do it out of pride in craftsmanship[9] and the responsibility for something they believe in.”

Continue Reading

How to Run a Software Testing Sprint (and Marathon)

Endurance, speed, support and training. Not only are these traits a necessity for testing in Scrum sprint (more on this in a second), they are also the traits needed to finish a real marathon in one piece. No one knows each of these points better than Doron Reuveni, uTest’s CEO and Co-Founder.

Today – for the sixth time in as many years – Doron will be running in the Boston Marathon. After steady improvements each year, we fully expect him to win this year’s race. Anything less will be a major disappointment – no pressure! If you’re interested in keeping track of his progress, you can follow his Twitter handle (yes, he tweets mid-race) or search the official Boston Marathon website. Best of luck Doron!

Of course, running 26.2 miles isn’t easy – and as mentioned earlier – neither is testing in a Scrum sprint. So to stick with the running motif, I wanted to share a few scrum testing tips courtesy of testing expert Clemens Reijnen. Titled 5 Tips for Getting Software Testing Done in the Scrum Sprint, this article explains how to avoid some of the pitfalls and confusion that can often occur with what’s come to be known as “agile testing.” Let’s take a closer look at three points in particular (followed by our own take):

Tip #1: Get a Team
This is actually not a tip, it is a must. This is a kind of obvious but not common and the hardest thing to accomplish. Get a team, get testing knowledge in your team. When you don’t have it, you will fail. Teams and companies have failed to reach their agile software development goals only because it was impossible to get different disciplines together in a team.

 

The three most important concerns (of establishing a team) are:

  • Trust.
  • A topic closely associated with trust when it refers to people is Identity.
  • Collaborative culture.
  • A collaborative culture consists of many things, including:
  • Collaborative leadership;
  • Shared goals;
  • Shared model of the truth; and
  • Rules or norms.
  • Reward.
  • A “reward” for successful collaboration is most often of a non-financial nature.

Our Take: Cohesion is absolutely critical to the agile methodology. If testers, developers and product owners are not on the same page, the project is doomed to failure. As Clemens notes in the article, it’s not always easy for testers and developers to get along, as they tend to see the world through much different lenses. But in our experience, this difference is vastly overstated. In any event, make sure that collaboration is a central pillar of your plan. The points noted above will get you started in the right direction.

Tip #2: Use a risk and business driven test approach.
When there is no risk, there is no reason to test. So, when there isn’t any business risk, there aren’t any tests and is it easy to fit testing in a sprint. More realistically, a good risk analysis on your product backlog items before starting to write thousands of test cases is a healthy practice. Risk is also an important attribute in Scrum.

The release plan establishes the goal of the release, the highest priority Product Backlog, the major risks, and the overall features and functionality that the release will contain.

Our Take: Absolutely true. Without a risk-based approach, your QA efforts will be aimless, costly and a likely a waste of time.  

Tip #3: Regression Test Sets
Collecting a good regression set is important. There are a lot of approaches how to get this regressions set, most of them are based on risk classifications and business value (see the previous tip).

The principle is that from each test case a collection of additional data is determined into the test cases for the regression test are ‘classified’. Using these classifications all cross-sections along the subsets of test cases can form the total tests that are selected.

Automation of this regression set is almost a must. Making a good selection which test cases to select is a trivial task. With excel you can do some querying for proper test cases but this gets harder when they are in different documents. Testing is more efficient if you have good query tools so you can easily make a selection (and change this selection) of the test cases are part of the regression run.

Our Take: When you’re introducing a new element to your site, or software or app it’s extremely important to make sure it doesn’t break any existing components – especially security related aspects. While manual testing should play a role, automating such tests is usually the most efficient course of action. 

Each Programming Language and its Influence on Software Development

299601-3524-37-300x300There are programming languages we love – and ones we could live without.

Yet, each programming language has made some type of contribution to the software development world. Most of the posts you read about programming languages are rants, or compare and contrast them.

However, Dustin Marx of Java World recently took a different approach. Marx looked at each programming language individually and  how it influenced software development. Here’s a look:

Basic

Most software developers I know have written some code in some form of BASIC(Beginner’s All Purpose Symbolic Instruction Code). I remember, long before public availability of the Internet or even mice on PCs, typing in Basic code from magazines I received in the mail with code listings for various simple games and PC utilities. Like many developers, Basic was the language that attracted my interest at a relatively young age to programming. It was from my Basic programming that I learned firsthand the dangers of the goto.

C

C may be the most influential of all programming languages on today’s software development. In Steve Yegge‘s well-known blog post The Next Big Language, Yegge’s #1 rule for the next big programming language is that it has “C-like syntax.” Many people’s favorite programming languages are themselves (interpreter or runtime environment) written in C and many of these languages provide mechanisms (JNI and XS are two examples) for “escaping” to C for performance gains. C also remains one of the most popular and highly used programming languages in the world despite its relatively old age. Wikipedia even has an entry devoted to C-based programming languages.

COBOL

Although COBOL is not a language you read much about in blogs or articles these days, there is a huge amount of deployed code written in COBOL (Common Business-Oriented Language). In Cobol doesn’t belong in a museum, Ken Powell writes:

I believe that the spirit of Smithsonian’s Cobol debut is not an indication of its antiquity, but rather a testament to its past, as well as its continued success. Just as Edison’s light bulb was a game-changing invention in its day, Cobol has changed the face of computing, and continues to have a tremendous impact on our everyday lives.

John Breeden II also writes of Cobol’s impact on software development in A toast to Cobol, a true computing hero, stating, “Without Cobol, each early computer might have developed its own proprietary computing language. Instead, we started on a path to interoperability that would come in very handy later on.”

Continue Reading

Software Update Fixes Bugs (but cannot kill spiders)

yellow_sacSometimes in software testing you are finding and fixing coding errors, sometimes you are addressing requirement gaps, and sometimes you have to deal with spiders.

Spiders? Exactly. And no, I don’t mean that as a metaphor for some new fancy software issue. I just mean, sometimes you are actually dealing with spiders.

Mazda has recently announced a voluntary recall of 42,000 Mazda 6s, due to… spiders. The yellow sac spider or Cheiracanthium, for those of you that are arachnid enthusiasts, are attracted to hydrocarbons and gasoline. These adorable little guys have taken a liking to Mazda’s vent lines. The webs restrict air flow and can potentially cause cracks in the fuel tank, which ultimately could lead to fires.

Mazda first addressed this “more common than you’d think” problem a few years ago with a mechanical solution, aimed at keeping the spider out of the lines. However, they proved to be persistent and continue to breach the Mazda’s security. So Mazda has now turned to new software. They offer the free upgraded software to Mazda owners which regulates the pressure level and notifies the owner if there is a problem. True, it is not an actual solution to the spider problem; however it is great to see that Mazda is looking to software proactively to ensure the safety of their customers. It should also be noted that although the problem has persisted for a few years, no injuries or fires have been reported as a result of pressure build up related to spider webs.

Continue Reading

A Few Things Every Mobile App Developer Needs to Know

Sea-of-appsIt’s no secret that the app stores are exploding. With every new app that launches, the competition gets tougher and tougher for new players trying to enter the market.

So what can new app developers do to stand out?

Gil Dudkiewicz, of The Next Web, recently pulled together a list of 5 things app developers need to know. Here’s a look:

“1. Imitation is not always the sincerest form of flattery

If your product is good, people will copy you. The better it is, the likelihood of being ripped off increases exponentially. This is a multi-industry reality and it’s the first thing you should keep in mind as you develop your mobile app.If you know you have an excellent product in the works, a strong launch is critical. The initial loyal user base you attract as a result of high visibility will help you stay on top when the imitators eventually end up publishing similar products.

The more active users you have, the better your app holds its ground in the store. Additionally, those are the users who convert to paying customers.

#2. It is far too easy to get lost in the crowd

One of the biggest challenges mobile app developers face is discoverability. With more than a million mobile apps in each of the app stores (Apple and Android), it is becoming harder and harder to generate organic users.

To overcome this, you should plan on putting time and effort into app store optimization techniques. The app name, icon, description and screenshots – all of these need high attention and professional care to reach the best results.
Invest time and money to produce a unique presentation of your app before it is downloaded to grab the attention and pique the interest of users.

Continue Reading

Making Agile Work Across a Large-Scale Enterprise

imagesMost development teams today have found the agile methodology to be a success – helping teams to increase flexibility and thus develop better, more intuitive software. But when we say teams, we are usually talking about those nimble, fast-moving teams within a smaller organization.

So how can large enterprise brands scale agile and make agile work? Felipe Brito, of IT Business Edge, recently pulled together a list of 5 ways to scale agile for enterprise companies. Here’s a look:

# 1 Establish an enterprise-wide conversation

Agile, and especially enterprise agile, is all about change.  And to create an environment that embraces change, you must establish an enterprise-wide conversation to foster transparency, engage cross-functional teams and create champions. Be sure to involve leadership – they must lead by example and promote autonomy and trust by instilling a problem-solving mindset and encouraging responsible risk-taking. You will see significant strides when the leadership team and development team are connected because of the agile shift across the enterprise.

# 2 Be obsessed with your customers

Because what are you without them? Fixating on your customers just enough is a powerful component so make sure you do these three things:

  • Understand your customer: All areas of the enterprise must be driven to comprehend customer needs. Involve cross-functional groups and implement a product canvas methodology.  Encourage field exploration, group design thinking and journey map analysis of different personas to fully understand your customer. Only then can you tap into technology to devise a solution.
  • Design for your customer: Don’t make the mistake of thinking you know enough – engage your customer early and often to create the best solution. Evolve your user experience and enhance the customer relationship by connecting with influencers. Don’t push narrow-sighted solutions. Pull confirmed needs.
  • Deliver for your customer: Adopt a business value framework and stick with it. Prioritize business and technical features to deliver a value stream aligned to customer expectations. Be disciplined enough to establish cadence, but nimble enough to embrace change. Inspect, adapt and grow, always obsessed with business outcomes.

Continue Reading

What Mobile Design Approach is Best for Your Business?

images (2)As companies are rushing to design for mobile, which approach should they take?

Responsive web, m.dot sites and native apps are three routes that brands can take. According to Daniel Dern, of ITWorld, determining which route makes the most sense to you depends on your use cases, your users’ habits and your budget.

Dern recently pulled together the pros and cons of the three methods from developers, designers and other experts. Here’s a look:

 Responsive Web Design

Responsive web design (a term popularized by web developer/designer Ethan Marcotte) means that the site’s code automatically susses out key information about the user’s device and environment, and delivers a view optimized to take advantage of it. In particular, reacting to the width of the browser window — not just flowing the text, but often changing aspects of page layout.

Depending on who you talk to, adaptive web design is either a subset of responsive design, or a related approach. A responsive design will show more stuff or less, optimized for a mobile layout — for example, if you rotate the phone between landscape and portrait, it will change the spacing, but not the content — but is likely to still provide access to the full desktop-view’s content. An adaptive design, by contrast, might show very different content, and also present a different UI, reflecting touchscreen’s tap/swipe/scroll versus desktop’s keyboard/mouse interaction.

In either case, a responsive (and adaptive) web design will be drawing on the same code as a desktop (“classic”) site, and will present the same URL at the browser.

“A responsive site will let us adjust the view of the site to reflect the browser window width,” says Prasant Varghese, Technical Analyst, Icreon Tech, a NYC-based web design and development firm. “Future capabilities may include different rendering for night-versus-day, and reflecting bandwidth and resolution availability.”

Continue Reading

Need App Advice? Ask a Marketer

expert-adviceApp success is generally viewed as the primary goal of the development, design and QA teams, respectively. But as we’ve long argued, the success (or failure) of an application is actually a company-wide goal. Yes, even that of the marketing department.

The writers over at SearchEngineJournal.com posted an interesting article the other day on Converting the New Mobile Consumer, in which they outlined some valuable tips for optimizing a mobile website focused on commerce. If you read the piece – and I suggest that you do – you’ll notice that most of the tips are not geared towards a highly technical audience (i.e. developers and testers), but rather that of the marketer. No offense to the technical-minded marketers out there!

To illustrate – and to encourage you to ask the marketing team for help the next time you’re put on a big project – I wanted to take a closer look at three tips in particular. Let’s get started…

Incorporate Branding Elements
As Mobile Marketer points out, mobile is an excellent venue for extending your branding efforts. Even though your mobile site will be a lot more simplified, you’ll still want to incorporate the same branding elements that you have on your traditional site. According to Social Media Examiner, this is important for two reasons. One, a mobile site is a brand touchpoint where customers interact with you, and like any other touchpoint, it should reflect and promote your brand’s essence. Second, incorporating a similar design on your mobile site will make users who are already familiar with your company feel like they’re visiting an old friend, which is an important consideration for your most loyal customers.

Here’s a classic example of an area that gets passed over by developers and QA teams, who often times are only focused on the functionality and security of a given application. Branding matters, so if you’re looking to launch a site or app that engages users – and encourages them to come back on a regular basis – you might want to consult with the marketing department, as this is their primary goal.

Continue Reading

The Mobile Ad Market is Exploding

aol-plans-to-build-up-a-substantial-mobile-advertising-businessIf you are not currently investing in mobile advertising – well, you’re missing out on a huge opportunity.

As the apps economy grows, more and more consumers are turning to tablets and smartphones. In fact, according to a study from research firm eMarketer, the mobile ad market soared 105% in 2013:

“Last year, global mobile ad spending increased 105.0% to total $17.96 billion, according to new figures from eMarketer. In 2014, mobile is on pace to rise another 75.1% to $31.45 billion, accounting for nearly one-quarter of total digital ad spending worldwide.”

So what brands are leading this trend? eMarketer says companies like Facebook and Google account for a majority of the growth:

“Facebook and Google accounted for a majority of mobile ad market growth worldwide last year. Combined, the two companies saw net mobile ad revenues increase by $6.92 billion, claiming 75.2% of the additional $9.2 billion that went toward mobile in 2013. The two companies are consolidating their places at the top of the market, accounting for more than two-thirds of mobile ad spending last year—a figure that will increase slightly this year, according to eMarketer.”

170637

With so much revenue stemming from mobile advertising, brands have even more at stake; meaning more in-the-wild testing and reassurance for brands’ public facing apps – as well as the brands serving up these ads.

For more resources on in-the-wild testing, download a free whitepaper here>>