My relationship with InRhythm began about 4 years ago when I did a Node.js workshop with the team. I was impressed at how the CEO, Gunjan Doshi, kept in touch, regularly checking in with me over the subsequent years. When the opportunity to collaborate happened, I jumped at the chance.
By then the company that had grown in size to nearly 150 consultants. Approximately 50 of those are web engineers; in my role as the Web Practice Lead, I work tirelessly to supply this team with mentoring, tools, connections, and anything else they need to succeed. I do this with the aim of preparing engineers for opportunities after InRhythm when what they learn here brings them success there. We maintain long-term relationships with our people after they leave because we’re genuinely invested in their career success. The strength of that community is what sets us apart.
JavaScript is eating the world of software and there’s no doubt that web development is going to continue to grow and expand in complexity. The continued acceleration of innovation in the Web sphere—from React to WASM—is an incredible validation of the field. Anyone using a phone or a laptop or a tablet is using software a web engineer built.
For me, Web Engineering is the most exciting type of software development, unlike any other—multidisciplinary, blending the hardest engineering problems with design-based thinking. A full-stack web developer might work on an AI algorithm and its human interface on the same day. I regularly receive calls from teammates working through a new perspective on an old idea, reminding me of just how innovative the practice of Web Engineering remains.
When you join the Web practice you’ll join a team that works on some of the most advanced systems in the world, with some of the largest organizations in the world. I’m amazed when I learn about the incredibly exciting and complex software our team is building. It’s my job to ensure that they—and you—are ready to learn and grow in that environment. As we look toward the future of web engineering, it benefits our company and our consultants to stay in the know.
All of this knowledge culminates in InRhythm University, a learning and growth program developed through inter-team collaboration and client outreach. The InRhythm University curriculum is comprehensive, and in keeping with our company’s mission everyone who joins InRhythm gets this education for free. Check out an overview of the kind of curriculum we offer for our consultants to take their skills to the next level:
Section 1: Computers!
Space and Time: Big O Notation
You cannot excel as a developer if you cannot state clearly and scientifically the cost of your code in terms of space (memory) and time (how long will your function take given 1000 items? How about 1 billion?).
Bits and Bytes: Bitwise Manipulation
Developers push bits and shove bytes around. You probably know about flipping bits between `1` and `0`, and what it means when someone says “megabyte.” Do you know why 1^1 === 0? There are a lot of powerful ideas to apply once you do.
Concurrency
Looking to learn more about using generators, callbacks, Promises, async/await to manage asynchronous workflows with JavaScript? Good! Managing concurrency is perhaps the most important concept to learn when building on modern systems. You’ll need to master it. We show you how.
Functional Programming
You don’t have to learn Haskell to understand functional programming. You can use JavaScript right now to engage with the extremely powerful ideas present in functional programming flows. You’ll learn about pure functions, side-effects, immutable data, and (probably) become a better programmer.
MVC and Classic OO. Bonus: How JS prototypes fit into this.
Can you easily describe the difference between prototypal and classical inheritance OO ideas? You should. You will. By modeling complex scenarios in both paradigms you will learn the pros and cons of each approach, and more importantly, learn how to choose between them.
Data Structures and Algorithms
Software engineers are largely becoming data engineers. Managing application state, immutable or otherwise, is no longer something other people worry about. That means you will need to understand the kinds of data structures and efficient mutation algorithms the smart people in the CompSci room have developed to help us do our jobs.
Trees and Graphs
Folders and files. You know about those kinds of trees. If you’ve used an outliner someone wrote a graph traversal algorithm for that; you’ve probably written one if you’ve ever walked a directory. Ever use Bitcoin? Here we focus on these specific data structures. This is one of the most powerful, and frankly fascinating, pure computer science topics every engineer should get a handle on.
Section 2: The Modern Web Stack
The DOM
No matter how elegant the abstraction of your build pipeline or transpiler or template system is, what it produces is always going to be the same: HTML, JavaScript, and CSS, all linked together within the Document Object Model that your browser or other Web View must process and render. If you do not understand, at a deep level, what is happening when a DOM is built or updated or otherwise modified you, fundamentally, do not understand Web Engineering. Those who master this section do.
Deep JavaScript
Time to dig into the docs. No, really. We’re going to go through the fundamental ideas that power the JavaScript language. You’re going to learn about execution contexts and scopes, and how and why those exist, to create the JavaScript language that we’ve all come to know and love.
Deep Node
JavaScript is on the server now, have you heard? It’s true! NodeJS frees up all the skills you’ve learned about events and event loops and gives you superpowers on the server. Want to write a command-line tool to do automatic deploys? How about building a text parser that powers a chatbot? How about building APIs used by dozens of teams spread across the globe speaking multiple languages? This is the beginning of the path to going full-stack.
Deep React
Time and time again our clients come to us and ask for modern React engineers. We have some of the best. We even do workshops with companies to level up their teams. You’re going to get to the level they want to reach by working through this section.
Debugging and Testing
Did you know that you can link a Node server to DevTools such that you can debug live code and even trace performance of your server code down to the function level…in your browser? Know the difference between unit tests and functional tests? Still using console.log for everything? There are options. You will learn to effectively test software and squash bugs and your life will be better for it.
The Network
Do you know what happens when you enter a URL into a browser? Do you read network packets when debugging API failures? When is a REST architecture appropriate? Cookies or tokens or something else for identity management? Access management? When is caching appropriate, and what is latency anyway? You must burn this knowledge into your bones if you are to build modern, distributed systems. Let’s get started.
Forward!
Every graduate of IRU has mastered the technologies and techniques that we know work at the highest levels of industry through continuous repetition of this process. The IRU program teaches students actionable skills through real-world scenarios. Using proprietary internal development tools, IRU simulates realistic client problems (not half-implemented “TODO” applications or “Hello World” demos) which students work through under the guidance of our senior trainers. Our engineers are given the thinking tools they need to:
1. Intelligently analyze complex systems to find weaknesses and inefficiencies.
2. Create a range of solutions and intelligently determine both the right solution and the right success criteria.
3. Model and test the solution in collaboration with all stakeholders to validate the solution
4. Analyze the results, measure against success criteria, and restart the process on failure.
5. Standardize success into repeatable guidelines and share that knowledge with all stakeholders
6. Repeat this process, without fear of revisiting old successes (the status quo).
The responsibility of transforming digital businesses requires earning buy-in for change from our clients and consultants. At InRhythm we empower the creativity of our people—we don’t accept the status quo. Perfectionism is not our goal; continuous improvement is. We believe in adaptive change, especially when it comes to growing the careers of our consultants. I am similarly focused on ensuring the growth of those in my practice, both as engineers and colleagues, to make us all better representatives of InRhythm and our industry.
Ready to take your skills to the next level? We’re hiring. I hope to hear from you soon.
Leave a Reply