I have been working with some amazing coaches through the RAD Women program that I helped co-found, and our first Women Code Hero comes from that that group of women (shout out to all the RAD Women!).
RAD Women is committed to provide coder education and community for women who are advanced Salesforce Administrators. For more information, check out the RAD Women General Programs group on the Salesforce Success Community.
Melissa Prcic works as a Salesforce Developer at Stand for Children, whose mission is to ensure that all children, regardless of their background, graduate from high school prepared for, and with access to, a college education.
Melissa started her work on the Salesforce platform in June of 2011 as a Salesforce admin. In 2012 she started learning to code and became a full time developer in 2013. She holds the Salesforce Force.com Developer certification.
Kieren: Melissa, thanks so much for being our first Women Code Hero of the Month! I have worked with you as a coding coach as part of the RAD Women program, so I know from experience that you are a talented developer. I'm curious why you wanted to become a coder and how you got your start?
Melissa: I was a database administrator before I started working with Salesforce and I had been toying with the idea of learning how to code for a while, but not really doing anything about it. After I worked with the platform for a while and realized how powerful and flexible it could be, I knew that this was my opportunity to really learn how to code.
I had colleagues who were very knowledgeable and incredibly supportive which really gave me the extra push. I wanted to have a more general introduction to programming, so I enrolled in an introductory programming course offered through edx.org which was Harvard's CS 50: Intro to Computer Science. Go big or go home right?
The course was amazing and incredibly challenging and just what I needed to really get a foundation. After getting to know our code-base and working through some Apex-specific materials online, I started to pick up smaller assignments at work. I hit a tipping point somewhere along the way and realized I wanted to code full time.
I think the incredible power to solve problems was, with fewer limitations than there are using declarative tools, very seductive. I felt like I had the keys to the kingdom! I have always loved solving problems and coding gave me a much bigger toolbox.
Kieren: What a great story! You obviously love coding and yet I'm sure you've also faced some challenges along the way. Can you share what you love about coding and how you overcome your challenges?
Melissa: The best thing about coding is when you hit that intersection of a difficult and interesting problem, and a creative but challenging solution. I like being right on the edge of what I know I can do. I want to be comfortable enough that I have the tools, but not 100% sure what the solution is going in.
When you work through something hard and finally get it working, and it's awesome, there's just no better feeling.
The biggest challenge for me is not being hung-up on the fact that I don't have a technical background and that I know I have gaps in my technical knowledge. It's tempting to think that I need to fill in all the gaps and 'KNOW ALL THE THINGS!' before I can call myself an expert in anything, although I know on some level that's not the case. I worry that I started too late or that I can't catch up, whatever that even means. It's a struggle to take ownership over my area of expertise and to have the confidence that I can take on the next thing no matter what it is. But I'm working on it!!
Kieren: It sounds like you are a life-long learner (I can relate!). I bet you have some great advice for admins wanting to code, or anyone learning code. Looking back on your path, what advice can you give?
Melissa: Have confidence that you will figure it out, even if it seems impossible. No one was born knowing how to code, despite attitudes and appearances to the contrary. Coding is not magic, it is just a skill that can be learned if you have the interest, analytical skills and resources.
Also, if something isn't clicking, give it time and keep trying. If it still isn't clicking, maybe you need another resource/teacher/tutorial. There are so many concepts that I struggled with until I saw it explained differently, or even just saw it working in real life. The "A-ha!" will come if you keep chasing it. It just may not come as quickly as you would like.
Kieren: I totally agree with you that it's important to persevere when learning to code. That you never know when the solution will happen. It's always a thrill when it does, but it's sometimes hard to stick it out when you're not sure when it will come!
So on a related topic…given that there can be some challenging times in coding, can you share what success mean to you as a coder, and how you support your success?
Melissa: Success for me is two-fold. First and foremost it's being able to solve the problem at hand and meet the needs of my Organization. I work for Stand for Children, an education advocacy nonprofit, and when I deliver a solution that helps us do our work, I know that I'm contributing to something bigger. With the right tools we're working to close the achievement gap and anything I can do to move that forward with technology solutions is a success.
Kieren: Learning just never stops does it! I think that's why I trended towards a technical career, because I love learning, as you say "ALL THE THINGS!
So in that vein, let's geek out a bit and talk tech. Do you have a favorite coding design pattern, philosophy on development or coding methodology you can share?
Melissa: Asynch all the things!! I'm not sure if this is what your question is getting at, but I'm a big fan of making operations asynchronous when possible. Salesforce has some really great tools for this, namely the Batchable and Queueable Interfaces (also @future of course, but I am less and less a fan now that Queueable is available).
Our organization has a great deal of calculations and tallies that are fired off when objects and related objects are created and updated and staying well under limits, especially SOQL, is a challenge. Since these calculations don't need to happen synchronously, I can just queue them for later execution and stay within limits.
I recently wrote a little interface that implements the queueable interface and accepts any single object or list of objects for upserting. It's so easy to use and allows me to keep things small and snappy.
You have to consider test coverage patterns and error handling for sure if you go down this route, but it makes things so much smoother for complicated or lengthy processes; I love blog post by John Kaplan on The New Queueable Apex Interface.
Kieren: Thank you for sharing that and it's been a blast getting to talk with you today and I'm so happy I have the ability to introduce you to the world ("Hey world…meet Melissa … Melissa this is the world!").
Before we head back to our various coding projects, anything else you want to share?
Melissa: I love my job and I am so, so glad that I decided to take the leap and become a programmer. It took a lot of time, energy, perhaps a few tears, but it has all been worth it. Growing up I don't think I ever considered software engineering or coding as even a remotely possible career. I had internalized the "fact" that I was bad at math and that my hyper-verbal nature meant I should be in the humanities.
I don't regret my Poli-Sci degree for a second, but I do wonder what might have happened if I'd had an earlier exposure to coding and realized that my love for problem-solving had a match in this profession.
There is nothing gendered about code or the skills required to write it, but there is certainly a problem when it comes to the representation of women and people of color in this profession. My hope and belief is that this will improve over the next few years and decades but it's going to take all of us pushing in the right direction.
Thanks to Kieren for this amazing blog and to all the people out there working for greater diversity in the technical field. It can only make us all better at what we do, and that's what any good coder should want!
Kieren: Thank YOU Melissa for all the work you've put in to help women learn coding. Oh I almost forgot, if someone wanted to contact you, how can you be reached?
Melissa: You can contact me at melissa.prcic@gmail.com and on Twitter @MelissaPrcic … I guess I should start tweeting one of these days!
Kieren: You totally should! There is a great Salesforce community on twitter! I can't thank you enough for being my very first Women Code Hero of the Month! You are a true inspiration and a wonderful and talented person.