The Top 4 Reasons to Build Your Next Application in React

React and Angular are arguably the two most popular tools available for front-end development today, and while I do look forward to discussing Angular, I’m not-so-secretly excited to be starting with React. I work in it every day, and since it’s the only tool I use for my pet projects, it wouldn’t exactly be a stretch to say that it’s my favorite. However, before I go any further with my (slightly) biased opinions about it, the unbiased consultant in me must share this caveat: only when you consider your team, future goals, and project (in that order) will you know which tool is best for your organization. With that in mind, take a look at my favorite features of React.Facilitates Component-Driven ArchitectureThe history of software has taught us that small, reusable chunks of code give us faster development, easier maintenance, and fewer bugs. The innovation of the frontend has brought the necessity to follow good design patterns and principles that we previously only saw on the backend. Components have become the vessel by which we can accomplish this on the frontend. We create, for example, a button component that looks and responds to user actions the way we want, and we use that component all throughout the codebase. This means we never have to think about how our button looks and responds ever again unless to make a purposeful change. When we do decide to change the look and feel of our buttons, we have one single component to update, and those changes are then reflected throughout the entire app. React provides a fast and solid foundation from which to build our component-driven architecture. It offers few opinions about how it should be done, leaving those decisions up to your team, goals, and demands of the project. Robust EcosystemReact has one of the best ecosystems around, without question. I always take the ecosystem into account when I’m considering a technology. Technology with a vast and energetic ecosystem tends to have great momentum. With that momentum comes continued innovation and support. It also helps to ensure support is available if I ever hit some weird edge-case that greatly hinders my application in some way. The React ecosystem plays a huge role in the success and growth of developers, too. Information on how to be a better React developer is plentiful. Discussion boards are thriving with best practices, new ideas, and better ways to make the best use of React. All of these things make it easy to adopt and learn React, priming your project for success. Deliberate Decisions from the React TeamReact is an open-source project, which means anyone can contribute to its core codebase, and therefore, directly affect the websites or web applications of millions of people worldwide. This is a tremendous responsibility and one that the React team takes very, very seriously. It is the primary reason I trust building applications on top of React. I know that the React team is going to be thorough and thoughtful in their decision-making process to ensure that they add value without introducing breaking changes and bugs. I’ve been burned by many other open-source projects who recklessly accept pull requests, make breaking changes, or just completely abandon the project altogether.I’ve seen the React team take six months or more to thoroughly discuss and evaluate suggested features or changes to ensure that they’re making the best possible decision. No haste or fluff, just thoughtful, deliberate discussions to ensure the right decision is made. It’s a huge commitment when we choose to build our application on top of someone else’s work. We’re at their mercy, and breaking from them would likely require a full rewrite of the application. It gives me so much peace of mind and confidence every time I see how deliberate the React team is about introducing new features and/or changes.Great Experience for Users and DevelopersWe all know user experience is important, and React gives us the foundation we need to facilitate a great interaction with our users. Pretty much every project these days talks about user experience during the planning phase, but I rarely hear the developer experience discussed.A solid developer experience primes your project for success, increases velocity, and ensures consistent delivery of bug-free code that can respond to the business’s and users’ changing needs. React, and its ecosystem, certainly sets a great example and provides a solid foundation for a seamless developer experience. Ample documentation on how to easily set up supporting tools and best practices ensures your developers can work as efficiently as possible.When I work in React, I know what I’m in for:  a reliable tool that provides developers with a robust, dependable experience that still gives us the flexibility for customization. Curious about how React stacks up against the other Goliath in the application platform space? Check back in June to learn all about Angular.   About the Author:Wes Dollar is a full-stack engineer with 21 years of experience in website & web-based software development. He has served as a business analyst & tech lead for clients ranging from startups to Fortune 500 companies. He has a passion for providing solutions to complex problems in a manner that is intuitive and easy for the end-user to use & understand. Most of his career has been spent on the open-stack side of the fence, where he has made many contributions to the Laravel (PHP) ecosystem. He is an HTML5/CSS3/JavaScript expert with strict compliance to W3C standards & 508 accessibility. He specializes in ecommerce & conversion rate optimization through UX design and also specializes in developing business systems, processes, and integrations.

Augusta Development Center Spotlight

What’s the first thing that comes to mind when you hear “Augusta, Georgia?” As host of The Masters, the first major golf tournament of the season, Augusta is used to this upper-crust affiliation. The Garden City is still humble, though, and it’s home to our second center and more than 120 of our colleagues. We talked to Augusta Development Center Director Dr. Tony Robinson to learn all about it.Making an impactOur Augusta Development Center is heavily involved in the local and statewide business communities, through active involvement locally with the Augusta Metro Chamber of Commerce and Columbia County Chamber of Commerce, and statewide through Lt. Governor Geoff Duncan’s task force: Georgia Innovates/Rural Initiatives. Tony shares, “By serving on this task force, our center gets the chance to help cultivate opportunities for innovators, entrepreneurs, and small businesses throughout the state.” Enjoying their downtimeWondering how our Augusta colleagues have fun? Look no further than the always popular Nerdlympics competition, where colleagues have invented a number of technology-themed games including Planning Putt Putt and Blocker Resolution and Cup Stacking. Tony says, “Whether you’re on a team or just watching the competition, it’s always fun to see the innovative ideas our colleagues come up with!” Plus, the variety of parks and recreation in Augusta, including the Savannah River, and numerous cultural events like Arts in the Heart of Augusta, the Westobou Festival, and the Greek Festival give everyone the chance to get outside and enjoy the great weather you tend to find Georgia.Supporting the communityCommunity engagement is a big part of life at all of our centers, but in Augusta, it’s truly at the heart of everything they do. By working closely with educational partners like Augusta University, USC Aiken, and Augusta Technical College, our colleagues get involved with STEM-related activities like the Augusta University STEAMIFY Competition, where college students have gone on to compete and place in international competitions. Plus, through board leadership and classroom activities, our Augusta colleagues have been involved in technical programming curriculum development, and coaching engagements. To top it all off, the center was recently recognized with a philanthropy award based on the impact of their fundraising efforts for the United Way of the Central Savannah River Area (CSRA).What’s one of Tony’s favorite parts about Augusta? “The diversity of the community and educational opportunities combined with all the great amenities we have, make this city a very special place to live and raise a family.” Learn more about Augusta by reading up on featured colleagues Samaiyah, Nick, and Richard.

Fort Wayne Development Center Spotlight

Located in the heart of Fort Wayne’s reinvigorated downtown neighborhood, our newest Development Center is full of colleagues who have an “engineer’s mind and a teacher’s heart” as Development Center Director Bill Rose puts it. “I like to describe the culture at our center as being colleague focused and delivery driven. There’s a strong Midwestern work ethic here, and everyone is very passionate about what they do.”Giving backAs Bill says, “Fort Wayne loves Fort Wayne,” which means the business community, and the city as a whole, is very tightknit and supportive. In addition to being involved with the Northwest Indiana Regional Partnership (the local economic development agency), our colleagues get very motivated when it comes to helping with STEM activities. A few events they’ve participated in include the Fort Wayne STEM Fest and the Fort Wayne Mad Ants STEAM Fest. Coming up this fall is a workshop that one of our colleagues will be leading for the area Girl Scouts Council, where they’ll learn about digital game design as part of the Coding for Good camp.Thin Mint taste testFort Wayne Mad Ants STEAM FestSalsa making competitionA competitive spiritThere’s definitely no shortage of fun in Fort Wayne, even when you’re in the office. Some of our colleagues’ favorite activities have included throwing pies in managers’ faces for charity, a virtual background competition, the annual Nerdlympics ceremonies, and, well… just about anything involving food! For those who would rather watch the competition than take part in it, Fort Wayne has minor league baseball, hockey, and basketball teams to enjoy. Plus, starting later this year, one of our colleagues will be playing in the brand new semi-pro soccer team, the Fort Wayne Football Club. As Bill explains, “Our colleagues are creative and supportive, and they never stop caring, exploring, or laughing!”Learn more about Fort Wayne by reading up on our featured colleagues, David and Blake.

Knative: The Latest Addition to the Kubernetes Tool Kit

Function as a Service (FaaS) and containers come together with Knative, one of the most exciting things happening in the Kubernetes ecosystem right now, especially if you’re using microservices. Knative components build on top of Kubernetes, abstracting away details, allowing for more elaborate deployments and enabling developers to focus on what really matters. Serverless offerings from cloud providers often come with fears of vendor lock in. Knative is open source and you can run it either on your own servers or let Google Cloud or Redhat Openshift manage it on their hardware. If you’re an organization that’s already running on Kubernetes, here are three huge benefits to utilizing Knative.Serverless functionsScale-to-zero serverless functions are one of the more elaborate deployments that can be achieved using Knative, and there are some very good reasons to run them in Kubernetes. The first being that you can operate your serverless workloads in the same domain as you do more traditional microservice or monolithic workloads. This simplifies network architecture and makes automated end to end testing easier and faster. If you're already running on Kubernetes, you can reuse the same CI/CD workflows and SRE tools you're already using.Advanced deployment strategiesBeyond running serverless workloads, Knative allows for advanced deployment strategies like blue/green deployments and custom autoscaling controllers. Knative also works with an optional eventing component that deploys a highly available, cloud native Pub/Sub service.Increased efficiencyThe workspace sees many benefits while running Knative, because you can operate in the Cloud using leaner resources. Running all your workloads in the same domain increases efficiency and security.  This means a lower operational cost and higher velocity. Plus, a quicker turnaround through the development process, so the end user gets a refined product more quickly.Running Knative will give your development team the toolset to build modern, container-based applications with the flexibility to run anywhere: on premises, in the cloud, or even in a third-party data center. If you build or deploy into the Cloud, keep your eye on Knative.NEED HELP? LET'S CHAT.About the author:Thomas Smith is a container evangelist and loves helping craft cloud native solutions. When not building containers, he can be found cycling the Bosque trails of Albuquerque or creating generative music.

Why You’ll Want to Use Elixir to Replatform Your Legacy Application

Have you heard about the latest weapon in the developer’s arsenal? It’s called Elixir, and it’s a dynamic functional language that operates on the Erlang virtual machine. It’s being used more and more by well-known brands like Pinterest, Bleacher Report, and Discord, who need a programming language that can handle high user volume, while also processing a huge number of requests. Despite it being a fairly new language, Elixir’s popularity is rising quickly, especially for those who want to replatform their aging applications. Here’s why it might be the right solution for your next replatforming effort.ScalabilityIn my recent ‘Tech in 2’ video about Elixir, I mentioned that one of its benefits was the scalability of the language. A solution like Elixir works well for a single programmer writing something that can handle a few users, but needs to scale up during certain times of year, for example, to handle a much larger userbase. However, it also works well for applications with consistently high traffic: a client of ours that utilizes Elixir regularly sees over a million users a day. It helps to process simultaneous requests quickly, without sacrificing performance, which means a great user experience for customers.Fault toleranceFault tolerance is another huge benefit of Elixir, compared to other programming languages. Errors happen; we know this ahead of time and Elixir makes it easy to design systems with failure in mind. A common phrase in the Elixir community is “let it crash,” because as developers, we can control how processes respond to failure in the appropriate way using Elixir.Parallelized task efficiencyDo you remember that famous scene in “I Love Lucy” where Lucy and Ethel are working at the chocolate factory, and the conveyer belt becomes overloaded with chocolates, forcing Lucy and Ethel to start eating them as quickly as they can? I’ve heard others compare that scene to the idea of an application’s job pipeline. The person at the beginning of the pipeline can handle an increasing overload fairly easily, but by the time it gets further down the line, you’re going to start seeing bottlenecks. With Elixir, you can spread the application’s various tasks apart without losing efficiency, due to its strength at handling parallelized tasks very quickly.It’s a fan favoriteAnother good reason to use Elixir? Developers love it. Online, you’ll find a growing community of Elixir enthusiasts like me who have embraced the language and never want to go back to a time without it. Combine the ease of learning Elixir with a helpful community who’s constantly sharing tips and tricks, and you’ve got a programming language that us developers are flocking to. Have you heard about the latest weapon in the developer’s arsenal? It’s called Elixir, and it’s a dynamic functional language that operates on the Erlang virtual machine. It’s being used more and more by well-known brands like Pinterest, Bleacher Report, and Discord, who need a programming language that can handle high user volume, while also processing a huge number of requests. Despite it being a fairly new language, Elixir’s popularity is rising quickly, especially for those who want to replatform their aging applications. Here’s why it might be the right solution for your next replatforming effort.ScalabilityIn my recent ‘Tech in 2’ video about Elixir, I mentioned that one of its benefits was the scalability of the language. A solution like Elixir works well for a single programmer writing something that can handle a few users, but needs to scale up during certain times of year, for example, to handle a much larger userbase. However, it also works well for applications with consistently high traffic: a client of ours that utilizes Elixir regularly sees over a million users a day. It helps to process simultaneous requests quickly, without sacrificing performance, which means a great user experience for customers.Fault toleranceFault tolerance is another huge benefit of Elixir, compared to other programming languages. Errors happen; we know this ahead of time and Elixir makes it easy to design systems with failure in mind. A common phrase in the Elixir community is “let it crash,” because as developers, we can control how processes respond to failure in the appropriate way using Elixir.Parallelized task efficiencyDo you remember that famous scene in “I Love Lucy” where Lucy and Ethel are working at the chocolate factory, and the conveyer belt becomes overloaded with chocolates, forcing Lucy and Ethel to start eating them as quickly as they can? I’ve heard others compare that scene to the idea of an application’s job pipeline. The person at the beginning of the pipeline can handle an increasing overload fairly easily, but by the time it gets further down the line, you’re going to start seeing bottlenecks. With Elixir, you can spread the application’s various tasks apart without losing efficiency, due to its strength at handling parallelized tasks very quickly.It’s a fan favoriteAnother good reason to use Elixir? Developers love it. Online, you’ll find a growing community of Elixir enthusiasts like me who have embraced the language and never want to go back to a time without it. Combine the ease of learning Elixir with a helpful community who’s constantly sharing tips and tricks, and you’ve got a programming language that us developers are flocking to. By using Elixir for your next replatforming effort, your application can take advantage of what’s arguably the most efficient and multi-tasking language available today. (Plus, you’ll have a very happy development team.) Learn more about Elixir by watching my Tech in 2 video here.  NEED HELP? LET'S TALK.About the author:Martin Tice has been a software developer for over seven years, and joined Rural Sourcing when our Albuquerque Development Center opened. He’s spent most of his career using different web development stacks, but has always had a passion for functional programming. Since then, he’s been trying to incorporate it into everything he uses. He caught the Elixir bug in 2018 and has enjoyed using it in his role at Rural Sourcing.

Five Practical Tips for Replatforming and Sunsetting of a Legacy Application

Replatforming can be a huge and somewhat intimidating undertaking, but it doesn’t have to be. By using a realistic timeline, creating a thorough project blueprint, and having a bit of flexibility, you’ll be reaping the benefits of your new application before you know it. Here are five practical tips for your replatforming efforts:Have a planDon’t laugh… it may seem obvious, but far too often, I’ve seen teams jump into a replatforming effort, and completely skip the planning phase. (I’ve done it myself, if I’m being honest.) It’s easy to fall into this trap in order to try and save some time. However, if we were to step back from the “ease” of the situation and assess the “why” of our goals, we’d quickly identify the inefficiencies, existing struggles, bad ideas, and bad practices that all lead to extra development time, which is most likely why we’re contemplating a replatforming to begin with. When we approach the replatforming effort with this mindset, it becomes crystal clear that we don’t know everything that we need inside and outside of our replatforming effort. I begin every replatforming by answering several key questions: 1. Why are we doing this, and what problems are we trying to solve? (The real reasons, not the industry buzzword reasons.) 2. What are my goals and desired results? 3. How will success be measured? 4. How will this effort impact existing users? 5. How will this impact existing dev team(s)? 6. How will we respect the business and existing user needs during this process?In other words, I know I’ll still have to get bug fixes and hot items to production in the legacy stack while managing the efforts of replatforming. Once my questions are answered, I approach the problem the same way I approach a brand-new set of requirements. After all, this project is just like any other that I’ve done before. There’s a start, there’s a destination, and my number one job is to formulate a complete plan so I can give my team the exact directions they need to get to our destination, with no wrong turns, no detours, and no roadside emergency calls to AAA.Manage scope creepI really enjoy legacy replatforming efforts, because I’m usually armed with user insight that I wouldn’t have if I were developing a brand-new product. Odds are, I’ve received an earful from users, developers, and the client alike regarding the pain points of the existing application. Because of this, I tend to know exactly what I’m getting myself into.There’s a catch, though. Once the project begins, the requirements are locked in – solid – with zero exceptions. This is the second largest trap I’ve seen so many teams fall into over the years (the first being overall lack of planning). We get a quarter of the way through, someone points out a pain point we didn’t know about – often because of poor planning – and we take it upon ourselves to remedy this pain point during the replatforming effort. First of all, had we planned accordingly, we’d already know about this pain point, and it’d be accounted for. Secondly, by taking on this initiative mid-flight, I’d be willing to bet this month’s paycheck that this “easy fix” wasn’t planned properly and will take two, three, or even four times as long as expected. Anytime you hear a developer say, “oh, that’ll be easy – sure, no problem,” don’t listen. We all know that person. I’ve been that guy. More than once. I have the t-shirt, and the scars. They don’t know the effort yet, so don’t trust them when they say, “it’s easy.” You’ll be let down more often than not. Scope creep will kill a replatforming effort quicker than video killed the radio star. Because we’ve planned accordingly (hint, hint), we’ve locked our requirements in, we know the plan, and we’re going to protect the plan – and say no to new requirements – until we’re done. I make my developers and stakeholders all agree to this upfront, and I remind them of this agreement every step of the way. This replatforming effort is going to net us the architecture we need to respond more quickly to business demands and add new features quicker with lower effort; we can worry about all the “wish list” items when we’re done. Do it in phasesPart of the planning process should include a clear strategy on how we can release our new, shiny efforts into production as we complete them. This means breaking down the project into chunks, and addressing any architectural needs and concerns that will allow both the legacy app and new app to coexist.  You don’t want to replatform in isolation, waiting until we’re “completely done” to release it all in one big ceremony. By releasing updates continuously everyone stays engaged, especially key stakeholders.This won’t be an easy task, but we as engineers are creative problem solvers – we make the seemingly impossible possible. It’s a big ask, but I’ve never met a situation where my team and I weren't able to find a way to make it happen. I’ve made React live with Angular, .NET play with Java, Python feed Ruby on Rails – you get the point. Where there’s a will, there’s a way – it just requires creativity.Learn from past mistakesWe’ve all heard the quote “insanity is repeating the same mistakes and expecting different results.” One could argue that the exact same thing could be said about replatforming. Remember back in our planning where we identified the “why” – why is this needed, why are we doing this, why is what we have currently not working for us? We need to clearly identify the pain points of our existing application and use these discoveries as an opportunity to grow from our past mistakes. These pain points, of course, stem from poor decisions, poor architecture, deep coupling, poor naming conventions, and other bad practices that might have crept into our existing code base. I’ve found, if nothing else, past decisions tell me what not to do this time around. To be clear, I’m more focused on developer experience here. If there are any low hanging user experience pain points I can remedy without affecting my effort or deliverable, sure, why not. But, my main focus is, and will always be, developer experience as part of this process. If I can use the replatforming to improve developer experience, new features get developed quicker, bugs get resolved faster, more code gets to production, and my team has more fun along the way. By taking inventory of the existing pain points in areas such as our current architecture and infrastructure, I have a clear starting point of all the roads I definitely don’t want to travel down. Examining the “why” behind each point will help to guide my decision-making process moving forward to ensure we choose the right technologies and solutions to the problems at hand.Don’t rush itI often meet with stakeholders who are hesitant to invest in replatforming because they have a hard time seeing the value in redeveloping something that is currently making money and “works just fine”. After all, they don’t know what it’s like to work in the legacy application day to day – they’re not the engineers, but once the engineering side of the house finally persuades the business side of the house to give permission for the replatforming, the stakeholders often concede by saying, “fine, but you have until [too short of a timeline] to get it done.” The project is already sunk before it’s started. Corners will be cut and poor decisions will be made, not on purpose, but because there won’t be plans in place to manage the needs of the existing product while replatforming in tandem, and your development team will end up overworked, burned out, and software entropy will start creeping in.When planning your replatforming engagement, stakeholders and engineers alike should be realistic about the timeframe, and leave time for the unknowns, surprise production bugs, proper tooling up of new technologies, and life in general. The best way to protect any project is to keep your developers engaged, and give them enough time to set the company up for success. Only then will they be able to deliver a codebase that will support the company for years to come, engineered with continual growth in mind. NEED HELP REPLATFORMING? LET'S TALKAbout the Author:Wes Dollar is a full-stack engineer with 21 years of experience in website & web-based software development. He has served as a business analyst & tech lead for clients ranging from startups to Fortune 500 companies. He has a passion for providing solutions to complex problems in a manner that is intuitive and easy for the end-user to use & understand. Most of his career has been spent on the open-stack side of the fence, where he has made many contributions to the Laravel (PHP) ecosystem. He is an HTML5/CSS3/JavaScript expert with strict compliance to W3C standards & 508 accessibility. He specializes in ecommerce & conversion rate optimization through UX design and also specializes in developing business systems, processes, and integrations.