How to Get Started in Group Fitness in 5 Steps

How to Get Started in Group Fitness in 5 Steps

1: Obtain a Nationally Accredited Primary Certification

Obtaining your primary group fitness certification is a must and ideally comes first. A primary certification in group fitness prepares for you for the “role” of being a group fitness instructor. It provides the information you need to be competent in general fitness classes (e.g., cardio, strength, flexibility, etc.). In addition, you will learn the basics of exercise programming, cueing and music.  

2: Identify your Format(s)

You’ll next need to determine which types of classes you’d like to teach. Again, ideally, this decision is based primarily on your personal preference and natural skillset. However, you may also want to consider what type of specialization might be required to get your foot in the door as an instructor.  

Be sure to begin your research by taking classes. If you’re already a group fitness groupie, expand your palate by trying new classes, instructors and environments to get a better sense of the available options. Consider what it would be like to teach the format versus participate. You will find some classes are a better fit for you to lead than others, even if you love taking the class.

Once you’ve narrowed down your choices, determine if additional training is necessary. Many formats require format-specific (or, sometimes called specialty training) certifications. The facility where you want to work may conduct the trainings in-house, or you may obtain the qualification through a third-party organization. Examples include indoor cycling certifying organizations, Zumba, Les Mills formats such as BODYPUMP or GRIT, HIGH Fitness and SoulBody fitness.

3: Carefully Vet Opportunities

Most instructors begin their careers working for a facility, but there are also options to be self-employed. Teaching at a facility usually provides a steady flow of potential clients, exposure to a wide variety of class formats, access to formal and informal mentors, education opportunities and a community. Be sure to explore all employment options and opportunities that exist for you to remain independent.

Be sure to determine whether teaching in-person or virtually is a better fit for you. Depending on where you choose to teach, you might decide to hone your skills in both.

4: Prepare for Opportunities

Step 4 is actually a bunch of little steps that, combined, prepare you for the many opportunities that exist for group fitness instructors. It’s less of a box that you tick and then forget about but, rather, tasks that you start doing and continue doing throughout your career to be ready for the wide world of fitness.

Begin by connecting to a network. Check with your primary group fitness certifying and specialty certification organizations, as well as with independent group fitness leaders to find formal and informal networking opportunities. A network can help you fill in the gaps between what you learned in your formal education and the skills you need to make it in the group fitness world.

Another excellent resource for filling in the gaps is a mentor. Do your best to find one that can help you navigate the industry and coach you on your unique path. You can find mentors at local clubs or studios, as well as in many of the networking groups described above.

More specifically, prepare for auditions and interviews by practicing, recording and watching yourself teach. If possible, ask for feedback from instructors, as well as trusted friends and family members. Then, practice some more with their respective feedback in mind. The more time you spend rehearsing, the better off you will be for the audition and your first class.

One additional preparation step is to obtain (and then maintain) professional liability insurance. Whether you plan to teach clients virtually or in person, liability insurance is an investment you make for your peace of mind should ever be sued by a client or participant for injury or damages. Even if you plan to work at a club, studio or another establishment, carrying your own policy is a good idea. 

5: Plan Your Path for Growth

While your recertification is probably two years away, set out on your professional journey armed with a growth plan. Both formal and informal education is helpful for pursuing new opportunities and improving the experience for your current participants. The best instructors are those who commit to being lifelong learners. 

P.S. Visit our website: and join the mailing list. Our app is in BETA now.

P.S.S. Source:

Testing all links in the chain

Our Fitradar solution is using various third party services, and therefore the Integration tests in our solution became a very important part next to the Unit tests. In our backend application we are trying to follow the ideal Test Pyramid

Ideal Test Pyramid

but for some Use cases it makes more sense to run all the involved services rather than replace them with Mock objects, mostly because there is no complex logic involved in particular Use Case; it is rather straightforward without conditionals and loops. And on the other hand the Integration Tests give us more assurance that the Use Case is robust and works as expected. And so for some Use Cases we started to prefer Integration tests instead of Unit tests and our test pyramid became a little bit distorted. The following parts in our back end application are tested by Integration Tests:

  • ASP.NET Core Model Binding. Once we discovered that produced JSON data for some C# objects is not exactly as we expected, and that some incoming JSON is not parsed as we expected we started to test and verify that incoming and outcoming data are transformed as we are expecting
  • ASP.NET Core and third party libraries configurations defined in Startup file. The configurations can be tested only at runtime and therefore to test these configurations we have to run the test web server and make some requests against the server. Some of the configurations we are testing are following:
    • Dependency injection
    • AddMediatR and FluentValidation configuration
    • ASP.NET Core Authentication and Authorization integration with  Firebase Authentication
  • Entity Framework produced SQL code. Especially for complex queries. And Entity Framework save and update logic for complex types where at runtime some nested objects might have different EntityState than parent object. And any complex logic interacting with Entity Framework
  • Integration with Azure Services like Service Bus and Azure Web Functions
  • Integration with Stripe

The crucial factor that made our team write more Integration Tests is the new ASP.NET Core test web host and test server client. It allowed us to quickly setup the test server with our back-end application and run the requests against our API. By using the test host we were able to test most of the configurations in the Setup file. It was harder to test our back-end parts that were part of the Azure Functions, but after some error and trial we were able to create a test web host for the Azure functions as well and issue the calls that triggered the Functions. And here is how we test the sport event cancellation Use Case that is triggered by message from Service Bus queue:

        public async Task TestUnpaidEventCancelled()
            var resolver = new RandomNameResolver();

            IHost host = new HostBuilder()
                .ConfigureDefaultTestHost<CancelSportEventFunction>(webJobsBuilder => {
                .ConfigureServices(services => {

            using (host)
                await host.StartAsync();
                await _testFixture.BookSportEventInstance();

                await _testFixture.SendMessageAsync("CanceledEvents",
                await _testFixture.WaitUntilSportEventInstanceIsCancelled();

                //_output.WriteLine($"Found {parsedOrders.Count} invoices.");
                var calendarEvents = _testFixture.GetCalendarEvents();
                var order = _testFixture.GetCancelledSportEventOrder();
                var msg = _testFixture.GetVisitorsInboxMessage();
                Assert.Equal(MessageSource.CANCEL_EVENT, msg.Source);
                var statistics = _testFixture.GetVisitorsInboxStatistics();
                Assert.Equal(1, statistics.NumberOfCancelMessages);

P.S. Visit our website: and join the waiting list. We launch very soon!

SwiftUI and UIKit interoperability

Many iOS developers started to insert SwiftUI views into existing production projects. UIHostingController makes it really easy to integrate. Yet sometimes you need it vice versa: insert a UIKit view into SwiftUI view. In FitRadar we provide calendar view to show not only your trainings, but also display other events from calendars on device. Trainers will find it easy to plan, avoid overlapping or help customers not to book training when there is important meeting planned.

Photo by Waldemar Brandt on Unsplash

This time we use power of UIViewRepresentable. In this example FSCalendar view (written in Objective-C) needs to be inserted in SwiftUI view, linked with MVC view model. Official documentation is quite laconic about it’s usage. I assume there are many ways how to embedded view behind UIViewRepresentable structure. Some advice to use Coordinator. I don’t see big value in it for our case, since I want make this view reusable and make view model be responsible for calendar view data representation.

Let’s create the “view wrapper” for calendar

import SwiftUI
import FSCalendarstruct CalendarView: UIViewRepresentable {
var calendar: FSCalendar
@Binding var isCalendarExpanded: Bool func makeUIView(context: Context) -> FSCalendar {
} func updateUIView(_ uiView: FSCalendar, context: Context) {
let scope: FSCalendarScope = isCalendarExpanded ? .month : .week
uiView.setScope(scope, animated: false)

Normally, you would want to create FSCalendar inside makeUIView(context:) but we want keep reference to it, so we create it outside and pass as reference on creation. Another option we pass via binding is calendar mode which is either month view or week view.

After this we may insert in SwiftUI as easy as

CalendarView(calendar: viewModel.calendar,
isCalendarExpanded: $viewModel.isCalendarExpanded)
.frame(maxWidth: .infinity)
.frame(height: viewModel.calendarHeight)

To support this configuration we need a view model

class HomeViewModel: NSObject, ObservableObject {
@Published var calendar = FSCalendar()
@Published var isCalendarExpanded: Bool = true
@Published var calendarHeight: CGFloat = 300.0 override init() {
super.init() calendar.delegate = self
calendar.dataSource = self
calendar.scope = isCalendarExpanded ? .month : .week
calendar.firstWeekday = 2

That’s it. Please refer to the source code for full example.



P.S. Visit our website: and join the mailing list. We are in beta stage already!