Blog

Craig St. Jean, From Young Programmer to Chief Technology Architect

05 Jun, 2024
Xebia Background Header Wave

Hello! I am Craig St. Jean, an OutSystems MVP based out of Ohio in the United States. I am a dedicated Xebian driven by a high degree of intellectual curiosity and a desire to share what I’ve learned. In this post, I will give you an idea of where I am in my career and how I got here. 

Early Inspiration 

I suppose I can technically say I was “programming” (or at least scripting) back in the late 80s or early 90s when my uncle gave us a Commodore 64. Back then, I was more interested in being outdoors, but the idea of playing some games on the “TV” was intriguing. The Commodore 64 would start by putting you into a BASIC shell, so if you wanted to play a game, you had to issue LOAD commands to load from the tape drive or 5½-inch floppy, then issue RUN commands. But, back then, I was just typing in some instructions from a paper my uncle had written so I could play a game. 

My real start in programming was later, in 1995. A friend wrote something in BASIC, and the computer followed his instructions. I was immediately pulled in; the idea of making the computer do whatever I wanted piqued my curiosity. At that point, I knew I would be spending a lot of time in front of the computer. 

I quickly moved from writing text-based games in BASIC to anything I could think of in C. I wrote tic-tac-toe solvers, utilities to solve problems for me, and even a custom-interpreted programming language. Then, to expand my capabilities, I jumped into C++ and built more text-based applications, and also started on Win32 and MFC GUI applications such as TCP/IP chat tools, remote system administration, and more. 

After all of that, I tried my hand at anything I could get my hands on. Someone had sent me Delphi 5 Standard, so I did a bit of that. I got started on C# when the very first beta of Visual Studio.NET came out (big thanks to Dr. Dobbs magazine for shipping the disks with that edition’s magazine), and I wrote CGI web applications in Perl, etc. 

Before OutSystems 

In 2006, I finally began my professional career as a Java developer at a Property & Casualty insurance company. I was a full-time intern and just continued school during off-hours, ultimately getting hired as a full-time employee the following year, where I would continue to go to school off-hours so that I could graduate the year after. 

As a Java developer at an insurance company, I was really able to start to understand what solving big business problems in a large enterprise was like. I went from having fun writing small command line utilities with no thought to how the application was designed to needing to understand the ramifications and testing rigor required to change just one small thing in one library that many critical systems depended on. I was also finally exposed to big integrations, for example, using IBM WebSphere MQ to connect to a z/OS mainframe to read policy data. This would also be my first time working on web applications beyond the simple CGI scripts I wrote in Perl previously, with most of our code hosted in BEA WebLogic. 

Back then, there was an expression, “Nobody got fired for choosing IBM,” so we migrated from BEA WebLogic to IBM WebSphere Application Server. Thinking back on things, this one project was the first major turning point in my career, as it allowed my interest in learning as many things as possible to turn into a desire to teach others. I quickly became one of the go-to people to document how-tos and help diagnose people’s problems with WebSphere and the IDE we used, IBM RAD. Little did I know that all of this would lead to me teaching a course for Pluralsight 7 years later on WebSphere Application Server. After the migration, we focused on service-oriented architecture (SOA), a pivotal predecessor to microservices. 

Outside of technical firsts, I was also very lucky to have a mentor who ensured I was given great opportunities and showed me that I may have thought too highly of myself and would always have much to learn from others. He also taught me that “’stupid’ is not in a professional’s dictionary” after I shared my honest feelings about how something was built (ok, I might still be learning that lesson … ), and I also learned to look at everything as an opportunity. 

Fast forwarding through many more failures, successes, and learnings, and I had moved on to a different Property & Casualty insurance company. Here, my diagnostic capabilities were really put to the test with their Java-based web applications. There was no enterprise architecture, no J2EE (only Tomcat), and the only integrations to speak of were using an automated tool to screen-scrape a mainframe session. But we pushed forward with the web applications to meet the business’s needs, while also starting to migrate them to C# and ASP.NET with a proper system design, DevOps, etc. 

After my time with insurance, I moved to a global retail company specializing in jewelry, also using IBM WebSphere Application Server. While there, my career grew quite extensively. First, I worked on an iOS app that our executives used, then various web apps and an Android app that was deployed to their stores. Then, I partnered up with Pluralsight, becoming a vetted Pluralsight Author (which was quite a difficult process) and publishing a course on IBM WebSphere Application Server. After that, JavaScript was growing in popularity, and I built some single-page applications using Dojo. 

As I was focused on development, a new CIO joined the company. The CIO told everyone he was open to having one-on-ones with individuals, which most people decided not to do. Even though he was my boss’s boss’s boss’s boss, I decided to take him up on that offer. From him, I learned that getting to the point of a CIO is a bit of a dance, going between technical and managerial capabilities. He compared it to “tacking” in sailing. 

The CIO told me, You can’t grow to the highest level of technical capabilities without at least some degree of business acumen, and you cannot get to the highest level of business without at least some technical acumen.” He also told me that “a CIO is right in the middle of the two, and to get there you have to ‘tack’ between business and technical.” 

Taking his advice, and with the luck that a Project Manager opportunity opened up, I decided to try my hand at “tacking” away from my technical capabilities, even though I truly had no interest in doing so. That said, the experience I gained by being in the Project Manager role really opened my eyes to a different way of viewing things. 

As I worked through being a Project Manager, another opportunity opened with the same business customers that I had been working with, called a Product Capability Manager (essentially a mini-director). I didn’t care for the work of a Project Manager, and I was interested in more responsibilities and learning more about people management, so I moved to the PCM role. Amusingly, during this time, I never actually stopped coding; I just changed what I coded. Instead of coding projects, I coded automations for budget forecasting and such. 

As a PCM, I also came up with one of my favorite innovations. The company that provided us with warehouse management for our custom e-commerce orders would be closing their warehouse, and we had to move everything in-house. I ran the team that would integrate with our e-commerce systems and build the software for our internal warehouse team to pick the products from the shelves, generate shipping labels, etc. Trying to pick products for each individual order would be time-consuming, so we built a process where the “pickers” would pick everything needed to ship in one step, and then in another step, they would scan the items for the orders. The system would determine what order the product belonged to and generate the shipping labels. But, if the product was part of a multi-product order, there would be a process deficiency, so I devised a system where multi-product order products would go into specifically labeled bins. When the picker scanned the next item in the order, the system would instruct them to grab the specific other item out of the specific bin it would be in. This project was a great deal of fun because not only were there opportunities to innovate process improvements, but it was also the first time I was working on a system that made people do things instead of just a computer doing things! 

Although being in a management role was fantastic learning for me, I wanted to “tack” back towards the technical side of things. So, in my final jump before coming to OutSystems, I rejoined the first Property & Casualty insurance company I worked for as a Tech Lead. Being around the people again who helped set me on a great path was really refreshing, and I felt like I was “home.” But, it would only take a couple of years to lead me to a new “home.” 

Journey to OutSystems 

Between being an insurance company and a large Java shop, our business partners were very used to moving slowly. Agile practices were foreign to many people, as were many technologies outside of IBM and Java. However, new people in key roles would set a new direction, and I found myself in the middle of both an agile and digital transformation. 

To move faster, our Enterprise Architecture team evaluated low-code platforms, such as Appian, Mendix, Salesforce Lightning, and, yes, OutSystems. As part of that evaluation, I dug into Salesforce Lightning and OutSystems. From past experiences, I was extremely skeptical of any low-code tool because I found that typically, once you go off the happy path of the tool, you find yourself either stuck or with a complicated workaround. And as someone who loved to write code, my goal was to prove that none of the tools would meet our needs. 

To prove that OutSystems would not be sufficient, I decided to work through a couple of scenarios where I felt it would fall short. The first scenario was to build a website that was driven off of a headless CMS, where the API calls from the CMS were dynamic JSON instead of a static structure. However, by the end of the day, I had a working demo using the ardoJSON open-source Forge component. 

“That’s fine,” I thought. I had something else in mind: a dynamic survey application, similar to SurveyMonkey, allowing an administrator to define types of questions with different types of input fields. Since everything I worked through in OutSystems felt a bit more static regarding the UI, I thought I had my silver bullet, especially since doing such a thing in JSTL or Razor was pretty easy. To my dismay, I again completed the application after a couple of days, hitting every goal and requirement I felt the application needed. 

At this point, I resigned myself to the fact that OutSystems would meet and exceed our needs. At every point that I tried to show it wouldn’t work, I found that the tool either had a great solution or was designed to give me an alternative without compromising the quality and maintainability of my solution. Even our Information Security team was sold on it, saying that the OutSystems Cloud “will advance our security by 5 years.” 

With evaluations of OutSystems being successful, we purchased the platform to build a digital customer experience. Four days later, I had a working prototype of a customer portal that integrated with our Insurance Claims system to provide people with the status of their claims. Even more, I aimed to build everything without writing a single .NET extension, which I found quite easy to accomplish. 

At this point, I decided to turn my career to OutSystems. I was invited to the OutSystems MVP program and started seeking an OutSystems Partner that would be a good fit for me. 

Joining an OutSystems Partner 

As I chose to invest myself further into the OutSystems ecosystem, I decided to move to an OutSystems Partner where I could work towards providing value to a much greater amount of people and companies. Joining Netlink Digital Solutions (now Xebia) was an obvious fit for me, as I already had connections to people from various OutSystems events, and my thoughts and desires aligned with theirs. With synergy between myself and Netlink Digital Solutions, I joined as an Engagement Manager. I also viewed this as a “tack” down the center of both the technical and managerial side of things. From here, I would be on a straight-line path toward a CTO-style position, ensuring I continue growing in all directions instead of just one. 

Growing my Career at an OutSystems Partner 

As both an OutSystems MVP as well as an Engagement Manager at a Partner, there were clear opportunities to help both my own organization as well as other organizations in the OutSystems space. To make a clear difference in this direction, I established the OutSystems Center of Excellence, allowing me to become a Director of the CoE. Over the CoE, I would work towards increasing the quality of our internal people and training, assisting with research and escalations, and playing a significant role in our marketing efforts. I would also speak at OutSystems events, host some of our own, and start our YouTube channel. 

From my efforts as the Director of the OutSystems Center of Excellence, I was able to grow organically toward a CTO-style position. As a services provider, I felt that a chief technology officer may not have made the most sense, as they are usually internally focused, and thus, I became the chief technology architect. I focused on furthering our internal capabilities, development, and training excellence, spreading the word of low-code and OutSystems, and anywhere else I could provide value. 

Everyone has their own path to make. Something as simple as being on a technology migration project put me on a path towards mentoring and training – don’t underestimate any opportunity. And don’t be afraid to leave your comfort zone – I wasn’t interested in managing people, but I took the step anyway to learn more about both the industry and myself. Without these two key points in my career, I would not be where I am today. Work hard, document your successes and failures, learn from both, and remember that you can always learn from someone else, no matter where you are in your career or life. 

craigstjean
OutSystems MVP, solution architect, and developer with significant experience in enterprise applications on traditional Java stacks, .NET, and OutSystems. Technical leader who has led large and small scale projects to drive business value. Mentor and Pluralsight Author.
Questions?

Get in touch with us to learn more about the subject and related solutions

Explore related posts