(This is part 2 of a series of posts by Joe Bustamante, a rising Hope senior who is spending the summer as an application development intern at Open Systems Technologies in Grand Rapids, MI. In this series, Joe describes his internship experience and how it relates to his learning at Hope College).
One of the things that made me want to pursue computer science and application development is the amount of learning involved. Technology changes so rapidly that you constantly have to learn and evaluate new tools. Being a constant learner is one of my favorite parts of the job. Almost nothing is as satisfying as learning how to solve a problem in a different or better way than you had realized before. That first moment when everything comes together and begins to make sense is one of the best feelings in the world, and working in technology just means that you continually get to have that feeling as new problems arise for you to overcome.
That feeling has been a pretty big defining factor of my internship so far. In my first post, I wrote about how I was working on developing an Alexa skill to connect to devices via the cloud. Almost none of the languages or technologies that have been involved in developing the skill were things that I had experience with prior to starting at Open Systems Technologies (OST). I’ve had to learn a lot in the development process, and it hasn’t always been easy. There have been a lot of times where I’ve thought I did something the ‘best’ way, or that I was really starting to understand things. Almost every time I’ve felt that, though, there’s been a better way to do it. Whether that was something I realized on my own or was pointed to by someone else on the team, it can be a hard thing to come to terms with the fact that you still have a long way to go, especially after you’ve been working on something for a while. However, accepting that fact and fully embracing it as a learning opportunity has been something I’ve been constantly trying to push myself to do so far, and it’s opened the door to that incredible feeling that can only come through learning.
Out of all the things I’ve had to learn or get better at, the idea of modularization and decoupling stand out. When you’re working on a project by yourself, especially a small one, it may not be an issue if a lot of your code is coupled together or isn’t as broken up into individual files or classes as it could be. It certainly isn’t a marker of good design, but it might not hamper your program. However, working in a production level environment, establishing a codebase that many other people will have to understand and modify, and trying to write something that will stand the test of time and scalability all require decoupled, modular code. Before I started, I thought I was pretty good at breaking things up and writing programs in a way that was easy to understand.
Independent of how skilled I actually might have been – probably much less so than I thought – I’ve realized just how much room I still have to improve. I’ve had to refactor the code for the Alexa skill a number of times at this point, and each time it becomes way easier to read, maintain, and add on to. For this, I’m really grateful to the senior developers on my team who have been working at this a lot longer than I have. Having someone else look at your code can be a bit scary, but when someone more experienced than you walks you through it, it opens the door to things you might never have thought about. Having other people do code reviews and take the time to help me learn how I can be an even better programmer has been one of the best parts of the internship so far, and something I’ve really come to appreciate.
Learning to be a better programmer is also exciting when I think about my future – both in a more immediate sense as I come back to Hope and in the long run after I graduate. I know that what I’ve been doing at OST will make me a better student in a number of ways. For one, having actually worked in a production level environment will ensure that my coding practices will be at a higher level than if I hadn’t had my internship.
This means I’ll be able to design programs for projects in a much cleaner and more effective way than I would have before. Another improvement is that I’ll have a better understanding of the current landscape of technology and therefore be better able to choose technologies and languages to solve the problems I’m given. Coming into OST, it was a bit overwhelming knowing that I would have to work on projects at a scale much higher than I had before, and have to learn a ton of new concepts in the process. Now, having already had to do that, it will be that much less daunting doing it in the future.
As far as how my internship will help me post-graduation, it’s comforting knowing that I’ll be able to enter the job field already having production level experience at a well-established practice behind me. How many people in college can say that they worked on a team developing software that shipped and is currently in use by thousands of people? Additionally, I’ve been able to do a lot of work in the internet-of-things and cloud computing realm. When you look at the future of development, I don’t think there’s much debate that internet-of-things development is undoubtedly one of the most important and fastest growing fields. To be able to enter the job field having some pretty extensive experience working on those types of projects is really cool, and something I’m very grateful to OST for getting to do.
All in all, it’s been a pretty incredible experience so far. I think, when I was younger or just considering going into software development, I had this idea that the industry was somewhat cutthroat or that if I didn’t end up working for some well-known Silicon Valley firm, I wouldn’t really be successful. While there’s certainly merit to working for one of those companies, I’ve realized that the industry at large is full of incredible, intelligent people working on equally incredible projects. I’m not quite sure what my expectations were about what working at OST would be like, but whatever they were, they’ve definitely be firmly exceeded. I’m excited to finish it up strong, and then take those skills with me not only back to Hope but wherever I go in the future!