A Developer’s Journey in Transitioning to the Acumatica xRP Platform
Editor’s Note: In Brian’s post, he shares his unique viewpoint in his journey in becoming an Acumatica developer after spending two decades as a “Top-Down” Programmer. He provides an interesting perspective along with some sage advice for other developers joining the Acumatica family from the world of “old-school” programming that should resonate with many in the ERP world reading this blog.
The world is full of greats… great musicians, great leaders, and of course great developers. Whatever great you hope to achieve in life, nobody starts off as great, but they all share something in common. Everyone must start somewhere.
One of my professional goals is to become a great developer on the Acumatica xRP platform. While I have made significant strides, there is no substitute for experience, and every day is a new learning experience. With 20 years of programming on PROGRESS 4GL to support a legacy system, making the move to C# and the Acumatica xRP platform has been filled with moments of frustration, enlightenment, and yes – even greatness. If you are just getting started and read on to learn of my journey, I hope you will gain an understanding that others have been where you are – knowing where to find the best resources is vital and that you CAN succeed at this endeavor.
Challenges Faced in the Transition
Top-Down is NOT the same as Object-Oriented… except when it is
To understand my struggle as an older developer, you must first understand that I did not grow up in the world of Object-Oriented Programming (OOP). My world was Top-Down, where you start at the top of the page and tell the program exactly what to do. Programming skill was based on a grasp of the language and syntax, understanding of transaction scopes, and relatively static user interfaces. When moving to C#, the idea that one interaction could trigger some seemingly random validation and update even before the user has finished completing the form seemed like pure CHAOS. But then, finally, I grasped a concept that changed the course of my transition to OOP.
“Top-Down is NOT the same as Object-Oriented… except when it is.” What I mean here is that I finally realized that there is a structure in the chaos. Sure, an event may fire in the middle of your current code block, but there IS an order. By realizing that I can write a code block to execute “top-down” as I was accustomed: event handlers virtually exist as subroutines with an implied “if <condition> then…” within my code. Code within OOP is still “top-down” in a way, but with the ability for real-time interaction with the code to alter its behavior, thus enabling a more natural interaction with the end-user. This gave me a point of reference as a pathway towards enlightenment.
Learning in virtual isolation
As my employer made the decision to adopt Acumatica ERP, my counterpart was assigned the task of managing the overall project and configuring the system. Having spent almost 18 years enhancing our legacy system, I was designated our new C# developer for Acumatica. As a team, we learned the application side of the software, and I focused on learning C# and the Acumatica xRP platform, while my counterpart learned GI’s, Import/Export scenarios, Business Events, etc. As a result, we both had the application as a common point of reference, but we were both in virtual isolation to learn our new skills. Our Acumatica Partner provided substantial support early on for planning and implementation, but there was nothing to do but roll up my sleeves and start studying if I was going to learn how to develop on the Acumatica xRP Platform. I must say, while there were some learning resources available, this was a particularly scary and exciting time in my career.
Trial and Error, and Error, and Error
Thomas Edison is credited with saying, “Negative results are just what I want. They’re just as valuable to me as positive results. I can never find the thing that does the job best until I find the ones that don’t.” This sums up my learning experience, especially early on. I remember learning enough to do something, finding great excitement in the success, and then sinking into despair as I struggled to repeat that success. Having spent most of my career producing results, sometimes even while on the phone with the person making the request, learning in virtual isolation would lead me down roads that would inevitably lead to a week of trial and error, and error, and yet more error. I beg that you learn from my ignorance… While this approach teaches you hundreds of ways not to do it, there IS a better way. You just have to know where to look. Lucky for you, that’s next… Read on!
We’ve Only Just Begun
If you don’t know C# yet, you need to learn that first. When you are ready to get started, hop over to Microsoft’s website for some free training resources.
Once you have the basics of C#, I found that I learn faster when I use what I have learned. Do not worry if you are not a seasoned pro with C#: Experience and failure is the best teacher. Head over to Acumatica Open University (http://openuni.acumatica.com/) to begin your journey. I learned from a previous set of training guides and videos on Open University, but I have begun reviewing the new training guides found there now. The updated documentation is incredible, and even after 2 years of development on Acumatica, the new material is providing new and highly useful insights.
A great resource for new Acumatica developers is the Onboarding New Acumatica Developers page which provides an all-encompassing roadmap to all the resources you need – including quick-start guides, documentation, and training for developers.
It Takes a Village
Once you have completed the first few training courses and follow the Quick-Start Guide for Developers, your toolbox should begin filling with skills that enable you to make significant functional enhancements to Acumatica. If we only needed to reproduce what is in the training guides, we would be set! However, nothing I do ever seems to appear in the training guides saying, “Brian, you just need to do this.” Without another developer in the room to ask, I needed personalized support, and I mean in a volume you cannot afford to buy in developer support hours. Fortunately, deep pockets are not required to get help with most developer questions.
The key to avoiding the immense frustration that hit me early on is to take an early interest in Asking for Community Support. Head over to stackoverflow and search for keywords related to your issue. If you start the search with [Acumatica] then the results will be returned within questions asked with the tag Acumatica. Some of the great developers I have come to know over the last 2 years started as contacts on stackoverflow. Acumatica as a company and the Acumatica Developer MVP program ensure that all questions tagged Acumatica are seen. Getting a good response has more to do with how well you ask your question, but that’s a post for another day. Let’s just say include as much information as you can along with code samples and leave it at that for now.
It’s not what you know. It’s WHO you know!
As I closed out my first 6 months of development, I still struggled constantly. Having finally adopted StackOverflow as my go-to source for help, the community was much smaller than it is now… even just 18 months ago. Our Acumatica Partner connected me with Mark Franks, the Platform Evangelist at Acumatica, and both told me, “Go to Summit at the end of January and participate in the Hackathon.” I remember thinking, “A Hackathon, huh? I don’t have enough skill yet to do anything!” I told Mark that I was learning in virtual isolation, and I really needed a way to get plugged in better. He reiterated, “You really need to go to the Hackathon. We want people from all areas on the teams, and you will make contacts who will be able to help you learn.” – paraphrased from memory (Editor’s note: Brian has a good memory.)
I took the information to my boss who has always been supportive of me. Without hesitation, he said, “Book it!” Let me say this very clearly. NOTHING shortened my learning curve as much as a weekend at my first Acumatica Hackathon. Not the Summit. Not the training course I took at Summit. NOTHING. The MVP on our team, Joshua van Hoesen, was kind enough to answer my questions, and he provided insight into things that I did not even know to ask. When I went home, I knew how to debug my code with the Visual Studio built-in debugger, even though my dev instance was on a remote server. I am not trying to sell you on spending money on going to Summit and the Hackathon. I am telling you that this turning point transitioned my experience from “Learner in Virtual Isolation” to “Empowered Remote Developer”.
The Journey Continues
Teachers Make the Best Students
Years ago, I found that the PROGRESS Email Group (PEG) propelled my learning exponentially as I started answering questions that others asked. Why? Quite simply, teachers make the best students. The research and variety beyond the normal day to day view has the innate ability to teach the one answering questions more than the one desperate for that nugget that fixes the problem.
I hoped to repeat my experience from so long ago, and the community support on StackOverflow is proving that little has changed in 20 years. When I ask a question, I need an answer but have little ability at that moment to expand my thoughts beyond fixing the thing that is not working. Sharing my knowledge requires thinking about what is in the question, what I think might be missing from the question, how I might accomplish the objective, and how to best convey my response so that the person asking can understand it. Are my answers always the best? Of course not! I am only 2 years in. But most of the time, they help. Developers often just need a nudge in the right direction, and all of us can answer a question occasionally.
Take Good Notes
Coming back from the most recent Summit, I felt a profound desire to join the likes of Sergey Marenich and Yuriy Zaletskyy in writing a developer blog. I had been using StackOverflow as a means of documenting my struggles (via the question that I asked) and realized that those lessons learned might someday help new developers. Hence, Acumatica.dev was born. The key takeaway is that whatever helps you learn best, take good notes. Whether in a blog, a notebook or by documenting your questions and results within posts on Stack Overflow, finding a way to get back to the lessons you learned reinforces what you learned. Equally importantly, it enables sharing that learning with others so that we can all become great developers in time.
I’m just here to Hack (cough, cough) – Hackathon Year 2
At the end of January, I was fortunate to be able to return for my second Hackathon (oh, and yes, the Summit that followed.) Once again, the Hackathon was the highlight of my year. While I made contacts my first year that helped me throughout the year, I got to see them again, meet more great developers, and even actively contribute to our team project this year. As much as I enjoyed the Summit and training session on the application side this year, the Hackathon remains the event of the year for me. Our team MVP, Fernando Amadoz, helped me push beyond my normal development and expand my view of the world of Acumatica Development.
My journey is still just beginning, but I am further down the road than some of you… albeit just a little. My sincere hope is that the story of my journey, struggles, and path towards greatness encourages you, maybe even enlightens you, but mostly brings you just a little closer to becoming the great developer we all know that you can be.