A (short-term) builder’s bits of insight into Software Engineering Internships
Ioana Teodorescu is a rising junior at Princeton University studying Computer Science. She is passionate about coding, and also enjoys dancing and drawing.
As I’m nearing the end of my 10 week internship at CBRE Build, I thought I would share what I have learned during my time here for future fellow interns navigating the software engineering world for the first time.
1. Software engineering is NOTHING like what they teach us in college.
I’ve heard this one a bunch of times before, and, after working on personal and team side projects, I thought I knew what to expect … but I was so wrong. First of all, the entire workflow is different. When I was working on longer school projects I would feel like such a responsible software engineer/adult if I would checkout a new branch to work on a feature and then merge it back on master. I was used to everything going smoothly, and the concept of merge conflicts was foreign to me. Code review was something that I would take very lightly, which I found is very much not the case when working in a tech company. This may be one of the most important skills I gained by working here, since writing clean code is a matter of practice, which a starting software developer is most likely lacking. I also got accustomed to opening my own and reviewing others’ Pull Requests. Obviously, even within the same company different teams will have different standards of what is considered thorough enough testing to be released to the staging server. However all of these standards are probably way higher than the ones college students adhere to when working, cramped on time, on their comparatively small projects that they are the gods of.
2. Intern projects are not as big and scary as they appear at first glance
Well, here’s the problem. My first thought after reading the spec for my intern project was “Oh man, this is so complicated! It will take forever to make, and I don’t even have any idea how to start”. I got discouraged seeing things that involved parts of programming I’ve never delved into before, especially since working on the smaller tickets that my team gave me to get accustomed to the codebase felt like exactly the right amount of challenge for me, and so completing them was more satisfying. And, to add fuel to the fire, cramming is my second nature. So it was decided: I would keep procrastinating by doing anything and everything else I could possibly be assigned as well as picking up things myself, until the very last humanly possible moment to finish the project. Then I would do what my experience as a college student taught me to do best: panic and cram. But when I finally got around to working on it, it turned out it wasn’t that bad! The first couple of days there was a steep learning curve, but after I got the hang of it I felt like with each line of code the mystery of full stack programming would shatter and my confidence grew. I learned that what you think is going to be more confusing is the better learning experience, so take a deep breath, be brave, and go for it!
3. Asking questions is not just recommended, it’s required (for a great experience)!
Ok maybe this is a slight overstatement but do ask questions as often as you can! Internships are more learning-intensive that any course you could take in college, since everything you are assigned is a hands-on application of something you know, and all work you do has to be A-grade before being pushed to production. Therefore, if you’re confused about something it will take you way longer to figure it out on your own than if you just ask someone. It might feel like you don’t want to bother your coworkers at first, but you’ll end up being way more productive and useful to the team if you have a better understanding of what’s going on. Plus, internships are a unique opportunity to pick people’s brains about what is actually like to work in the industry. After asking everyone about what to focus on, whether I should get a Masters, resources I can use to learn more about different topics, and being given presentations about lots of things I was interested in such as Computer Graphics, UI/UX design, and Web Accessibility (special thanks to Lena for organizing all of these for us — they were very informative), I think I have a much better idea of what would make the most sense for me to do next.
4. Don’t stress, enjoy!
When this internship started I was so apprehensive that I wouldn’t be able to do the work that was expected of me or that I was coding too slowly. I mainly wanted to work in areas that I felt like I had enough experience in, so as to not take too long working on a ticket and thereby block others’ work. When I brought up trying to be as useful as possible as my excuse for procrastinating on my project, my team’s tech lead, Lars, gave me a piece of (his usually sarcastic, hopefully not this time) wisdom: “We’re not looking at interns as cheap labor; this is supposed to be a learning experience for you”. Internships are like a summer-long test drive for the fit between you and the company, and you should try to make the most of this opportunity, and learn about everything your team has to offer.
During my time here at CBRE Build I truly felt welcomed and supported to grow and achieve my goals. I would like to take this opportunity to thank my mentor(buddy) Kamilla for always answering my questions and giving me brief rundowns of the codebase, React, CSS, and anything else I needed help on, the SiteIQ team for being patient with me, carefully reviewing my PRs and giving me feedback, and the entire CBRE Build family for providing an unforgettable summer experience.