• Skip to main content
  • Skip to footer

InRhythm

Your partners in accelerated digital transformation

  • Who We Are
  • Our Work
  • Our Culture
  • Events
  • Testimonials
  • Blog
  • Contact Us

software engineering

Apr 01 2019

Our Greatest Investment Opportunity


InRhythm’s success is built on the excellence of every employee, and the outstanding work they do every day continues to drive us to greater heights. While we look to hire the very best consultants at the outset, every employee is on their own career journey, and one of the cornerstones of our company culture is investing in the careers and lives of our people to help them be happier, healthier, and more proficient in their fields. Investing in this development has, for me, provided an enormous return in the form of profitability, productivity, and the overall wellness of our employees.

Personal Zen

InRhythmers already enjoy a company reimbursement for the music streaming service of their choice; music is a core part of the day for many of us, and it just made sense to keep everyone happy with their favorite personal playlists, unburdened by ads. Not everyone listens to music when they work, however, so this year we’re expanding the program to include audiobook services like Audible and wellness and meditation apps like Headspace, so each of our employees can define their own idea of work zen with our enthusiastic support.

Empowering our employees to find their focus and de-stress increases confidence and performance. Meditation, in particular, offers a number of benefits, including increased immune function and lowered anxiety, that pay huge dividends in and out of the office. We can’t always predict the future in this fast-moving industry, and no consultancy is immune from stressful days, but by giving InRhythmers the tools they need to stay grounded and happy, they can tackle the biggest problems and opportunities ahead of us.

A Better Future

We hire engineers and designers at all skill levels to work on some of the biggest industry-shaping projects, but each and every one of our consultants is ambitious and dedicated to growing their expertise. Our culture of learning and growth is designed to take every InRhythmer to the next level, whatever that might look like for them. InRhythmU, our suite of internal and client-facing training and development workshops, speaker series, and resources is a comprehensive platform for our people to learn from (and teach!) each other, sharing their mastery of everything from cutting-edge programming languages to soft skills like leadership, personal branding, and public speaking.

We also provide a coaching program that pairs our senior-level consultants with several mentees, each with their own specific goals for the year. Our coaches work individually with their mentees and consult with other coaches on guiding every InRhythmer toward goals they’ve self-identified. The result? Our people are working on everything from personal financial literacy to Chrome extension development, with our coaches and the entire culture of InRhythm as the wind at their back.

When you hire for the very best, you’ll find yourself surrounded by people who are naturally ambitious and hungry to learn. In practice, however, I see a huge deficit in the education provided by a lot of companies in our industry; while it’s fine for your employees to seek learning elsewhere, it’s also a huge missed opportunity to engage with your people and personally invest in their success. By providing these resources on-site at InRhythm headquarters and empowering our people to not only come to us to learn but also to teach each other, a richer culture is born.

P.S. We also encourage our speakers to open up their learning and growth events, where appropriate, to the general public. Whether you’re a current InRhythmer, looking to join the team, or just interested in the field, I encourage you to join our InRhythmU Meetup group to get the latest updates and RSVP info for upcoming events:

Design Sprints with Joe Cahill
April 24th | 5 pm | RSVP

Compassionate Coding with Brian Olore
May 16th | 5 pm | RSVP

GraphQL with Denny Temple
June 20th | 5 pm | RSVP

Advanced Design Patterns with Will Bratches
July 18th | 5 pm | RSVP

React Native with James Woods
August 15th | 5 pm | RSVP

We’ve got a lot of different events, owing to the wide-ranging interests of our consultants, so if there’s something that interests you, I look forward to seeing you at an InRhythmU event soon.

Thanks and Keep Growing,
Gunjan

Written by Gunjan Doshi · Categorized: InRhythm News, InRhythmU, Learning and Development · Tagged: best practices, community, growth, investing in employees, learning and growth, Meetup, meetups, software engineering, tutorial

Mar 26 2019

Structuring and Serving PWAs with the PRPL Pattern


It’s been over 10 years since the release of the first model of the iPhone. Back then, most people had primitive mobile devices, limited mostly to making calls and receiving brief text messages. Anything close to decent was considered a pleasant user experience when it came to mobile. Nobody was concerned about the status quo, because nobody was using unstable mobile devices on a daily basis to browse through sites, make purchases, etc. (at least, not yet).

Over the years, however, a powerful shift has moved users’ primary point of entry from desktop machines with fast, reliable network connections to relatively underpowered mobile devices with connections that are often slow or flaky. Unfortunately, Google reports state 53% of users abandon sites that take longer than 3 seconds to load; the average load time takes up to 19 seconds on a 3G connection and 14 seconds on a 4G connection. Now you might ask yourself: right, but how does that happen?  Why does the page load take 19 seconds? I wrote some CSS, it is responsive, it should work! Here’s the problem: the UI looks like it works, but it doesn’t work in the real world. If you think about your mobile users, a good amount of them are still using median devices—the ones they receive for free with a new mobile plan, with just 1GB of RAM. They are a little (or even a lot) better than years ago, but still slow and suffering from poor connectivity.

There’s clearly a significant gap between today’s consumer expectations, the capabilities of their devices, and the mobile behavior of most sites. The patterns we have developed for building feature-rich web apps are just not sufficient for a mobile device user anymore. In order to create the best experience, the PRPL pattern can be key to improved mobile website development and user experience.

PWAs to the Rescue

When trying to ensure that a web app is suitable for a mobile device, most organizations develop responsive apps. It could appear as a great solution to our previously mentioned problem: the pages automatically respond to the screen size, UX stays consistent across all platforms, and we only have one code base for both mobile and desktop platforms. Unfortunately, this solution comes with some limitations. Responsive Web Design has clear network dependency; as soon as the connection is lost, your page is gone. If your connection is slow, you will automatically see layout and UI glitches.

Responsive Web Design is a fast and simple solution—it doesn’t solve all problems, but it does solve some of them, and quickly. It works best, however, when it naturally moves on to Progressive Web App. While PWAs are quite new and emerging, this architecture allows your app to inherit all main behaviors of RWD such as push notifications or GPS awareness, but also offers some advanced features. Not only is the app visible immediately after entering the page, but it also works better on a slow internet connection. What’s more, thanks to clever caching methods, your content can be visible and flawless even if you are not connected to the internet.

One of the ways to achieve that improved behavior lays in a pattern for structuring and serving Progressive Web Apps with emphasis on the performance of app delivery and launch. It’s known as the PRPL pattern: push, render, pre-cache, and lazy-load. It is not a specific technology or tools, but more of a mindset and a long-term plan for improving the performance of mobile web. The specific implementation of each of the steps is out of the scope of this article, but feel free to do additional research for more information.

Page Loading Process  

What does it take to load a page, from the moment you first open that page to the moment it’s fully loaded and you can interact with it? When you try to open a site on a mobile device, an initial request is sent to a remote server somewhere far away. After some time, the server brings the response, usually in the form of an HTML document. After that, your browser runs through the HTML file to check what other resources are needed; for each additional resource, your browser needs to make a separate call to the server in order to get that resource. You’ve probably noticed: that’s a lot of calls. How do we optimize that performance?

Push Critical Resources

Not every file in your application has the same level of importance. Browsers know this, and using their own heuristic they are able to decide which files they should be fetching first. It’s useful to also tell the browser which files are more important to us. There are multiple ways of preloading critical resources faster. Some of them include rel=”preload” and rel=”prefetch”, however you may also want to explore webpack options. It may be useful to keep in mind that prefetch is better for getting ready the resources needed for different navigation routes.  In general, both of these methods allow you to mask the initial latency by preparing the resources that are important but usually take some time to load. This way your browser reads through HTML and instantly warms up the connection with the source, so by the time the browser got to the last line of the HTML file, the resource is ready to be rendered.

Render the Initial Route as soon as Possible

Providing basic user experience as soon as possible is critical when it comes to convincing users that the site they entered is worth staying on. How does it feel when you open a site that starts loading, and the only thing you see for the next 15 seconds is a blank screen? I always ask myself: is it loading? Is my connection not working? Maybe it’s my phone that is not working? Downloading and processing external stylesheets is probably blocking the content from being rendered until the whole process has finished. That creates an opportunity for improvement.

There are some parts of an application that can be pushed earlier to provide some basic user experience and assure the user of the loading progress. One method is to extract styles responsible for minimum initial rendering and inlining them in the HTML document. You can either implement that solution yourself or use already existing packages such as critical package. This way the browser would be able to render the styles right away.  Another approach to improve first paint is to server-side render the initial HTML of your page. This displays content immediately to the user while scripts are still being fetched, parsed, and executed. However, this can increase the payload of the HTML file significantly, which can harm the time it takes for your application to become interactive and thereby respond to user input. There is no single correct solution to reduce the initial load of your application, and you should only consider inlining styles and server-side rendering if the benefits outweigh the tradeoffs for your application.

Pre-cache Remaining Routes

As you probably already noticed, minimizing server-side trips can be crucial in the process of shortening page load time. Here’s where the service worker really shines. Using a service worker cache allows you to store the resources that make up the shell. On repeat visits, your browser can fetch assets directly from the cache rather than the server. This way your user will not only be able to use your application offline, but also enjoy a much faster page load. You can either create the service worker file and write the logic yourself, or use libraries such as Workbox that can make this process easier.

Lazy-Load

We’ve arrived at the moment when all of our assets are finally delivered by the server at the speed of light, but the initial paint is still slow; what’s taking so long? Almost always the most expensive asset happens to be a JavaScript bundle. From the moment it gets loaded to the moment the UI gets fully interactive, your browser goes through a few phases: it has to download the files, parse through them, compile, and finally execute. In simple terms, after your browser’s received all the resources, it now has to compute what all the files combined together look like, and how they work together. The bigger the bundle you ship, the longer it will take for the browser to parse through it and put it together.

What does it really mean for the user? Shipping a large bundle of JavaScript can significantly delay how your user will be able to interact with UI components. That means your user will be tapping on the UI without anything meaningful happening. The previously mentioned phases don’t take a lot of time on a desktop machine, but on a median mobile device, it can take forever. So how do we manage to quickly load the rest of the code necessary for the application to run? Should we just load the entire code all at once?

Instead of providing users with all of the code that makes up the entire application as soon as they land on a site you could split the code based on used routes, otherwise known as code splitting. The idea behind it is to give the user small chunks of the code that takes the currently used route. As the user navigates through the site, the browser makes additional requests for more of the fragments of code that haven’t been cached yet, and creates required views, known as lazy loading. This is another feature that you could implement yourself, but it may be worth it to use existing packages and plugins instead, such as an aggressive splitting webpack plugin.

Summary

Nowadays, through improvements in Internet browsers, the expectations toward mobile websites are set very high. The purpose of the first websites over 20 years ago was simply to share information; these days the Internet provides everything from grocery shopping, maps, real estate, social networks, chatting, tickets…everything. If you are hoping for maximum engagement from your customers, improving their mobile experience by delivering content fast and reliably may be the way to go.

 

InRhythms engineers leverage their passions to provide the best user experience for large-scale enterprises leading their fields. Subscribe below for the latest in thought leadership, or reach out to see what our rapid development strategies can do for your latest project.

Written by Anna Brakowska · Categorized: InRhythm News, Learning and Development, Web Engineering · Tagged: best practices, development, engineering, progressive web apps, pwa, service worker, software engineering

Feb 15 2019

How to Be a Better Engineer ?: InRhythm’s Learning and Growth Newsletter

 


February 11th: How to Be a Better Engineer


InRhythm’s mission, in the work we do and the people we hire, is acutely focused on learning and growth. Through the development of InRhythmU, our internal professional growth initiative, we’re developing programs to ensure that our engineers reach the level of technical ability required by our clients. Being a great engineer involves more than keeping up with tech trends or mastering a framework, however.

We want to create bar-raisers who take our client relationships to the next level. The real goal is to train engineers who can approach engineering problems strategically and make good choices in a world of infinite options. As we develop this system of skill building and growth, a few key questions emerge. How do junior engineers learn to become senior engineers? How much technical ability should a UI designer aim for? Should every member of the team understand user experience design? Database design? What does “full-stack engineer” really mean? And what’s our role in building the next generation of software?

This month we dive into these issues, led by senior InRhythm engineer Brian Olore, whose article “Becoming a Senior Engineer” clearly lays out some tips, tricks, and time-tested strategies that will help you raise that bar.

Tell us what you think separates good engineers from great ones—or shout out any great engineers you know (we’re hiring!)—@GetInRhythm or here on the InRhythmU blog.

Thanks and Keep Growing,

Gunjan Doshi
CEO, InRhythm

Becoming a Senior Engineer
(4 min. read)
“Looking to take your engineering career to the next level? These five tips will set you on the path to greater things and make you a standout in the field. As we all know, it’s not easy to be exceptional in this already-competitive field, but the reward for real leadership is high, and if you’re truly passionate about your craft, these tips—including mentorship and open source contributions—will be something to get excited about.”

What We’re Reading Around the Web


The Great Divide
(14 min. read)
CSS-Tricks
“In this provocative article, Chris Coyer lays out why he thinks there’s a rift growing in the development community. The fault line? JavaScript. On one side are those who believe a ‘front-end engineer’ must be skilled with the language, while the other side feels ‘cosmically far away from the articles and conversations around accessibility, semantic markup, CSS possibilities, UX considerations, and UI polish, among others.’ Coyer quips: ‘Two front-end developers are sitting at a bar. They have nothing to talk about.’ False dichotomy? Industry impasse? You decide.”

Designing for the Web Ought to Mean Making HTML and CSS
(4 min. read)
Signal V. Noise
“Et tu, JavaScript? ‘The industry is making it too hard to work directly with the web’ says Ruby On Rails creator, best-selling author, and racecar driver(!) David Heinemeier Hansson. Never one to shy away from controversy, DHH (as he is known) calls out the industry’for polluting our thinking with over-engineered frameworks and toolkits while ignoring the raw value of “native” web technologies like HTML and CSS (and JavaScript) and the opinions of designers who work with them: ‘The towering demands inherent in certain ways of working with JavaScript are rightfully scaring some designers off from implementing their ideas at all. That’s a travesty.’ Is the soft bigotry of low expectations degrading the quality of our teams? Is knowledge of JavaScript non-negotiable for ‘front-end engineers’?”

HTML, CSS and Our Vanishing Industry Entry Points
(6 min. read)
Rachel Andrew
“It ain’t easy bein’ green. The leadership team at InRhythm spends a great deal of time improving the way we attract, train, and retain talent. Many of our hires are relatively new to this industry; Rachel Andrew has been thinking about what those new entries into this field face, worried that we’re excluding many people unnecessarily, especially those without formal training. What about those who learn ‘on the job,’ view source and copy, or futz around with a GitHub repo and learn on their own? Aren’t ambitious people to be valued? Didn’t the web grow so rapidly and profitably specifically because barriers to entry didn’t exist? ‘If we make it so that you have to understand programming to even start, then we take something open and enabling, and place it back in the hands of those who are already privileged.’ There may be implications here for society, and freedom; Andrew’s larger point is worth considering.”

What Happened to the Internet?
(11 min. read)
thinkgrowth.org
“Here’s to the crazy ones, the misfits, the rebels, the troublemakers. We’ve been told that technology companies value those who ‘Think Different.’ Is that still true on the Internet? Jared Sumner reminds us of a time when the web was ‘weird and fun,’ and we liked it! Is coding now a privilege, instead of a right? Wasn’t this technology supposed to be a great equalizer, rather than an opportunity to be monopolized by tech giants? Following this line of thinking and going deeper, Meghan Keaney Anderson asks us whether ‘what was once the closest thing we could imagine to a meritocracy more closely resembles an oligarchy ruled by a few powerful gatekeepers.’ Food for thought.”

Written by Gunjan Doshi · Categorized: InRhythmU, Learning and Development, Newsletters · Tagged: growth, JavaScript, newsletter, software engineering, tech talk

Sep 14 2017

Featured Tech Talk – Andy Philbert Jr. – Javascript Recruiter Extraordinaire

 

Listen to Andy Philbert Jr. – Head Javascript Recruiter of InRhythm, deliver an insightful talk on what his kind look for when interviewing and hiring.

From Andy:
“Recruiters are usually the first people you speak to when interviewing with companies. We are not engineers and screen for non technical qualities that shows that you would be someone amazing to work with and have the potential to be or already are a great engineer. This talk discusses the recruiter’s role within the interview process and how to market yourself as a great engineer without having to rely on just showing your code.”

Session: IR Lightning Talks 1 – Aug 24, 2017, IR HQ

 

Written by Anthony O'Sullivan · Categorized: Code Lounge, Events, InRhythm News, Learning and Development, Software Engineering · Tagged: 10x, agile, events, FinTech, growth, hiring, JavaScript, love where you work, NYC, Programming, React, software engineering

Apr 25 2017

Engineering Driven Culture – InRhythm’s Code Lounge

 

[huge_it_slider id=”3″]

Last week, driven by the feedback from our engineering leadership team, we held InRhythm U’s first-ever Code Lounge, inviting everyone from across the company and a few external guests to learn new skills, brush up on existing ones, or just get help on a personal project.

Code Lounge featured technical “stations” for Angular, React, React Native, Express, Vue, Node.js, Java, QA, UX and Product, each led by an InRhythm senior developer instructor. Accompanied by food and drinks on the company, the event provided an easy atmosphere and low-key way for everyone to network and learn a thing or two!

Here are a few key takeaways and learnings from Code Lounge:

  1. To understand what is important to our engineers, we need to be constantly listening to and engaging with our teams. While Vue and Java were not on our list of station offerings originally, in putting the event together we quickly found out that they are in high demand. Luckily, we were able to add both of these to our agenda, thanks to our very talented engineers who were able to lead these discussions.
  2. Collaboration happens when culture is driven from bottom up, not top down. Our engineers and UX/product leads single-handedly drove Code Lounge, with management simply enabling from the background with budget and logistics support. The magic of the night was the true collaboration seen across the stations, individuals coming prepared with best practices in their domains to share without being asked, and amazing learning and teaching happening in tandem across the room.
  3. Angular seemed to be the least popular station at the event, perhaps because a large part of our team is already fluent in Angular or perhaps due to newer technologies featured, such as Vue and React – these were the most popular and buzzed-about tables.
  4. We love learning and development at InRhythm, but admittedly beer on tap, Lombardi’s pizza, pool and music make it even better.

At InRhythm, our goal is to give our people the best opportunities for learning and growth. This goal is something I feel very passionate about as do all our senior leaders across the organization. Code Lounge is just one example of how we keep our company culture and ourselves at the top of our game!  If you want to find out more, visit us at www.inrhythm.com.

 

Written by Shivani York · Categorized: Bootcamp, Code Lounge, Events, Financial Services, InRhythm News, Learning and Development, Software Engineering, Talent · Tagged: Angular, Code lounge, engineers, Java, JavaScript, Learn, Node, Node.js, React, React native, software engineering

  • Go to page 1
  • Go to page 2
  • Go to Next Page »

Footer

Interested in learning more?
Connect with Us
InRhythm

140 Broadway
Suite 2270
New York, NY 10005

1 800 683 7813
get@inrhythm.com

Copyright © 2021 · InRhythm on Genesis Framework · WordPress · Log in

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Cookie settingsACCEPT
Privacy & Cookies Policy

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.

Necessary Always Enabled

Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.

Non-necessary

Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.