The 6th Man Principle

In the midst of watching the NCAA March Madness tournament, I was reminded of the 6th man concept that RSI has used since its early days. As in basketball the 6th man concept is all about having a ”non-starter” prepped, practiced, ready to enter the game and immediately start contributing to the team. This concept is core to RSI’s 6th Man principle. For many of our strategic accounts we deploy an extra colleague to participate in the upfront strategy and design sessions, kickoff meetings and daily stand ups so that when their time comes they will be prepared to hit the court at full speed. Their time may come due to an injury, an illness, paternity or maternity leave, or maybe just a packed sprint that needs the extra help. Whatever the cause we know that this 6th Man will be able to step in, run the offense and execute the game plan because they’ve been to all the practices. But wait, why would an enterprising, software development firm place a non-billable colleague onto a team? The rational is that it’s good for the client, good for the colleague, and in the long run it’s good for RSI. For the client it’s the assurance that they know there’s a backup waiting to get in the game in case something happens. For the colleague it’s a better use of “bench time” than creating a “make work” internal project or watching another PluralSight video. For RSI it’s a way to keep both clients and colleagues engaged and happy. As March Madness enters the Sweet Sixteen and Final Four rounds take notice of how those 6th man players ultimately impact the game and success of the eventual winners.

Why You Should Consider Human-Computer Interaction

A program that a human can easily and intuitively use is considered to have a strong human-computer interaction, and will ultimately attract more users. This is usually described as being user-friendly but to do this is not as easy as it may sound. Understanding the intended audience during the software development life cycle (SDLC) can help business analysts determine desired functionality, developers create a robust program, and testers establish valuable testing scenarios. So how do you go about creating and maintaining a strong human-computer interaction? One way is by creating a pleasant user experience, which can be challenging. Popular sites such as Google.com, usually contain good examples that consciously or even unconsciously draw you to their website. Google's main page utilizes many human-computer interaction guidelines, such as: White space that delivers a minimalistic, but simplistic layout, while organizing all of its key elements. An empty box in the center of the page that clearly displays its purpose and easily allows the user to search. A strong input-output response that assures the user that it is working as intended. Google Doodle which displays the Google logo in various designs to celebrate holidays or significant days. This not only draws visitors to the site to see if there is a doodle for the day but also engages them to learn about a topic that they may not have known about or even considered. With all of these design elements, it’s clear that this website knows how they want to appeal to their audience and has designed it to continually and successfully attract more users. The idea of improving the human-computer interaction factor of programs has been a growing standard for years. Along with the various courses and media available, there are also several conventions hosted around the world dedicated to discussing and sharing different breakthroughs in the field. Conventions such as the HCI International have plenty of presentations led by top researchers in the field discussing their findings. Even the International Organization of Standards have established ISO 9241, which explains internationally accepted standards when it comes to the ergonomics of human-computer interaction. Is this something you have been doing without realizing? Or is this something you never actually thought about? If anything, perhaps this is something to consider.

Why Throwing More Bodies at Your IT Project is Not the Answer

A lot of companies find that competitive advantage comes with cutting costs and increasing speed to market. And that often works except if they’re launching a new IT project. This brings a new set of challenges, especially since the first reaction is to see who’s on staff who could do it. Throwing additional internal resources toward an IT project might not give you the competitive advantage you’re looking for. In fact, it could very well slow you down. The first potential impact is overextending staff by pulling them onto yet another project and moving their focus away from important, business critical tasks they were hired to do in the first place. Next, lack of expertise can become a roadblock. This can be costly when a project slows down due to errors or delays needed by staff to ramp up and learn something new. Another solution to consider is outsourcing because it can provide the flexibility and scalability that you need to innovate and get to market faster. Companies such as Basecamp, Squawker and Github, were created with outsourced development. Why? It’s smarter. The benefits of outsourcing are numerous. Let’s take application development as an example: 1. Experience – you’ll get the expertise you need, when you need it. Outsourcing means your development will be done by professionals who live and breathe development and are constantly learning and applying the latest IT trends to projects 2. Scalability – outsourcing allows you to rapidly scale up or down your development needs without the expense and long-term commitment of hiring additional full-time staff or overextending existing IT staff. 3. Efficiency – a team that is 100% focused on your IT project will increase your speed to market, getting the job done without spending unnecessary time and money on the development phase. 4. Reduced costs – increased efficiencies alone will reduce development costs but you’ll also reduce overhead costs and pay for the services you use, allowing you to save money during periods of low activity. The next time you’re faced with a new IT project with limited resources, you could save time and money by rethinking the reaction to simply throw more bodies at it and consider outsourcing instead.

Node.js is for Everyone

When asked about Node.js, most developers would say that they have heard of it and may have even used it in some aspect of a project. When asked what Node.js is, the conversation tends to take a different turn into different technology “buzzwords” such as Meteor, MongoDB, and sometimes even Express will come up. The point is that while a lot of developers have heard of Node.js that is about as far as it goes. Node.js is a newer technology that is rapidly climbing to the top in the technology stacks of a multitude of large companies. Wal-Mart, PayPal, Netflix, LinkedIn, and many others are using the technology on a daily basis. So what exactly does Node.js do? Simply put, Node.js is a server side JavaScript runtime. It is single threaded, asynchronous, and event driven. Node.js is built with Google’s Chrome V8 JavaScript engine, it compiles the JavaScript source code to native machine code instead of interpreting it in real time, which in turn allows JavaScript on the server side to run almost as fast as compiled code. Node.js uses an event loop to process incoming requests. This means that as requests come in, Node.js will process them one at a time and send callbacks out as a response. Node.js is capable of running on a majority of different types of servers. Windows, Linux, Mac OS, UNIX, and ARM are just some of the servers that Node.js can be and has been deployed on. Not only will it run on just about anything, it is open source as well. Pre-built binaries and the source code is available on the Node.js site. Node.js is a server side JavaScript interpreter, so how do things get done with Node.js? This is done through modules, third party libraries, and other frameworks to expand Node. These packages are managed with the Node.js package manager called npm (node package manager). There are frameworks for MVC (Model-View-Controller), desktop applications, web servers, and just about anything else you would want. Node.js is definitely worth looking into as a developer, even if it is just to become more familiar with the terminology and different technologies associated with it because it is not going away and will only get bigger. More and more companies are finding internal uses for Node.js and a lot are using it to build web apps, mobile sites, desktop apps, or just using it to host their web API. It is lightweight, versatile, and doesn’t require much to run efficiently. It is definitely a technology to keep track of.

WordPress Plugins – The Starter Pack

WordPress is one of the most powerful content management systems for building websites. It’s intuitive dashboard and ability to add themes and templates are all strong features. But one thing that makes WordPress rise above the competition is the extensive library of plugins. I have yet to come to a point where I can’t find a plugin that does what I need. Whether you need responsive tabs, an impressive slider, social media feeds, or pop-up banners, there’s a plugin for almost any feature. When beginning a build, consider obtaining a “starter pack.” These are the three plugins that I’ve used the most often and have been the most helpful when starting to build a website.  1. Jetpack Cost: Free! The Jetpack plugin contains several features within itself, so I’ll just highlight my three personal favorites. The first feature I always activate is “Stats." This feature allows you to see how many people are visiting your site each day and how they ended up there. My next activation is “Subscriptions" which allows users to subscribe to your blog. The third feature is “Publicize” which allows you to automatically update your social feeds when new content is posted to your blog. 2. Custom Facebook Feed Cost: Free! The custom Facebook feed plugin does pretty much what it sounds like. It allows you to display a live Facebook feed on your website. There are paid features you can unlock, but with the free version you can control how many posts are shown in the feed, how often the plugin will check for updates, the size of the feed, and the placement of the page “Like” button. 3. Revolution Slider Cost: $19 The Revolution Slider plugin isn’t free, but it’s worth the $19 if you want a slider on your website. With Revolution Slider, you can easily control all animations, text placement, add videos, and most importantly, it makes sure your slider is responsive for every screen size. There are thousands and thousands of WordPress plugins, but these few can help you get a good start on your website build!

Scrum Master Vs Project Manager: Different Roles, Different Individuals

A common misconception among those new to Agile software development is that the Scrum Master role is identical to the traditional Project Manager role. In reality, this is demonstrably untrue and differences between these roles is illustrated when we consider scope of influence and ownership. While there are some shared tasks and similarities between these roles, they are at their foundations, separate roles with incongruent fields of influence. A Scrum Master is a facilitator focused intently on a Scrum Team and its deliverables. The term facilitator is used specifically because the Scrum Master does not lead the team, dictate the work they will do, or the order that the work will be done. A Scrum Master’s role is one of support. Decision-making powers within the Scrum Team are decentralized; the Scrum Master facilitates conversations that lead to solutions. The Scrum Master coaches the team and the Product Owner in Scrum processes, but does not make standalone task level or feature decisions. Essentially, the Scrum Master is embedded within a Scrum Team and is responsible for the work that the Scrum Team develops and launches. In large projects with multiple Scrum Teams, a Project Manager is usually positioned to track the project as a whole, managing project timelines, budgets, contracts, and risk. In this position, the Project Manager is a leader, a decision maker and is empowered with dictating the priority of work, cutting/adding features and adjusting resources while the Scrum Master is concerned with budget, contracts, and timelines as they relate directly to the Scrum Team and their deliverables. The Scrum Master and Project Manager roles are both important in their own way. Each project is unique and as such, management should exercise careful consideration when creating staffing plans for non-development task owners. It may be that a project requires a Scrum Master to help facilitate execution, along with the dedicated contract negotiation skills of a practiced Project Manager. In this case, it would be preferable to have a Scrum Master who also happens to be a Project Manager selected for that role. Many times, the Project Manager and Scrum Master roles are staffed by different individuals to prevent overtasking and conflicts of interest that could break down the Agile process.

Slick Modular Web Components with Polymer

As a primarily back-end focused developer, I admit that sometimes I find user interface work pretty tedious, especially when I can’t get something to look or behave the way I feel it should. On large projects, stylesheets can get cluttered and I have a bad habit of throwing everything into a single “site.css” file that gets loaded into every page. I wind up with dozens of CSS classes and identifiers to make sure that each component of my website has its own specialized styling and doesn’t accidentally inherit the styles of something else. Usually, the look and feel of my site is at the mercy of whatever CSS library I’m using. Fortunately, I’ve discovered a relatively new framework that takes a lot of headache out of front-end design. The framework is called Polymer: a JavaScript framework from Google that takes Web Components to a new level. Here are three features of Polymer that make it great: 1. Hundreds of plug-and-play elements The Polymer Element Catalog has many useful open source elements that can be directly included in your source code once the Polymer framework has been installed, ranging from responsive and animated text fields and buttons, to elements which help you manage AJAX requests. The elements have declarative syntax, meaning that once you’ve included them in your project, they can be inserted directly into your HTML files just as easily as any of the native HTML elements. You can combine these elements with data bindings to pass values between components and validate forms without writing any JavaScript. 2. Custom elements If you can’t find the right element to suit your needs, Polymer gives you the tools to build your own elements. Elements have encapsulated style, form and function, meaning you can detail specifically how an element is to look and behave. Polymer elements contain methods and properties that can be called from other elements in the DOM. This makes your components feel more like extensible objects, rather than simple UI elements. 3. Class-like inheritance If you have a shared functionality or style among a number of elements, you definitely don’t want to repeat that code. Fortunately, Polymer allows you to inherit multiple styles and behaviors into elements. Instead of re-writing a particular function for each of your elements, you can instead write that function as a behavior, and have each element extend it. Similarly, if you wish for a family of custom elements to use the same CSS properties, you can import one or many custom style elements. These elements enable easy theming, allowing you to change the appearance of your application simply by swapping style elements. For more information on Polymer, check out their Polycasts on YouTube as well as their Polymer Starter Kit.

The Top 5 Reasons Your Company Should Go Agile

Agile development is not new. In fact, it’s been 15 years since the was created as an alternative to software development processes, such as waterfall. At this point, agile is not a passing fad and if you haven’t adopted it yet, 2016 may be the year. Here’s five reasons why: 1. It enables a faster time to market. Every business wants to get a new product to market as fast as possible especially when that product will help drive revenue. In contrast to the waterfall development approach, in which each phase of a project must be completed before the next phase can begin, agile development breaks projects down into smaller increments with short timeframes called sprints. Within each sprint product development occurs across the various phases simultaneously. This allows development teams to bring products to market much faster. The resulting product does not need to reach its full functionality or include a complete set of features before being released. Development teams put effort on specific functionality during each sprint, setting short time periods during which work is to be completed and made ready for review. This allows for the release of software more frequently and with greater focus on the features and functionality that will deliver the highest return on investment and/or are most critical for the business. 2. It allows for continuous improvement. Organizations are always looking for the best software development method, but implementing a new process or tweaking an existing process can have a big impact on the business when sequential development approaches, such as waterfall, are employed. Agile development makes it possible to continuously improve processes, which in turn drive efficiency. You will be able to identify inefficiencies and improve processes within each sprint because Agile’s short development cycle allows development teams to try new approaches and ideas while they are developing, leading to innovation and improved efficiency. 3. It is user focused. You want to bring products to market that users want and need, right? At the end of the day, these products drive your business in more ways than one. Bringing products to market more frequently and in shorter intervals means that you can iterate and improve quickly based on customer feedback. In this regard, development becomes more user focused and considers direction from the end user. And when those changes need to be made, the shorter agile development cycle means you’re able to get valuable feedback early in the project and make additions or changes in the next sprint. 4. It’s flexible. Unlike traditional software development methods, Agile allows you to better adapt and meet changing needs. This eliminates getting to the end of a long development cycle only to realize the product you have created does not meet your current business needs. 5. It drives transparency. Frequent communication between the development team and the business helps discover issues and other challenges early, providing opportunities for quick resolution. In contrast, a lack of transparency makes it difficult to adjust to changes, keep track of the work being completed, and identify and eliminate potential roadblocks. Transparency helps the team make sound, informed decisions and keeps projects on track. More and more businesses are realizing that with Agile development comes tremendous benefits. In today's fast paced, competitive business environment, Agile can help drive your software development efforts to realized business success.

The Pros & Cons of CMS APP Builders

So you’ve decided you want to build your mobile application with a cross-platform solution. Now what? There is yet another decision to be made: Should you build your app with a CMS? Let’s first go over a quick definition of CMS, or content management system. What makes a CMS a CMS? First, there is usually more of a drag-and-drop feel than actual coding. An example may be dragging and dropping a text box component rather than coding ‘<input type="text"></input>’. Next, there will be some type of dashboard. And usually you will be able to create different permissions for various users of the dashboard. For example, you may want to allow someone to be able to sign on and change some text, but you may not want them to be able to edit the styling of the application so you would edit their permissions accordingly. Now, let’s take a look at the pros and cons of CMS app builders to help us answer the question we originally asked: Should you build your app with a CMS? Pros Code faster - CMS app builders allow you to build apps at lightning speed. I can build a complete app (ready to be submitted to the app stores) with a CMS builder within hours. The ease of drag-and-drop can save huge amounts of time and effort. Client customization - This pro comes along with the dashboard aspect of CMS builders. This comes in handy when you are offering customizable apps for clients. With a dashboard, you can create a login for the client and let them sign on to their application’s backend for simple text updates or adding a blog to a blog section, for example. Automatic updates - Getting an app through the App Store can be a frustrating process because of the length of time it takes to be approved. That’s not so bad for the initial submission, but waiting days for each update can be an issue if you have a client that is constantly wanting changes. Usually with CMS builders, you can automatically push 99% of updates (excluding splash screen or icon changes). Cons Costs money - One major con to using a CMS builder is that it is not free. Usually for a single app, it will cost about $50/month and will only stay live while you are paying the subscription. For reference, check out the pricing sheet for one of the top CMS builders here. You can easily see how this could get very expensive very fast with multiple apps. One thing to keep in mind is that if you know you will be creating multiple apps, most CMS solutions offer some type of affiliate program. This means you will be able to pay a higher monthly fee, but you will be able to create as many apps as you like. Less control - Sometimes with CMS builders, you lose 100% control of what you can do with your app. For example, they may only offer a set amount of templates you can use for a page. Most will offer a blank HTML template you can code yourself to help with this, but if you are trying to avoid hours spent coding then that doesn’t really solve your problem. So, what’s the answer? Of course, it depends. If money isn’t an issue and you want to be able to quickly create customizable apps, a CMS builder is most likely the way to go.

Coding Mobile Applications: To Go Native or Not

Before you begin coding a mobile application, there are several questions you need to answer. ● How many platforms am I going to support? ● Do I want to support a web app? ● Which platform should I start with? And the question we are going to look at in this blog post... ● Should I code natively or use a cross-platform method? First, let me give a quick definition of the two options. Native: This means you code for each platform. Meaning, you use XCode for iOS development, Android Studio for Android development, and so on. Cross-Platform: “Code once, run everywhere.” Write your code once, usually with HTML5/JavaScript, and run the application on multiple platforms. Now, let’s look at the question again: Should I code natively or use a cross-platform method? After reading the definitions, it may seem obvious that you would want to choose cross-platform because it only requires you to code your application once. But there’s another piece of information missing that you will need to make your decision. When you code cross-platform, there’s a chance you will miss some native functionality. For example, the overall look and feel of your application may not match the platform it is running on. Or, you may not be able to access all the features on say an iPhone camera or any other feature that is platform specific. With all of this in mind, the real answer to the question is: It depends. I know, that’s not the straightforward answer you were hoping for. But it is the correct answer. The way you code your mobile application depends on the way you want your application to be used. If you want to be able to access all of the platform specific features (or even just a few key ones), it is probably worth it to code natively. Or, if you want your application to have the look and feel of the platform it is running on, it is probably worth it to code natively. If the overall look and feel and platform specific features aren’t as important to you, you may want to look into some cross-platform solutions such as Appcelerator, but there are many solutions and it’s important that you find the right one for you. If you decide to go with cross-platform development, check out my next blog on cross-platform CMS builders.

Your Team’s Not Agile Unless You Are Doing Agile Testing

For many software testing professionals experienced in traditional development processes, working in an Agile project can be a foreign concept. Testing in older development models often only takes place near the end of a major development phase by a team of dedicated testers. As a result, test phases can be seen as a bottleneck since a multitude of bugs can be (and most often, are) found when QA analysts start looking at previously untested software. In order to meet deadlines, testing phases may be shortened or eliminated altogether, resulting in increased numbers of potentially severe issues at worst, or increased customer support workload at best. Utilizing Agile development practices can alleviate these problems by integrating testing throughout the development process, allowing for a higher quality application. Agile processes can seem chaotic or time-consuming at first, especially if the team is unfamiliar with or still adapting to the shift in thinking required. Whereas traditional development cycles will have a definite start and end, Agile projects are often treated as a continuous endeavor made up of iterations, or sprints, which often last around two weeks. Team members decide on what issues or functionality they will deal with in each iteration, and once that sprint is finished, the next one begins. Testing is not performed in only one phase of the process, but is integrated into each phase to varying degrees, starting as soon as code is created. Members of an Agile team are often expected to utilize different skills, so it is not unheard of for developers, stakeholders, and other roles to perform some types of testing duties along with the QA team. Testers should be well-versed in a variety of testing tools and techniques. Commonly, testing will be exploratory in nature, but understanding how to perform acceptance, UX, load/performance, and even unit testing can be beneficial in an Agile project. Since regression tests can become burdensome over time, many teams implement some form of automated testing. In order to decide whether to add automated tests to a project, team members should weigh the time spent on regression testing against the time that will be spent maintaining the automated test scripts, which can become a problem if the system changes too much, too frequently. Agile processes are not flawless. Acceptance criteria can change unexpectedly based on stakeholder feedback, and a lack of documentation can create knowledge gaps for the team. Luckily, these types of problems can be avoided if Agile methodologies are properly used. Continuous communication between team members, along with having everyone as involved as possible in each step of the process, can reduce communication issues and help the team to be more adaptable to any changes that can come up. Understanding the nuts and bolts of a system or application and how it should behave under certain conditions is essential to any testing efforts, and with the continuous testing integration that Agile methodologies provide, that type of understanding can be achieved with relative ease.

Sign up for our blog updates!