10 things I learnt from my first SWE internship in a start-up

Damian Stone
5 min readApr 1, 2023

--

Photo from google

This last summer I did my first SWE internship in a fintech startup from London. During the whole process, I learned a lot of things both in technologies, programming but more importantly, working in a start-up with a small team allowed me to get to know all the areas of a start-up very closely.

During this internship, the people I had the most relationship with were the CEO, the CMO, and the CTO who was in charge of my internship.
A lot of conversations and a lot of code during those 3 months, so I want to share some of the things I learned during this summer.

1. Focus on engineering/logic skills rather than frameworks skills

As a self-taught programmer, it’s easy to get caught up in the excitement of learning new frameworks and technologies like Node, Django, and React Native. But the truth is, working with frameworks can sometimes be too easy, and it’s easy to get comfortable doing things by memory without really understanding what’s going on behind the scenes. This can lead to big problems and leave you stuck for days on a problem that should be simple to solve.

During my internship, I realized that it’s crucial to focus on developing engineering and logic skills, rather than just relying on frameworks. Understanding how machines work, servers, the cloud, and algorithms and data structures are all key skills that will allow you to tackle any problem that comes your way.

2. Programming is about learning a concept and quickly putting it into practice in a completely new project (simple to-do lists don’t count)

As an autodidact, I love to work on small programming projects in my spare time. However, I used to fall into the trap of pseudo-learning. I would complete courses on platforms like Udemy or Coursera and think that I had learned something, but when faced with a completely new problem, I found myself unable to apply what I had learned.

It’s easy to feel like you’re making progress when you’re taking online courses or following tutorials, but as a programmer, I’ve found that I truly deepen my understanding when I apply what I’ve learned to something completely new.

When you learn a new concept or complete a course, the real test of your knowledge is when you sit down at your computer, imagine a program or application, and build it from start to finish. That’s when you truly know how to do something.

3. Learn how to communicate what you are doing

Being able to effectively convey what you’re developing to non-technical team members can greatly aid in understanding your progress. I found this to be a challenge during my internship because as programmers, we often understand what we are doing but explaining it to someone who may not understand frameworks or programming can be difficult.

I believe that being able to communicate well about what you’re programming is crucial for teamwork. It can help you get better feedback, generate new ideas on how to approach things, and ensure that everyone is on the same page. Therefore, it is essential to not only develop your programming skills but also work on your communication skills.

4. Ask, ask, ask

There are no dumb questions, only dumb ones who don’t ask.

5. Learn to use debuggers effectively

Less prints() and more debuggers. In Visual Studio Code, this is very easy to do using a launch.json file. This saves a LOOOT of debugging time.

6. Read the source code of frameworks and libraries to understand how they work behind the scenes

During my internship, I spent a lot of time reading the Django REST source code to understand how it worked and to be able to overwrite some things.

Getting used to this was eye-opening, and now I always use command / ctrl + click to see the library properties and source code of frameworks, which makes it easier to find bugs and program in general

7. Understanding the business and purpose of the software is crucial

I learnt that knowing the context in which your software operates and the problems it aims to solve can help you make better decisions and propose more effective solutions.

I think this is particularly relevant in startups, where resources are often limited, and you are expected to work autonomously. Being able to understand the big picture and contribute to the company’s goals can make a significant difference in the success of the software and the organization as a whole

8. Testing is boring

There’s not much to say about this, but I definitely learned that developing while testing can be very tedious.

9. Don’t be afraid to delete code.

Sometimes we create solutions that are flawed from the beginning, and trying to fix or force them to work can be more time-consuming and complicated. Starting fresh by deleting the code and doing things the right way from the beginning sometimes can be the best approach

10. There’s no such thing as a final product release

Working in a startup gave me a unique perspective on the product development process, and one of the most valuable lessons I learned was that it’s better to launch a product gradually with a group of test users, rather than waiting until it’s “perfect” for a big launch.

By releasing your product incrementally, you can get early feedback from users who can test new features and provide valuable insights that will help you develop the product in a way that meets their needs. This approach also allows your product to gain visibility over time and generate buzz, which can help you build a community of dedicated users.

Of course, there’s no one-size-fits-all approach to product development, and different startups may choose to launch their products in different ways. But in this experience, I learnt that releasing your product gradually can be a smart choice

I hope you enjoyed this blog. Every day, I learn more about programming, and I hope that this can also help you.

Any comments or feedback are welcome! 👋

How I got my first internship?

Accounts:

--

--

Damian Stone

From Chile, Software Engineer, EECS student @ University of Bristol 🇬🇧