Road Trips and OOP Concepts

This blog was contributed by Danya Alrawi, an intern in the Graphical Users Interface (GUI) Group.

Class Car implements inoperable

I was broken down midway between New Mexico and New Jersey, waiting for a tow truck, when I received an email from my computer science program at NMSU about the Flow Science software engineering internship. With lots of waiting still ahead, I started researching Flow Science. A New Mexico software company that develops scientific software, no way I’m passing this up! I quickly sent on my resume and hoped to hear back. Later, after a couple of pleasant conversations with the company and a programming test, I started the trip from Las Cruces to northern New Mexico with the company of my husband, cat, 15 cichlids and a newly-fixed truck to start a three-month internship with the GUI group.

On the first day, I was welcomed by the manager of the GUI group Stephen Sanchez, who introduced me to everyone at the office and showed me around. Overwhelmed by the new experience and trying to remember everyone’s names, I went to the break room to get a cup of coffee. I grabbed a mug with a cheesy physics pun on it and started laughing when I saw the other ones. I was quickly put at ease from how nice everyone I met was and the easy-going feel of the office.

Funny physics coffee mugs
Puns abound among Flow Science's extensive coffee mug collection

After a cup of coffee, I was ready to jump into the development environment that had been set up for me. My team made sure I was sufficiently challenged but not too overwhelmed. As an introduction to using Qt (the GUI framework used by FLOW-3D), I started building a GUI for my very simple C++ program. I was equipped with the tools to play around with FLOW-3D’s code and had the freedom to divide my time as I saw fit. I ended up alternating between working on my learning project, reading tons of C++ and Qt documentation, and stepping through FLOW-3D’s code in hopes of drawing parallels between my simple application and the large, complex architecture of FLOW-3D.

Debugging null pointers, picnic and pizza

It is a huge privilege to have a team of software engineers that I can turn to while tackling advanced topics. At first, every bug I didn’t understand was the most frustrating thing ever, but getting past these hurdles became the most satisfying part of the job. After each struggle I came away with a better understanding of the code and the tools I was using, and equally I could see how much more there was to learn. I was tackling weaknesses I had in programming (aka Visual studio debugger) and after a month I was laughing with my team at lunch about my earlier frustrations.

Speaking of lunch, the GUI team has a bi-weekly lunch-and-learn where we discuss selected topics in software development and brainstorm about how we can incorporate them into our development, while we eat pizza. I think this is a big plus because it encourages constant learning and keeping up with the latest technologies, which is really important in the software field.

During my second month, we had a company picnic. Luckily it was a beautiful day, so everyone walked to the park. We had a nice lunch and a birthday celebration for the CEO, and I got to use my camera to capture some of the moments (and improve my manual focus lens skills). It was easy to start a conversation with people, everyone was very nice and eager to hear from me as well as willing to share what they do at the company. I discovered that Paree from the sales team was also into photography, and he was really nice about listening to my camera babble while we walked to the park.

Flow Science Company Picnic
Danya (left), with fellow GUI Group members Omar, Stephen and Edgar

Internship-wise, I was now feeling a lot more comfortable with C++ and contributing to the product’s codebase. It was a big moment the first time I saw my modifications running inside FLOW-3D’s GUI and it only made me want to do more.

Now that I’m at the end of my third month here, I feel that I’ve grown personally and professionally. My approach to solving problems has significantly improved and every time I encounter an issue that seems difficult, I get excited to find the solution rather than intimidated. My team has been amazing at exposing me to all the components necessary to the product’s functionality, helping me identifying my strengths and difficulties, and making sure I take away good development habits. I learn new things every day, and being surrounded by the knowledgeable people at Flow Science and hearing the whiteboard discussions in the background inspires me to continue learning.

Editor’s Note: Danya’s hard work and dedication has earned her a full-time position of Software Engineer in the GUI group starting at the beginning of 2019.