Software Dev Internship Experience/Week 1

Software Dev Internship Experience/Week 1

Intro
This past week I started an internship as a developer in a SaaS company. Before this I was studying initially on my own for about 6 months, and then with Mission Ready (a full-stack dev course provider) for another 6 months.

I will be taking part in this internship for 10 weeks and am planning to write and share about what I learn throughout it.

Office environment
The main task for the first week was getting to know the company, their product, the people and how they operate. My first few days went really well. I got to talk to most of the team and everyone was very welcoming. It was a really easy transition into their office. I also had a few other students who were doing an internship with me and we were able to support each other. I found out a lot about their operations - they are a medium sized company with a dev team comprised of about 20 people, along with designers, marketers, devops, etc.

Codebase and architecture
After getting familiar with the company and comfortable with the team, we got to know more about the codebase. As someone who has only worked on small projects on my own or other students, the codebase of an actual product going out to hundreds of thousands of users was pretty intimidating. The backend language they used was Golang, with react on the frontend. The sheer size and complexity was a lot to try and understand. But with a bit of guidance, I remembered that all projects are broken down into small pieces which connect to form the whole.

Something I'm unfamiliar with is software architecture. The codebase is based on an architecture which visually shows how each component of the application is connected to one another. I found myself looking back and forth between the architecture diagram and parts of the codebase in an attempt to connect the dots and understand what part is doing. After a few hours of this, it was beginning to make sense to me, and thankfully, the other developers had provided good documentation which made it easier (I really understand why good comments and documentation is so important now).

Languages and tools
The first language I learned and the one I know best is JavaScript. I have dabbled in python and C and my language of choice would probably be TypeScript. The developers here use Golang on the backend, and because I prefer backend work I need to learn Golang. When I first started learning programming I saw learning a new language as a huge, time consuming challenge, but the more I have dabbled, I realized there are a lot of similarities between most languages and it's pretty easy to get started with a language once you know another one well.

The process of learning golang has come with some challenges, a few things I've had to get used to are pointers, slices, structs, packages. And there is still a bit to learn. But I am pretty confident I will get there. I'm learning that there's no need to be intimidated by new languages, as a programmer, it's basically a requirement that you can pickup a new language as needed. There are also a few tools such as GraphQL and RabbitMQ that I need to work with, and I'm pretty excited to implement them and add them to my toolbox.

Agile
The company is strong on using agile. Daily standups, sprints, scrum masters, product owners, etc. I did implement agile methodologies during my course so I was quite comfortable with it, but it's also really easy to understand once you strip away the terminology. In addition, it's really easy to see how it makes sense in a software dev company.

Tasks
The main tasks I got for this week was to integrate into the team and get to know the product and codebase. there was also another tasks given to me and the other dev intern regarding automation some offboarding tasks. This hasn't gotten much far past the planning stage but it definitely got me to think about solutions and how to use API's to make processes easier.

Reflection and looking ahead
I felt really good about this first week. I got to know a lot of the team and gained a decent understanding of what the company does. It was really cool to see how a large application is built and maintained. I do feel like I can look at projects slightly differently now, and I'm not so intimidated by large codebases.
Next week I will be given some tasks to work on directly related to the product with the developer team and I'm really excited to get started. I'll continue to study golang and learn about architectures.

Did you find this article valuable?

Support Melvins blog by becoming a sponsor. Any amount is appreciated!