Four Ways to Include Your Users to More Successfully Update Your Legacy System

The thought of updating a legacy system can be intimidating, especially when you have a user base to maintain. I, however, see this as an advantage. Besides select members of your organization, who else knows your product and its functionality better than those who use it? You can save yourself time, money, and a lot of headaches by actually including your users in in your legacy system update. Read on for four ways to make it happen. Segment your users In order to include your users in the process, first you need to figure out exactly which groups of users you’re going to utilize. The most important thing to remember is that you’ll want a representative slice across your user base. You’ll want to include some big and small users, and also make sure you get a range of users that utilize all of aspects of product functionality. You may need to do some data analysis and define your “casual users” and “power users” so you can work with some from each group. Get them the product sooner rather than later The quicker you can get the product in front of your users, the sooner you can get feedback. Even if it’s just a small issue like screen resolution size or element tab orders that slow down data entry, the quicker you can identify these bugs the quicker you can pivot. You don’t want to find yourself months into the process before you identify something that’ll cause your project to have to start from scratch, meaning both time and money lost. I specifically promote Agile sprints with my team for this reason. Determine your marketing research methods Whether it’s focus groups, surveys or hands-on demonstrations, decide the ways and means you’ll be soliciting feedback from your users. Taking a phased approach to product deployment can be a helpful way to do this. Even if you’re still at the stage where you can’t get the product in their hands just yet, you can communicate the types of changes that are coming and ask for feedback or questions. Once you’re farther along, hands-on demonstrations can be a great way to identify any last-minute glitches. Decide how you’ll handle user feedback People in your organization will have varying reasons for which changes they’d like to see. Once you’ve decided which changes you’re going to make and why they’re important, your users might have other opinions. What are you going to do if you experience negative feedback? Are you going to stand firm or change course? You need to plan in advance how you’re going to handle these oppositions, or you’ll be putting your project at risk for derailment. Speed to market requirements keep accelerating. Most organizations no longer have the luxury of taking 6-12 months to design and develop a solution before their users have a chance to see it. By involving your users early and often, and treating them as partners in the development process, you’re more likely to end up with a better product and happy, loyal customers. About the Author:Gary Gealy is a Senior Consultant with 30+ years of experience in programming, supervision and technical support. He feels strongly that software development is as much a craft as it is a science and as such mentoring and training are critical to growing an organization. He has developed software across a number of markets including the Insurance Adjusting, Manufacturing, Food Services and GIS industries. WATCH GARY'S TECH IN 2 VIDEO

Software Development Trends for 2021

As we welcome the start of a new year, we also welcome the excitement that comes with new technology on the horizon. This is especially true in the world of software development. We talked to some of our developers to learn the latest updates and trends that they’re excited about for 2021, and what those improvements will bring to our clients.   “I’m excited to see the .NET framework and machine learning coming together. ML.NET (machine learning in .NET) is a ‘neural net in a box’ we can apply to many potential applications to bring the strength of neural net processing to our client applications. It’ll empower our clients to make better business decisions.” - Kenn, Fort Wayne Development Center “I’ve been helping a client transition to using Elixir/Phoenix for their codebase for the past two years. There are changes coming up in 2021 that should improve the speed of code running with the Elixir Virtual Machine. There are also more developments on the horizon within the Elixir community that will make it easier to troubleshoot errors in the codebase. I’m excited about the possibility of us gaining additional expertise in Elixir, and Rural Sourcing utilizing it as a solution for more clients.” - Matt, Albuquerque Development Center “Snowflake has really taken off lately! I’m excited about how it could help our database colleagues offer a more Agile or extreme datawarehousing approach to our clients.” – Margret, Albuquerque Development Center “Deno as the next generation of Node. It’s doing a great job of addressing the security concerns associated with Node applications, and will help prove to any Node naysayers that the technology is mature enough to adopt, even for enterprise level applications.”  - Devin, Albuquerque Development Center  “A big trend right now is API-first development. I think this is exciting for Rural Sourcing, because it gives us the opportunity to call attention to the contribution that QA can provide for our clients. QA can ensure that the foundation of a complicated system is a solid one and protect a client's brand by providing a reliably positive experience for those who are consumers of these APIs across a variety of platforms.” – Andrés, Fort Wayne Development Center “The new .NET Core means we won’t be working with two divergent stacks any more. The improvements they've made to how their platform works are really exciting.” – Eric, Oklahoma City Development Center “Kibana is a new open source dashboard that provides search and data visualization capabilities within Elasticsearch. The project we’re utilizing this technology on helps our client better understand how their data is being used, what problems are occurring, and how often. I look forward to getting to use this tech stack with more clients in the future.” – Brandon, Jonesboro Development Center DISCOVER MORE

Five Ways For an Easier Transition to AWS

While living in the Cloud has become the new normal for many companies, there are still plenty out there that have yet to make the move. It’s a huge effort for your development team, with a lot of room for error. That’s why I’ve assembled these five crucial steps to help you work through a successful AWS implementation. Even if you’re not involved in setting up the architecture, this guide will help you gain a much deeper understanding of AWS functions.  Create a plan, but be willing to pivot Fail to plan and you plan to fail, right? No successful AWS implementation happens without a solid plan in place, but remember that things do (and will) come up: third party dependency problems, requirements changes, even service outages. When you’re getting started, some important questions to ask include “what are the application’s goals?”, “what kind of traffic will it have?”, “how is the app going to be built?”, and “where will your team be located?”. Perform Infrastructure as Code to avoid the human error element that comes with doing things manually. And anticipate failure and have a procedure in place to respond, be it disaster recovery or remediation documentation. Make security a top priority  These days, large corporate security breaches are pretty much guaranteed to make the news. So, keep your company happy (and off of CNN) by making sure your AWS implementation is secure. To start, use AWS Identity and Access Management (IAM) to create a security identity. If you don’t have one in place, it’s hard to get everyone on your team to do their part. And when everybody isn’t doing their part, gaps can get overlooked. You’ll also want to prepare for security events ahead of time. For example, if an unknown user or strange traffic pattern arises, do you want an automated or human response? Or both? The sooner you get your eyes on a security problem, the sooner you can get it solved and potentially lessen severity. Manage costs... ahead of time Keeping your costs in check is an important part of the implementation process. Over provisioning of resources is all too common, as well as the unexpected costs in transferring data in and out of the Cloud. If your need for resources fluctuates throughout the year, a consumption model can help. By adopting this type of operating model, you utilize auto-scaling and only pay for the resources that are required. Just be careful, though. With the benefits of auto-scaling come a few drawbacks: if only the application scales up, the infrastructure that supports it could potentially become a bottleneck, and cause delays or timeouts; or if the database isn’t scaling at the same rate as the web application, this could cause connection issues while the read/write operations struggle to keep up. Ensure reliability Sure, the AWS SLA is reliable, but what can happen in the procedures that take place between you and AWS? Network problems, power loss… you’ll want to test your recovery procedures in advance so you can automatically recover from any failures in the future. Another way to ensure reliability is to stop guessing capacity. I’ve heard time and time again from clients that “it’ll never be more than x amount,” and then sure enough, it ends up over the estimate. Now you’ve been impacted, whether that’s the extra amount of time spent, or a dollar amount lost. If you’re on a consumption model with auto-scaling, it just gets done. Optimize overall performance Rather than having your team learn how to host and run a new technology, that technology can be consumed as a service. For example, NoSQL databases, media transcoding, and machine learning require expertise that isn’t always available on every team. AWS has services that can be consumed while the team continues to focus on product development and business value, instead of trying to master something new. Another way to optimize site performance is by using serverless architectures: they’re easy to deploy, low cost, scalable, and allow for continuous improvement. Finally, be sure to use some “mechanical sympathy.” That means understand and deploy technology that best aligns with what you’re trying to achieve. For example, consider data access patterns when selecting database or storage approaches. You don’t want to choose completely opposing technologies for your stack. AWS implementation can be a big undertaking, but with the right team in place and a well-thought-out strategy, transitioning to the Cloud is easier than you think. Learn more about how Rural Sourcing has helped clients implement AWS for their organizations by visiting our Results page. LEARN MORE ABOUT OUR AWS CAPABILITIES

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. LEARN MORE ABOUT RURAL SOURCING

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.

Scaffolding – The Future of Software Development

As science and technology evolve, new features are compounded upon old features like building blocks. Most people agree that in this linear fashion you can’t get to point ‘C’ without starting at point ‘A’. But should you really have to start from point ‘A’ every single time? Let’s talk math for a bit. Don’t worry, you don’t actually have to solve anything. Take this equation: ∫6x = 3×2 + c. Since we’re taking the integral of 6x, this is labelled as Integral Calculus. According to Kahn Academy, one of the leading sites for learning mathematics, before learning Integral Calculus, you should know Algebra, Geometry, Trigonometry, Probability and Statistics, Pre-calculus and Differential Calculus (in roughly that order). It would be insane to do an exercise in all of those every single time you had to do an integration problem. But in software development, that’s exactly what we do. If you’re a software developer, you’re probably thinking I’m crazy, but hear me out. One more hypothetical scenario: let’s look at what it would take to make an Android app. First, we need to design the login page. Well, that’s got to be easy, since all login pages look pretty much the same, except some mild theme rolling. So we put up fields for username and password, then buttons for submission, registration, and password retrieval. We’ll take care of login itself first, so we write a method to encrypt the password to SHA-256 before submitting it to our server. That’s when you find out that newer versions of Android can’t do network calls on the UI thread, and you scream out in frustration, “Why am I making something as mundane as a login screen? People have done this a thousand times, this is ridiculous!” Think about how many applications haven’t been made because the tasks leading up to it were too complicated, took too long, or were just too boring. As software grows and requires more boilerplate code, the effort of a developer grows greatly – and this is just to ensure a sturdy foundation. Thankfully, there’s an answer – scaffolding. Scaffolding, in the software development sense, is the technique of generating a generic application with features common to most modern applications already built-in. A decent scaffold would include, for instance: login and registration pages, server connections, routing, model templates, controllers, security mechanisms. By using a scaffold, you can cut days, if not weeks, off of your development time – and we’re just getting started. So, how can you start scaffolding your next application? Well, luckily, Yeoman makes that part super easy. The downside – Yeoman is geared primarily toward web development with NodeJS. Why aren’t there really scaffolds for mobile or desktop applications? The only real answer is because nobody’s created it yet. Keep an eye out, though; the market is prime for a major scaffolding company any day now. - Christopher Johnson