I got very lucky with my placement at Carvago. It is a great first internship experience. My tasks are equally challenging and rewarding, and everyone in the office has been super kind. That being said, this has been a safe environment to make mistakes and learn as I go.
The biggest soft skill I have learned is communication. I know that as an intern, my concerns are often not the most important thing going on in the office. I have had to learn when to ask questions and when to figure stuff out on my own. If something is not working with my code and it is a problem that can be solved by looking on the Internet, that is the route I typically go. However, there have been times when I have gotten so lost in my project that I do not know what to do. For example, I am currently working on creating a Google Sheets-like application on Streamlit. The application is also supposed to save new edits to a temporary table where an admin can select which changes to push before these changes are written into the original table. I was able to create an editable table that has a filter system and a dual saving system, but I kept running into errors when it came to adding and deleting rows. I was originally comparing the original and edited data frames using their indices to display the changes in individual cells to the users. However, when a row was added or deleted, all indices changed and every single cell was being displayed as edited. I spent a whole week working on my own trying to fix this. Then, at the end of last week I had a meeting with my supervisor. In this hour-long meeting we discussed the logic of the application and he suggested that we add unique, fixed ID numbers to each column. This one change exponentially improved my work. Within one day I was able to figure out how to add, delete, and edit rows and a convenient way to display them to users. From this experience, I have learned that I need to ask for help. I was struggling with the logic of the application for a week because I did not want to bother my supervisor, even though if we had this one hour meeting in the beginning of the week, I would have saved him more time in the long run. I plan on not making this mistake again by knowing when it’s time to speak up and ask for assistance.
Additionally, this job has shown me what coding is like in the workforce. I have always known that coding is a lot of trial and error. Sometimes, it is hard to tell just how long a project will take you. You can spend a day on one problem and feel you have gotten nowhere, and you could also solve a complex problem in half an hour. With class assignments, I always know to get a head start on projects to account for this. However, in the workforce, there isn’t really a “head start.” When you get assigned something, you have to start it then, and deadlines are not very flexible. My coworkers have expressed their frustration with this saying that other departments don’t always understand this. But, when a project is assigned by the CEO and is due in a week, you will do everything you can to get it done and functioning as well as it can.
As for hard skills, I have had a lot of time to work on my Python skills. Within the past year, I have mainly used Python for data analysis. It has been nice using Python for software development with this internship, and I have been really enjoying Streamlit. This is my first time using the software and I am obsessed. It is extremely easy to create user interfaces for applications. It takes one line of code to add components such as buttons, sidebars, or titles to the application. Since the application I am making is only going to be used within the company, I am not super focused on the aesthetics of the app, but I am always thinking about usability. It has been very fun learning how to use this library and I hope I get to work with it more in the future. This has also been my first time using a database system. Carvago uses Snowflake AWS so I have also had to learn how to navigate that system.
This job has also been a good refresher of general computer science logic. Since switching from Computer Science to Information Science, I haven’t had to break down logistic problems in awhile. However, with this internship, I have had to think of each use case for my application and plan a solution for each one. For example, we are currently trying to implement integrity checks when new data is inputted to ensure the inputted data makes sense. We are currently trying to solve the question of where and how to do this.
- We want to do this before changes are pushed to the temporary table.
- However, we want to keep track of the attempted edits so when there’s an error, users can fix the error and then push their changes to the temporary table.
- Should we create another temporary table to save these changes?
- We’ll clear out this temporary temporary table every time changes pass integrity checks and are pushed to the temporary table.
- What happens if it never passes integrity checks? When do we clear the table? What happens when there are multiple users trying to edit at the same time?
These are just some of the problems we are currently trying to work out. It’s been fun working through the logic of these problems and I’ve learned a lot trying to implement them into my code.
I am now halfway through my internship and I can really say that I have learned a lot from this experience. I have had a lot of time to experiment with Streamlit and brush up on my Python skills. I’ve also gotten the opportunity to learn what role an intern plans in a large corporation. All of these skills will be invaluable to me as I continue my professional career in the tech industry.
Pictured above: my favorite spot in Prague (a lake about 40 minutes west of the apartments)

