When I got an iPhone, I was first introduced to online applications by the apps preloaded on my phone and those I could purchase in the Apple App Store. Since then I’ve been interested in how these applications are built. Whether it was Candy Crush, Instagram or even MyFitnessPal, I couldn’t help but wonder how a developer was able to create such a smooth interface and consumer experience, while simultaneously having the app perform an actual function. I never imagined that this curiosity would result in personal experience building applications. Then, I received an internship at Kinetech and was introduced to the Mendix platform. Like many relationships, my initial experience with Mendix could be described in one word: tumultuous.
My first encounter with Mendix was like a speed date with someone about whom you knew absolutely nothing. Okay, maybe you had heard their name before and knew they worked as an occupational therapist. Although that description gives you some information, you still don’t know the full extent of who they are and what they actually do.
Training Videos - Yes Please
As I watched some of Mendix’s beginner training videos I learned the more simple aspects of the platform: running and viewing an app, business logic through microflows, and building out pages. Most of the processes seemed simple and logical. The domain model was easy to follow and I enjoyed how microflows gave a visual representation of what happened when pages opened or buttons were clicked. Designing pages was fun and you didn’t need in-depth coding skills, you just needed eyes and a general talent for layout.
Reality Sets In
It wasn’t until I started building a test application not outlined by the tutorial videos that I realized how superficial my understanding of Mendix was. This sunk in when I learned that having no errors did not equal a smoothly running application.
Kinetech Business Engineers to the Rescue
Kinetech engineers have contributed and developed some of the most sophisticated Mendix applications to date. After a week of in-person instruction, I felt like I was back in the good graces of Mendix. I understood enough of the platform to pass the Rapid Developer Certification Exam, earning my first accolade. The other Kinetech interns and I built a practice application first together, and then as we progressed, separately. Working alone helped solidify the knowledge that I had gained in the “classroom” environment. I understood more of the intricacies of the domain model, including how to choose both the direction and multiplicity of the associations between entities and when to set an attribute as an enumeration rather than a string. I learned that it was important to run the application after accomplishing short and smaller tasks so that you could figure out what was wrong before too many problems made it impossible to find the one little thing that was messing everything up. Checkout this blog about 9 tips getting started with Mendix. I began to see the light as to how and why Mendix was such a powerful tool.
Start with the Domain Model:
Although I could admit to myself that I definitely wasn’t a Mendix genius, I felt much more confident when we started building our first real project: a health application for companies to input and track data about diet, exercise, sleep, and step habits. We started by creating seven modules which included categories such as corporate structure, challenges and health data.
Domain model for the Challenges module.
Upon completing that we moved straight on to creating pages and figuring out how to input and graph health data. After a couple of weeks of running into problem upon problem, we realized that we needed to go back to the drawing board; you cannot build a successful application if you do not clearly understand what you are trying to accomplish. For example, if an administrator can’t initially add an employee, it doesn’t matter if the employee can input last night’s sleep.
Employee Homepage - Mendix Business Modeler Displays a Time Series for steps, diet, sleep and exercise in addition to the button that accesses the Health Data Input Wizard
When we had a more clear idea about the application’s purpose, we brainstormed about the functionalities we wanted each user role (Company Employee, Company Administrator, Health and Wellness Company Administrator, Kinetech Administrator) to have and storyboarded key pages of the application. Taking a step back allowed us to more clearly plan the order in which we addressed each process of the application. One of the strengths of using Mendix is that one can develop applications in a fast and streamlined manner. However, forgetting or neglecting to plan negates many of the benefits of using Mendix. At this point I realized, “It’s not you, Mendix. It’s me.”
Agile Development in Practice:
Over the next couple of weeks, we restarted the development of the application: this time we had a plan. We began by prioritizing critical functionality in user stories or small pieces of functionality that outlined the user, the functional benefit they needed to accomplish, and why it would be meaningful. The Kinetech team empowered us with naming conventions for pages and microflows to standardize the organization of the application. This made the application more navigable.
Within large microflows, I extracted the smaller, repetitive parts to create sub-microflows. This greatly simplified the appearance and improved the readability of the microflows. To prevent duplicated health data entry, I figured out how to check for repeats using an iterator and at what point to commit the data. If I committed too early in the microflow, Mendix would create an empty data set for that day.
As we continued to work with Mendix, I not only felt more at ease and knowledgeable, I was actually starting to have fun. I learned that if something was wrong, it most likely had a simple solution. One of the revelations I had about errors came when I tried to build out all of the sub-microflows rather than make one big one from which to extract the others. When fixing them, I noticed that Mendix could only see the errors it could reach. Once I fixed one error, others appeared.
The microflow to start the health data entry Wizard contains sub-microflows to calculate the calorie goal based on sex, age and activity level.
Overall, my time with Mendix has taught me patience, the importance of organization, how to troubleshoot, and when to ask for help. I do not know what the future has in store for me and Mendix, but if I could guess, I’d say this was the beginning of a beautiful friendship.