INSIGHTS

Expert Perspectives & Practical Resources

Jaclyn Macomber Jaclyn Macomber

Cloud Migration to AWS

How do you know when it’s the right time to move to the Cloud?

How is your web app or website performing?

Do customers complain about slowness, unexpected downtime or scalability problems with your app? Many companies who've built their application within the last few years are frustrated by the limited capacity and slow performance of their hosting solution. Unfortunately, the best infrastructure that was available a few years ago, is no longer good enough.  Rapidly changing technology in cloud computing requires an upgrade. Choosing a service that will scale exponentially and be flexible with whatever the future requirements will be, is key to scaling your business. The sooner you make the move, the less painful the future will be.

We help clients move their sites and web apps to the cloud to help them scale and plan for the future.

Cloud computing tools like AWS (Amazon Web Services) allow us to spin up thousands of servers in minutes as opposed to the 10 to 18 weeks it typically takes to spin up on-premise servers. It also lets businesses plan for future technology and provides tons of services that may not seem relevant to current business needs, but likely will be relevant sooner than you expect. Services like unlimited storage, continuous integration, data analytics, and artificial intelligence.

 Keep Costs Competitive

High operational costs can sink a business. By migrating to the cloud you can predict the changing prices of infrastructure, and increase your ability to match supply and demand. Improving the transparency and elasticity of your business model will help you succeed in the constantly changing economy.

 Improve Productivity

You can't afford to have your development team hit a slump of productivity waiting for infrastructure issues to be resolved. Constantly managing performance issues is not only bad for business, it's bad for morale. Having support as you migrate your platform to the cloud will let your team continue to work at full speed. As you look to the future of your platform, integrating other services like AI and intensive data analytics will be simplified. According to Amazon, it is common to see workforce productivity improvements of 30-50% following a large migration.

 Avoid Costly Maintenance

Constant maintenance and the need for hardware refreshes can be key contributors to unexpected and massive costs. Investing in moving to the cloud mitigates many of these unexpected costs and allows your team to plan and structure for the cost to migrate your platform. Although there is an upfront cost to migrating, that is often quickly validated by the costs avoided in unexpected and poorly timed maintenance.

More Resilient Platform

Not to be overlooked, one of the reasons many businesses choose to prioritize migrating to cloud computing is the need to reduce your organization’s risk. AWS and other cloud platforms can be trusted to perform consistently regardless of how quickly you scale. With With 16 Regions comprising 42 Availability Zones (AZs), AWS has the global footprint to improve uptime, thereby reducing your risk related costs.

 Be Agile

Businesses need to react and change to the constantly shifting challenges and pressures of the ecosystem around them. Migrating to the AWS Cloud helps increase your operational agility. It gives business teams the flexibility to react to market conditions quickly, whether that's by expanding into new markets, creating new lines of business, or acquiring available assets that offer a competitive advantage, your platform can adjust to meet the needs of your entire business.

If you're interested in learning more about how your business can benefit from cloud computing, and what it would take to migrate your platform, get in touch with our cloud experts at hello@bigroomtechnologies.com.

 

Read More
Jaclyn Macomber Jaclyn Macomber

Why The Biggest Tech Companies Are Switching to Node.js

Node.js is an application runtime environment for writing server-side applications in JavaScript. It's unique I/O model makes it much more flexible and best for scalable and real-time situations that are more demanding of our servers.

Node.js is a lean, fast, cross-platform JavaScript runtime environment that is useful for both servers and desktop applications. It is used by major tech companies like Airbnb, LinkedIn, Walmart, Uber, and even NASA in production. And of course, smaller tech startups have built their platforms using Node.js and increasingly more enterprise companies are migrating their platforms from legacy code to the more robust and streamlined Node.

 

What is Nodejs?

Node.js is an application runtime environment for writing server-side applications in JavaScript. It's unique I/O model makes it much more flexible and best for scalable and real-time situations that are more demanding of our servers.  It’s also lightweight and efficient. The ability to use JavaScript on both frontend and backend opens new opportunities for development.

How is Node.js different?

Node.js is a server-side engine for running JavaScript, the same language your front-end web developers already know. In fact, it utilizes the same V8 JavaScript engine that's built into the Chrome browser. What makes Node.js unique is the different set of APIs. In browsers, you have a variety of DOM/Web APIs exposed that help you interact with UI, and allow you to access the hardware to a limited extent. Node.js is different in that it comes with many APIs suitable for backend development, for example the support for file systems, http requests, streams, child processes, etc. Browsers do offer some basic support for file systems or http requests, but those are usually limited due to security concerns.

 

Why investing in Node.js pays off?

Using Node.js as your server technology gives your team tools to be more effective and efficient by using the same language on both the front end and the back end. That doesn't just mean happier teams, but also lower development costs.  Also, with Javascript quickly becoming the most popular programming language, you make it easier to find and hire new engineering talent who can quickly onboard and understand your platform.

As the development community grows exponentially around Node.js there is an incredibly robust knowledge base and documentation to support innovation and implementation of new tools. The technology stack is open source and free which means this growth will continue and the platform will only gain in popularity. As it gains in popularity, it will continue to become more useful to businesses of all sizes. Node also provides a great package manager, npm. There are a massive and growing number of available open-source tools in npm’s registry.

 

Who should use Node.js?

When deciding whether to use Node.js it's best to understand which use cases are best for employing this tool. It is ideal for teams that need to process a high volume of short messages requiring low latency. Such systems are called real-time applications (RTAs), and can be easily developed with Node.js. It is a good choice for the real-time collaborative drawing/editing-type apps, where you can watch the document being modified live by someone else (such as Google Docs or Trello). It is also ideal for live-chat and instant-messaging apps, video conferencing apps, online gaming apps or e-commerce transaction software, where online data is of much importance. Node.js is very efficient with real-time applications: it facilitates handling multiple client requests, enables sharing and reusing packages of library code, and the data sync between the client and server happens very fast.

Node.js will be incredibly useful when you need something fast and scalable. It can process many requests with low response times, as well as sharing things such as validation code between the client and server, make it a great fit for modern web applications that carry out lots of processing on the client’s side. For these reasons, Node.js is a popular choice among "single-page application" sites, where all the rendering is done on the client’s side, and the backend only provides a JSON API.  When you want to process high volumes of IO-bound requests, Node is your best option. It lacks efficiency if a lot of CPU processing is required to serve the request. But, if it's just moving data around, it will be extremely efficient.

 

Of course, every platform is different. If you want to talk to an expert about whether Node.js makes sense for your business, email us at info@bigroomtechnologies.com. Our Node.js consultants will help you better understand your options and build the technology stack that is right for you. 

Read More
Jaclyn Macomber Jaclyn Macomber

The Art of Project Management

Pull up a chair as we explain what it is that our project managers do - how they add value to projects, and along the way hopefully demystify some of the tools and concepts that we leverage here at Big Room Technologies in order to help our clients be as successful as possible.

Generally speaking, one of two things happen when we talk to our friends, families, and sometimes even clients about what it means to be a project management at a software development company: 1) their eyes glaze over, and they politely say: “Ohhh, good for you!” or 2) their eyes glaze over, and they politely ask: “But what do you actually… do?”  And you know what?  We don’t blame them.  The idea of project management applied to the complex and sometimes-insular world of software development can be hard to grok for someone not already steeped in our ways.  So pull up a chair as we explain what it is that our project managers do - how they add value to projects, and along the way hopefully demystify some of the tools and concepts that we leverage here at Big Room Technologies in order to help our clients be as successful as possible.

Building Process

As we approach each day, we remind ourselves that at the core of project management is communication, efficiency, and transparency.  (Good PMs are also concerned with other important factors which all conspicuously start with the letter M, like minimizing risk, mitigating technical debt, and managing expectations, but for the sake of this primer, let's keep things straightforward.)  Everything that our PMs do on a day to day basis is ideally done in service of this trifecta.  “But,” you rightfully ask, “how do you actually do that?”  The answer: We build process!  By building and maintaining processes that everyone subscribes to, we help ensure that teams do their jobs to the best of their ability, while sidestepping endemic roadblocks like ambiguity, miscommunication, misaligned expectations, and scope creep.  

Now, we wish I could take credit for redesigning the wheel for each new project in order to build said process, but the reality is that Big Room Technologies relies heavily on a few institutions for software development teams: Agile, Scrum, and Kanban.

Agile

Terminology is often a barrier to entry, so let's take this opportunity to quickly break down these concepts before I talk about how we use them at Big Room Technologies to set projects up for success:

Agile is a philosophy that was collaboratively established in 2001 as a rebuttal to traditional project management practices (collectively referred to as ‘waterfall’).  The simplest way to differentiate the two is that Agile privileges constant iteration and collaboration rather than a rigid process with one final deliverable handoff.  The fundamental principles behind Agile are incredibly succinct, and we encourage you to read through them.  Kanban and Scrum, described below, are methodologies that give us the tools to put Agile principles into practice.

Kanban, Japanese for the card at the heart of the Kanban board, gives us a way to visualize, prioritize, and track all of the work for a given project. Staying organized using Kanban boards helps us control in-progress work to keep things manageable and productive for dev teams, and it promotes transparency by making it very easy to understand where different features are in the development pipeline.

Lastly we have perhaps the most well-known Agile methodology: Scrum.  Scrum is another framework that empowers development & product teams by structuring their meetings, defining roles, and introducing other core concepts like the product backlog, where a prioritized ‘wishlist’ of yet-to-be-developed features live, and sprints, which are increments of work within which the development team has clearly defined goals.    

We love when a plan comes together!

Alrighty, now that we’ve discussed our project management goals (build process to promote communication, efficiency, and transparency), and introduced some concepts to help facilitate said goals, it’s time to talk about how we put all of this in motion.  As we move forward, it’s important to understand that our clients are our product owners - that is, they are the ones with the vision of what we’re building - and as such take a crucial and active role during every project. Ensuring that clients understand this role, and their responsibilities throughout the project, is a very important piece to the PM puzzle.  At Big Room Technologies, we boil the project lifecycle down into granular iterations, but project management focuses remain consistent: educate, coordinate, document, and help maintain momentum.  Let's dig in a bit further.

Educate

Many of our clients don’t have a background in software development, so it’s important for me to be an evangelist and advocate.  Clients will be sitting in on demos, sprint reviews, managing a backlog, and regularly adding clarity around design and definition, and we love this constant communication. It’s what makes us so successful! Heading into a new project, our PMs are the go-to resource for questions regarding process, implementation, or simply: “I don’t know who to ask, but here we go...”  

COORDINATE

The other half of process education is its actual design and execution. We’ll work together to determine sprint length, set cadences for sprint reviews, retrospectives, and demos.  We’ll define workflows and communication paths for managing our Kanban boards, so you can see exactly what’s being worked on and when it’s ready for testing.  We’re here to make sure all of this happens in a way that makes practical sense for both teams, and to ensure that we’re agile when we need to be, and tweaking our process as necessary. 

DOCUMENT

Mentioning ‘documentation’ conjures up images of court stenographers and technical manuals, but in the software development world, good documentation means that our teams have everything at their disposal to create the best products.  Actionable info, is how we refer to it. In practice, good documentation means well-defined user stories, up-to-date Kanban boards, and a frosty backlog filled with regularly defined/prioritized work.  This is good documentation, and the resultant ‘everything in its right place’ feeling is one of the best parts of a PM’s job.  Don’t get us wrong - Big Room Technologies will still build more traditional documentation as deliverables during different stages of our projects, but using our tools to their fullest potential to stay organized is a core part of process-based documentation.  

MAINTAIN MOMENTUM

In Scrum, one of the primary responsibilities of the ScrumMaster role (yes, that exists) is to remove roadblocks for team members.  We think about this often, as it’s also a core competency of our PM role.  Now, this doesn’t necessarily mean actually solving problems on behalf of team members, but rather ensuring that everyone has access to the appropriate resources, meetings, time, and problem-solving tools in order to to successfully detangle issues as they arise.  “Maintaining momentum,” in this context, can mean many things: it might mean helping a product owner define a particularly challenging feature.  It might mean facilitating an internal meeting with resources from another team who have important institutional knowledge to bring to the table. Maybe it means doing an organizational pass on a development board to ensure that we have traction on all in-progress work.  Perhaps it’s reviewing sprint reports and burn-down charts so that we have an eye on our team’s velocity.  Part of the fun of PMing is finding new and effective ways to make sure teams are rocking and rolling.

Wrap Up

And there you have it!  A breakdown of some of the responsibilities our project managers, and some tools that we bring in to ensure success. This is certainly not a soup-to-nuts comprehensive breakdown, and you still may be wondering exactly what a sprint is, or why keeping a backlog organized is so important to the success of a project, and that’s okay!  There are plenty of fantastic resources out there if we’ve piqued your interest, and hopefully in the meantime you’re able to walk away with a better understanding of the role project managers play at Big Room Technologies. 

Read More
Jaclyn Macomber Jaclyn Macomber

Product Owners: A Guide to How Big Room Technologies Keeps Their Clients Involved Every Step of the Way

Here at Big Room Technologies, we’re fond of saying that our clients are product owners, and we build processes to drive this home.  Pull up a seat, as this post is aimed at shedding light on exactly what that means, as well as illuminate how it’s reflected, practically speaking, in our applied agile process (and the methodologies we use to stay organized).  In case you missed it, check out our previous discussion about project management at Big Room Technologies, which helps offer context for this deeper dive into roles and process.  Read on for a closer look at the role our clients take within the larger development process, and why we believe their close involvement is so crucial to building a great product.

Here at Big Room Technologies, we’re fond of saying that our clients are product owners, and we build processes to drive this home.  Pull up a seat, as this post is aimed at shedding light on exactly what that means, as well as illuminate how it’s reflected, practically speaking, in our applied agile process (and the methodologies we use to stay organized).  In case you missed it, check out our previous discussion about project management at Big Room Technologies, which helps offer context for this deeper dive into roles and process.  Read on for a closer look at the role our clients take within the larger development process, and why we believe their close involvement is so crucial to building a great product.

Product [Owner] is King/Queen

Let's start with defining the role of product owner, so everybody is on the same page.  While notions of ‘product ownership’ have evolved in different capacities across different industries over the years, the product owner we’re talking about is one of the core roles in any Scrum team.  A Scrum team also consists of developers (us!) and a scrum master (me, as project manager!). The product owner maintains the vision of a product, is responsible for conveying that vision to the rest of the team, prioritizes and defines all work in the backlog, and serves as the final arbiter of when a feature is ‘done.’  The product owner should also have the best understanding of the product’s users, competitors, and the larger market within which it will be built.  The quick takeaway here? Our clients are subject matter experts that maintain the vision of what we’re building, and their involvement helps keep our team focused not just on building a great product, but on building a product as close to its original ideation as possible.

Tips for Successful Collaboration

We fully recognize that clients may not have any formal experience in this role, so we’re here to support you and guide you through the process. As such, we’ll work together to define and cement down our meetings and responsibilities at the outset of project. In order to frame your involvement, here are a few general expectations we have for our product owners:

  • Be engaged! Being present during meetings, timely with feedback, and proactive with upcoming work makes all the difference in the world, and can ultimately have an enormous impact on our team’s efficacy.  Collaboration and iteration are fundamental to developing software, and you’re a core team member, so being engaged is crucial.  Without said engagement, our team often has to make assumptions, and we all know the dark path that leads down.  

  • Ask questions!  Don’t be afraid to chime in if you don’t understand something, need specific feedback on a given feature or decision, or simply want another opinion.  The better our communication, the better the product will ultimately become. 

  • Be flexible!  Software development is so fraught with unknowns that a whole new way of managing work had to be introduced (enter: Agile).  It’s inevitable that feature requirements will change, product phases will expand or contract, and estimates will be inaccurate (or... creepily accurate).  While we build process to accommodate for much of this uncertainty, keeping an open and flexible mindset as the work progresses is key. 

Where the Rubber Meets the Road

In order to paint a clearer picture of product ownership and its corresponding responsibilities, let's talk through how we incorporate our product owners into the different project phases at Big Room Technologies.

Planning

The first step in any project is always the planning phase; product owners are the visionaries and creative force behind the impending project, so we rely on them heavily during the planning process. Depending on how robust and well-documented the product vision is at the get-go, we may recommend a significantly more involved application planning project (scoped separately) as a precursor to the development work. Ultimately though, planning means a deep-dive into the product vision: lots of brainstorming, note-taking, and distillation of ideas and information.

One notable function of the planning phase is creating wireframes (read: design documents that capture basic user workflows and interface functionality).  This is a hyper-collaborative process, where we begin with hand drawn sketches that eventually evolve into more precise and actionable design deliverables, according to feedback from product owners.  While Big Room Technologies may throw out some ideas to get the creative juices flowing, the actual conversation and final design is very much an iterative process tackled via a series of workshops.

Development

With planning wrapped, we move into the development phase.  We lean heavily on Scrum and Kanban for this phase, though we’re open to other methodologies should clients request them.  Primarily, we utilize Scrum to inform team roles and meetings/sprints, and we use Kanban to help the work itself stay organized, though there’s definitely some overlap in this Venn diagram. Here’s a more granular breakdown:

Applied Scrum at Big Room Technologies

As a team, the first order of business is to define our sprint length.  Sprints are arbitrary increments of work during which the dev team works to complete defined goals, demo the results to the product owner, and then define the work for the next sprint.  We love two-week sprints at Big Room Technologies as it affords us the right amount of time to build, iterate, and plan.  In order to stay organized during these sprints, there are defined ‘sprint ceremonies’ (think: traditional meetings), most of which the product owner takes part in.  Of particular relevance are standups, which are daily check-ins that provide all team members an opportunity to discuss current work, imminent work, and any roadblocks in their path.  Standups promote communication and transparency.  Another key meeting every sprint is a combo deal: demo and sprint review, during which our developers walk everyone through the features they’ve built, and solicit questions, changes, and seek final approval from the product owner.  The core goal here is to make sure that our clients have a finger on the pulse of the development process, are seeing new features as they emerge, and are making sure that these features align with their goals for the product.

Applied Kanban at Big Room Technologies

We’ve talked a lot about the people involved in our projects so far, but it’s also important to discuss how we document, prioritize, and track the progress of the actual product that we’re building, and how product owners access said work.  The answer is sticky notes!  Or rather, the digital representation thereof.  In Kanban, cards (representing work) are moved from left to right, lane to lane, as they are worked on. This makes it easy to visualize where a given feature is in the development pipeline, and limit work in progress so we’re not biting off more than we can chew.

Short and Sweet

And there you have it!  A quick breakdown of product ownership here at Big Room Technologies, and how the role fits into our larger applications of Agile, Scrum, and Kanban.  It does bear noting that while this is a high-level summation, every project is different, and thus client involvement can change depending on many factors - both internal and external.  The key takeaway here is how important client engagement is to building a successful product, and how we try to structure phases, meetings, and general collaboration to promote this engagement.  If you have any questions or comments, we’d love to hear them!  Shoot us an email at hello@bigroomtechnologies.com.

Read More

SERVICES

  • Advisory

    Strategic guidance to help organizations evaluate options, define direction, and implement technology aligned with business goals.

  • Software Engineering

    Design, build, and maintain software systems that meet real-world needs and perform at scale. Common examples include web and mobile applications.

  • team augmentation

    Experienced professionals integrate into your team to expand capacity and expertise to help fill skill gaps or resource shortages both short and long term.

  • Experience Strategy & Design

    Shape how users interact with your product with thoughtful, intentional design.

Let’s explore what’s possible for your organization.