Marina Schwenk on COMMON, Women in IT, and Unit Testing
Pictured above: Marina Schwenk (left) and Charlie Guarino (right)
Charlie Guarino: Hi, everybody. I'm Charlie Guarino. Welcome to TechTalk SMB. Our first guest ever is an IBM software developer and admin, and somebody who is definitely not letting grass grow under her feet. I am very happy to introduce to our podcast, Marina Schwenk. Marina, I was looking at your bio here and so many different things jump right out at me. I mean, I know you have an associate's degree in computer-software development and also a bachelor's degree in computer information system software development but what strikes me really is what you've accomplished since graduating college and I'm going to just rattle these off. I see that you are a member of the COMMON America's Advisory Council. You're the vice-president of your user group WMCPA, the Wisconsin Midrange Computer Professional Organization, also a member of COMMON'S YIPS Young i Professionals Committee, and more recently in 2019, you were selected as an IBM Fresh Face. Now what strikes me is this resume of yours reads like somebody who has been in the IT industry for decades and yet you've only been doing this professionally since 2015, so tell me about that. You seem to accomplished so much in such a short amount of time. How is that even possible? Where do you start?
Marina: You just kind of hit the ground running so for me, I'm going to step back a little bit. While I was going to school at Gateway—so I earned my associate's degree from Gateway and I talked about a bit yesterday in the event I was doing yesterday. Things kind of come down to one decision you make, and I think one of the best decisions that I made there is I actually almost left Gateway, and I came across a student who convinced me to stick with the program. That decision kind of led me to being taught by Jim Buck and him introducing me to WMCPA as a student and to the platform, which then after graduating them, I got my job at Everbrite. But being introduced to WMCPA and being involved with WMCPA as a student, I think that definitely has been the first step for me. After I graduated, I kind of went back into my shell a little bit and just started working for Everbrite. Right away, I started working on my bachelor's degree, and I graduated in 2017 with that but I just started working on some side projects. And at the end of those side projects, what made me come of my shell and got involved in much more than just my user's group, which I stayed involved in after I graduated from Gateway.
Charlie: That's interesting, but I'm happy to say that I've known you now for I guess, the most of your professional career. I was attending the user group in Wisconsin in 2015 and that's when I guess you and I first met each other. I don't remember you being as public as a figure as you are now. I think you were probably like most IT people, they're introverts and that's not—
Marina: Yes.
Charlie: To be derogatory at all. I think it's just the nature of IT people in general, and yet you've blossomed into this, and I'd like to talk about that also about how you've come into your own in that arena. What does public speaking or what motivated to even want to get started with that or giving back to the community as it were? Just to start giving back and realizing that you had a knack for this?
Marina: Well, I wouldn't necessarily call it a knack, just more of a big part of who I am and I think it kind of reminds me or overtakes the natural introverted side is I love helping people. I've got such a big need to do something that matters to make a difference and for me, there are two open-source projects that I co-wrote and I knew with the first one when we finished it, I wanted to publish it out to the IBM i community because I felt like it could make a difference to them. I knew that the best way to get it out to the community, because no one knew who I was. Because like you mentioned before when you first met me, I was that shy girl that would go to the conference, attend sessions, learn as much as I could and no one knew who I was. I was perfectly fine with that, but I knew I had to start speaking and publishing that project is kind of what crossed me into that public speaking realm. I didn't start speaking until 2018. I actually could have started speaking a year earlier because that's when I published the project, but you kind of have to force yourself out of your shell a little bit and I'm really glad that I did.
Charlie: Well, I think to that end, look what it has done for you. I think your professional network has, I don't even know to what scale, but certainly I think your professional network as a result of your speaking has had to have increased.
Marina: Yes, it definitely has, and I think when the first time I presented was for WMCPA. They let me present at the spring conference and that was a big boost for me presenting there, but the next time I presented was for the fall conference at COMMON, and Ashley Muller was talking to me at that conference and my session because I gave a session on SQL. I had the largest amount of attendees for that time block, and she told me, this is a popular session. I want you to continue to do this, so maybe you should consider being part of the speaker mentorship program. So she paired me up with Debbie Sagen, and I love Debbie. She's been a great mentor for me for speaking but forcing myself out of my shell and speaking has been great for my confidence.
Charlie: Going back to your resume, I see things on here like member of the COMMON America Advisory Council. Talk about the CAAC to begin with. What exactly is the CAAC's role? Let's start with there—start with that.
Marina: Well, the CAAC's role, we represent the IBM i community. It's a group of people and it's people in various different roles. Some people, they're ISV's or a couple of people, maybe they're in like that VP or leadership role, and then there's a couple of people like me that are developers, and we've reviewed the RFE's that come in and we rank them. We tell IBM, we think this is a valid request and we want you to allocate time for it or we think this one, allocate time, but when you have more time, and they value our input. They really do, and I love being part of the CAAC. I really do. I think being able to speak—I don't want to say speak for the IBM i community, but advocate for the IBM i community, has been great for me because, I like I said before, I like to help people. I like when I see a RFE or I see a problem that someone has, I'm immediately trying to think in my head. How would I solve that problem to try to figure out, okay, should something be done to solve this RFE or not? So I love being part of the CAAC.
Charlie: So with that being said, it's no surprise to me that in 2019, you were in fact selected as an IBM Fresh Face.
Marina: Thank you.
Charlie: I think it's wonderful. Talk about, you’re on the Women in IT, the WIT committee. What role do you think that women in particular have in IT that's unique to them? Why is there a separate committee for women in IT?
Marina: Well, I think WMCPA has ours and really the whole reason behind usually the women in IT committees are just to inspire young women to get involved in IT. That’s my take on it, is to show them, okay, there are women in these roles. You can do it. In our case for WMCPA, we've worked with a lot of the schools to introduce them to the IBM i platform, because they're not even aware of the IBM i platform. But we've had a lot of just discussion and just showing that women do have a place in the tech industry.
Charlie: Right. I mean, historically, it's been a male dominated industry but that's no longer the case and thankfully so. I'm glad that you're part of that and heading that up. I think it's an important committee to be involved with. Let's go forward. You mentioned earlier some projects that you've committed or you've made available to the IBM i community, open-source projects. I know one of them has to do with logging, application logging. What can you tell me about that?
Marina: So that one, and it's one actually, that it was my first one, and I really set back Christmas of 2017 so it's one that I do want to rerelease. It is application logging. So what it is, it’s procedures that you can call and configure to do logging for you so it's something that really competes with excuse me job logs that you can always keep around, so if you call this procedure to log something. Let's say your program blows up and you're calling the method to do the logging. If it's configured to log, then it will write it to the table, so you've got that log information around as along as you want it. You can configure the logging on and off because there's a data area that says okay, I want to turn logging on for this program or I can shut it off, and you can do that by severity level. That, for us, because we use it all the time, it has been such a big change for us when it comes to dealing with problems or dealing with issues with programs. If we've got something that blows up in the middle of the night, if I've already got logging in the program, I can just turn on logging and run the program again, then see what was entered into the database and that'll give me a good idea of what's going on.
Charlie: It gives a whole new dynamic and dimension to application debugging and things like that, because you're giving yourself more insight into what's happening in real time.
Marina: Correct.
Charlie: That's awesome. The second project I want to talk about is one that I think is getting even-more recognition these days is IBMiUnit, because I know of RPGUnit, so why don't you talk about that just for a minute? RPGUnit or how i and where is that genesis of IBMiUnit, and what is that all about?
Marina: So IBMiUnit, it is an RPGUnit testing framework, and just to kind of preface it a little bit, when I started at Everbrite, the only Unit testing that we were doing was on the Java side and that was using JUnit. We knew that we wanted to start Unit testing some of the RPG side, but the only way that we could do that was either creating separate programs and using the display op code or Unit testing using Java, which for us, that did work. But we knew that it would only help certain members of the community, those that knew RPG and Java, so we knew that we wanted something native. At that point this was like 2017, RPGUnit hadn't been updated at that point so when we did look at it, we were like okay, we wanted to kind of do our own, and so that's when we started on IBMiUnit. We had the concept in mind, and the biggest thing for us is, we wanted to make sure that it followed the same standard of all the Unit testing frameworks. So we got it done. It's native RPG and it's released out to the community.
Charlie: So testing is such a broad term. Give me an example. I mean, what comes to my mind with one of these tools is seeing insertions, for example. Can you speak to those, and how they might be helpful in an application?
Marina: So the beauty of Unit testing is exactly that. So Unit testing is, you are testing exactly that. You are testing Units. You're testing little pieces of code, so the best way that you can think of it in the IBM i world is, you're testing methods or procedures as we call them inside of a service program and when you're able, when you've got a program that maybe calling four or five methods, you can test those four or five methods individually and multiple times. You can hit them multiple different ways. That's really Unit testing.
Charlie: You mentioned procedures, you know, multiple procedures, things like that. That is certainly on the roadmap of program modernization, I should say, so do you think using a tool such as IBMiUnit improves even program design? Do they go hand in hand? Do they complement each other in that regard? If you're striving to come with an application that would be more testable, do you think that's going to change the way you even write the application?
Marina: I believe it will, because you do need to have testable code. In theory, you can test a big monolithic program if you want, because you can have your unit test call that program and then test its output or test if it did database I/O. You could have, you could go to the database and check its database, but it's not going to be a true unit test because it didn't test all the individual pieces. So if you do want to use true Unit testing in its true form, then you're going to redesign your applications to use service programs, to use modules and so on and so forth. It does kind of go hand in hand.
Charlie: So what's your message to many of the shops that have, as you mentioned, these monolithic, very large, unstructured programs. What's your advice to them if they want to introduce a more formal testing program?
Marina: Start somewhere. I don't expect anyone to, you know—you can't start big. You can't just look at everything and grab it all in one go and try to take one monolithic program and automatically test it or immediately break it up, but you've got to start somewhere. So if you've got a big monolithic program, that it's doing some form of calculation but that calculation is going to be used in other places. Take that calculation out. Put it into a service program. Then you can write Unit test over that and just start making the changes in that direction. Modernize as you go and take the little steps, but the important thing is to just start.
Charlie: Let's talk, I have this one interesting question, because I talk about refactoring and there's always that balance that you need to find when you're refactoring code, and the thing that I'm referring to specifically is you can over refactor where you reach ultimately a point of diminishing returns—
Marina: Right.
Charlie: And it becomes obsessive at that point, so do you have a similar paradigm for some—can you over test a program?
Marina: I don't—
Charlie: Or, I guess, a better question is at what point do you say we're done?
Marina: I would say you're done when you've tested the most scenarios possible, so you've tested the program in all the ways you think that it could possibly break, because ideally, you're testing to make sure that your program or application is going to work, and so you want to throw as many scenarios as possible, but you're not going to throw—if you've got just a small procedure, like for example, I've got a text SQL to upper case procedure, I'm not going to throw 50 Unit tests at it. I only have five Unit test cases for it, because I know at one point, it's all going to be redundant, so you just throw until you feel comfortable that you know your code is not going to break. It kind of comes down to how comfortable you are, I guess, with your code.
Charlie: But you're speaking as a developer. I mean, I don't think developers should have the final word in testing. I think that—I mean, that's a good—that's Unit testing, exactly what it is, Unit testing.
Marina: Right.
Charlie: But do you think that developers, I mean I know this is the case in many cases, where the developer themselves will do the testing, and then it gets right promoted to production.
Marina: I don't know. I'm in the situation to where we have to wear multiple hats. We don't have an individual QA person. We don't have, you know, I'm an admin. I'm project manager, developer, all that kind of stuff, so I guess the best thing you can do, which is our approach to things is, we have a lead architect and if I'm writing some Unit test, I'll have him look at it or I do code review to Shelly, the girl that I mentor. If you're in a shop to where you are both the coder, the tester, the person who's in charge of this, ask your other developers to look at it.
Charlie: Or somebody that uses it before you promote it as well—
Marina: Right.
Charlie: Uses—
Marina: Right.
Charlie: The user community as well. All right, well, let's just switch over to one last question I wanted to talk to you about, and that's just the IBM i community itself, because I like to think that I'm part, well, I am part of the community certainly, as are you, and what's your final thoughts on what you've already brought? I mean, I know what you've already brought, but what would your final jewels and pearls of wisdom for other people who are just getting into this space and the IBM i community? What are your thoughts on that?
Marina: Well, the one thing that I and in fact I talked about this yesterday in the session that I did for COMMON focus, is that the one thing I love about the IBM i community is how tightknit the community is, how open everyone is to help one another, and just how easy it is to where if someone needs help, either one person knows that answer or they know how to get the answers and they're more than willing to help each other out. That goes across from not just anyone that's involved in one local user groups. That's across multiple user groups. That's across COMMON. It's just the IBM i community together and once you get into the community, you don't ever really want to leave it.
Charlie: Hmmm. One big happy family. [Laughter]
Marina: Exactly.
Charlie: Great. All right, well Marina, I'll tell you what. I can't thank you enough for your time today. I think this was a great little exercise that we did here, and I'm truly grateful for your time and for your candor and your honestly and more importantly for all you've done in the five-six years you've already been in the community. I can't wait to see what you're going to do next. I'm quite confident it's going to be outstanding.
Marina: Thank you, Charlie.
Charlie: Thank you. It's always a pleasure. Thank you. Bye-bye. Thank you everybody for joining us. Bye now.