OutSystems Is Still the IDE Of My Dreams
About eight years ago, I first encountered the OutSystems platform. A lot of things have changed since then! At the time, I was a .NET developer by day, writing for TechRepublic at night, and the product was called “OutSystems Agile Platform” (after a recent rebranding from something involving the word “Hub”). Today I am an OutSystems developer, it has been a few years since I did any professional writing, and the product is now just called “OutSystems.” One thing that has not changed? It is still “The IDE of my dreams!”
All of the things that impressed me eight years ago still impress me: the ease of development, the direct pipeline between the data model and the work, and so on. I’ve discovered plenty more to like since then. And, OutSystems has also built out a pile of great functionality in eight years, most notably the improvements to mobile applications.
What is it about the OutSystems platform that I find compelling today?
Data Modeling With the OutSystems Platform
I still love the data modeling system. I’ve looked at using the combination of NoSQL databases and dynamic languages (notably Node.js). And yes, they worked smoothly and it was nice to just “get stuff done.”
But, I struggled to juggle the number of tools needed to get things done. These systems always feel like they are “just one more framework/code editor/hosted platform/etc.” away from being “just right” and then everything shifts next week. Getting an actual overview of my data model felt like a challenge. The biggest issue was that it required a high degree of programmer discipline to restrict where I touched the data model, because it was too easy to make a change that spiked the rest of the application without realizing it.
While developer discipline is a highly desirable trait, it is not a common one. I just do not feel like I can trust “the average developer” with the combination of NoSQL and a dynamic language. Not too long ago I read about a bunch of sites that just put their MongoDB installs directly on the open internet. Presumably, this was to make it easier for their apps to talk to the DB, with the predictable outcome of a major security problem. Can I trust a development team (and their friends in the server room) like that to have good code habits with anything else?
I find that the OutSystems approach perfectly blends the “if you break this it won’t compile” approach of traditional database-driven applications with the freedom to change of dynamic languages and NoSQL. The one big sticking point I have is that you can change an Entity name with no penalty, but changing an Attribute name is a problem (it will let you do it, but you won’t see your data anymore). This can be worked around by using multiple deployments and data migration, but it means that for the most part, Attribute naming mistakes live forever. Recent versions have added a “View Data” feature directly from Service Studio, which relieved a major pain point I was feeling.
Like the data modeling, my daily “getting stuff done” is simply amazing. The visual nature of Service Studio makes it easy to collaborate both with other developers and non-developers. I love that I can come in to assist a co-worker and easily see their logic and follow the code. Sitting down with a BA or SME and validating logic is a cinch.
For the first time in my career, I can come back to code I wrote six months before and not think that Past Justin was a total idiot for writing such garbage. Outside of UI stuff where you find yourself with a few options, there is usually only one “right way” to do things, and the “wrong way” usually doesn’t work, or is obviously broken. I’ve successfully built teams with almost nothing but recent college graduates and seen success thanks to the ease of learning the platform.
OutSystems has gone from strength-to-strength with mobile, making it easy for us to build responsive web applications that look and work great across a variety of devices… and the new features in version 10 make the OutSystems Now apps look and feel just like native applications. While I have had far less exposure to mobile in my current job than in previous jobs, the mobile stuff is very exciting to me and everyone I know who uses it loves it.
Deployment, Management With the OutSystems Platform
Since I started, OutSystems moved on from the clumsy “Enterprise Manager” and has replaced it with the outstanding Lifetime system. Lifetime doesn’t just make deployments great, it makes it easy to monitor application performance as well. I know some folks struggle from time to time with Lifetime deployments, but my experience has been that this is usually due to a lack of understanding of dependencies, or poor architecture creating a dependency mess.
OutSystems as a Vendor, Community, and Ecosystem
OutSystems as a vendor has been fantastic. The last few years have seen explosive growth, and with that there have been some unfortunate growing pains. At the same time, I see OutSystems working very hard to maintain the “small family” feeling even though the company is at least five times as large as it was eight years ago, and maybe closer to ten times as large. The introduction of community managers, the MVP program, and a revamp of the Community section of the website have all gone a long way in keeping the lines of communication open.
The community itself has become a truly fantastic resource. I got my start as an independent consultant a long time ago simply by being one of the few people who would answer questions in the forums. Today, most questions in the forums have a quality answer from a community member long before I get the nightly newsletter. The community is in good hands and is no longer riding on the backs of a couple of people, and is now quite self-sustaining. If you want a truly enjoyable community experience, get to the Lisbon NextStep, it is a real treat on so many levels.
The ecosystem has also improved quite a bit. There are now several consultants and vendors with dedicated OutSystems teams if not devoted entirely to OutSystems work. There are even a number in North America, which was a market weak in OutSystems use when I first started. As a developer who has been out of touch with .NET too long to easily go back to it, I do not feel like my career is in risk because I committed myself to the OutSystems development platform. The overall ecosystem still isn’t perfect (still waiting for a well-done reporting system), but it seems like OutSystems is plugging the gaps themselves for the most part, with OutSystems Now being the most obvious example.
OutSystems has been on a consistent pace of one substantial update every 12–18 months, with non-breaking improvements and bug fixes every 3–6 weeks. Each major release takes less than a week to really absorb, and the availability of Personal Environments for free in the cloud means that I do not need to wait for my employer to catch up for me to stay current.
This predictable, easy-to-swallow upgrade path is a welcome change of pace from the constant churn in the .NET space. Less exciting? For sure. I love playing with new tech but I do not like feeling forced to devote large amounts of time to learning new tech on a seemingly monthly basis just to keep up with the alphabet soup of the .NET ecosystem.
Making the move to the OutSystems platform was the right choice for me. My enjoyment of the development experience was always tied to seeing ideas implemented and solving the logic puzzles of “how do we do this and do it right?” While I appreciate and respect the art of elegant code, it is a pleasant side effect of doing the things I love, not the goal itself. As a result, being able to move straight to “problem solving mode” and leaving aside piles of decisions around frameworks, architecture, etc. has improved the quality of my life dramatically.
I know that many folks love making those decisions, or resent having those decisions already made for them, and I understand and respect that viewpoint. Even beyond my role as a developer, I am now a development leader as well, and I see the OutSystems platform as being not just “the IDE of my dreams” but the best way to deliver working solutions that I have encountered.
P.S. I couldn’t end the article without encouraging you to give OutSystems a try!
- Justin James, OutSystems MVP