Flutter CTO Report 2024
Get insights about Flutter directly from CTOs, CIOs, Tech Leads, and Engineering Managers!

Internship at LeanCode: Two Months of Real-Life Coding Experience

Katarzyna Szulc
Marketing Manager at LeanCode

Rating: 5.00 / 5 Based on 5 reviews

Mar 8th, 2022 • 10 min
Free product design tips
Join our Newsletter for Expert Flutter Tips & Product Design Insights from our seasoned team!
By submitting your email you agree to receive the content requested and to LeanCode's Privacy Policy.
or follow us

As a future developer, you need to gain some real-life coding experience sooner or later. The good idea is to start looking for opportunities where you can learn more than what you are taught at the university. Before applying for an internship, research the company and try to find out what you could do there as an intern.

Fixing bugs is a real-life experience but will not make you get much closer to learning what actual development projects look like and, what’s more important, how your future job may look daily. Having such experience can be of huge value later when applying for your first job as a Junior Developer. 

One of such opportunity is joining a two-month intense internship program at LeanCode. This article will help you find out what our past interns worked on, what was included in the program, and what they think about joining LeanCode’s Internship after finishing it. Most of the article is based on their opinions, so you get information firsthand.

Or apply right away!

Gaining experience by working on an actual commercial project

At LeanCode, we know how important the experience of working on projects that have seen the light of day is. Most of our developers say that they had a completely different approach when working on academic projects finished, only to get a grade.

The responsibility for the task performed is much more significant during actual work, and it definitely impacts your motivation. You also gain experience writing code that is understandable and manageable, working in a team, solving problems, and communicating with a client or Product Owner with specific expectations and limited project time.

Mateusz: For me, it was a significant difference that I was working on an actual project and with the client. I think I’ve learned a lot from it. I remember meetings with the Product Owner from the client's side, who wanted to implement some new features, and then I thought, "Ok. It probably won't be time-consuming and rather easy to implement, so I guess we estimate it at five story points." Then Kuba (Leader of the Backend guild) said it would take us about two weeks and that the task is rather challenging to implement. So my assumptions, as a beginner, were wrong. 

A good lesson was also learning the right approach to managing clients' expectations when tasks not previously included in the project were commissioned. It was handy to me in other projects later because I got much better at estimating how much time a given task would take me. Thanks to it, the client was also pleased because there was no such situation where I said that something would take two days and, in the end, took a week.

Jan: In the beginning, I did not realize that it was so important to work on an actual project, even during an internship. However, juniors from other companies told me later they only were doing minor tasks and fixing the little things after seniors during their internship. And at LeanCode, we basically worked on every part of the project and went through every stage of it. Of course, with the help of senior mentors. And it was great that we did everything.

Piotr: I appreciate we weren't assigned to a project that was created before, but we started it from scratch. It was a great advantage because you could get to know the entire process of creating a mobile application - we didn't have to manage the existing code and fix bugs. We also had contact with the client from the beginning, and we participated in all the calls related to planning the sprint and presenting our progress. The meetings were not much different from those I have now while working in the company.

Ignacy: I liked it was an actual project that was delivered to the client. I felt I was doing something that would actually be used. Not some support stuff, but getting into regular work right away. The number of things I had to learn at the beginning was definitely greater than during my studies. I have the impression that I learned more during the two months of an internship than during six months of education at the university.

Łukasz (Mentor, Backend Developer): I need to say that I did many academic projects, and my involvement then was much lower than during the work with the client. It was associated with the lack of reflection and not wondering if any additional problems should be solved before implementation. Maybe they were, but I didn't bother about that because the project was only for a grade. And when working on an actual project, the client may tell you, "I’d like to log in to the application differently because it’s more convenient," and you have to implement such a change. You can't ignore it because it was easier for you to solve it differently as a developer. It’s a great value that can be learned from this internship.

Filling the knowledge gaps in the field of frontend, backend and mobile development

In addition to coding, our internship program is also based on thorough education in the field of frontend, backend, and mobile development. Lectures for 2 months take a total of 40 hours. You have a chance to refresh your knowledge on the basics necessary for every project but also learn about complicated aspects that refer strictly to the project you are currently working on. 

To just mention a few things you can learn about: 

  • software architecture, 
  • communication with databases, 
  • monitoring and care for the performance
  • functionality of the application, 
  • developing applications in the selected technology,
  • integration with cloud solutions and cloud services.

Or you can also take part in our inspiring  “lightning talks” and get familiar with Rust language basics.

Jan: These lectures were organized especially for the six of us (interns) and concerned topics from the frontend, backend, and mobile. It was useful because by participating in backend lectures, I could better understand my Backend colleagues as a Mobile Developer, and then I could translate it into cooperation. It was easier to talk about tasks later. I also learned a lot about the company's architecture. There was also a lot of general knowledge, not necessarily needed in a given project, but helpful because I could consolidate my understanding of what I had learned before, e.g., UX design.

Aliaksei: Each lecture allowed us to understand what is actually being done in the project much more broadly and explained the technologies we used, i.e., React, .NET and Flutter. I also learned the general practices of good programming, which is very important, especially in commercial projects, and I was not taught that at the university.

Ignacy: The lectures were on topics from each of the 3 specializations, not only the one you chose. I learned a lot about the backend, and I am a Frontend Developer. And it was very useful that there was such a general expansion of topics at the beginning. Lectures on the structure of the project and how the Flutter technology works helped me later on when I had to fix some elements on mobile as Frontend Dev.

Piotr: Before starting the project, the mentor of the backend team explained to us what is it about and what is the structure of the system in which we are going to operate. We had our own tasks, and when there was a problem with the implementation, we could ask him without any hesitation. At LeanCode, everyone is focused on teaching you independence at work. But when we encountered a problem, they made it easier for us.

Feeling convinced? Apply to join our Internship Program. If not, keep reading :)

Learning new skills under the guidance and with the help of mentors

During the internship, we want to teach you as much as possible, and it's not possible without the help of more senior developers at LeanCode. They introduce you to the project and technologies necessary for the project's development and take care of your skills growth. Our goal is to help you become a fully valuable team member but without overwhelming pressure that sometimes is put on the shoulders of newbies.

Our mentors are the first line of support. However, it doesn't mean they don't pay attention to your code quality and have low expectations. Also, at the end of the internship, you receive feedback on how you developed as a developer and what else you can improve.

Łukasz (Mentor, Backend Developer): As a mentor, you must introduce interns to what they are doing. There are many design patterns and planning tools for a backend guild, and the entry-level is high. I explained to them why the code is as it was for 2-3 days. I also prepared a blank project so that they could start working. I guided through the intricacies of the code and introduced the basic assumptions about modeling. It’s very important how you model a given domain in the backend. I also introduced them to programming aspects that were later discussed in more detail in lectures and necessary to start working.

Jan: What convinced me to join the LeanCode Internship was the fact that there will be mentors at every stage who support you, and after I joined, there was really no such situation that you are thrown into the project and have to deal with it alone. Marcin (Mentor, Mobile Developer) helped us a lot. When we had a blockade, he would come up immediately as we asked him, significantly speeding up the work. In the beginning, there are a lot of stupid mistakes or typos you make - I had it in Flutter. They’re easy to fix with one line, but you don't know that at that point. Only after some time you can see these errors.

Mateusz: Robert (Mentor, Mobile Developer) was very detailed when checking my code. It sometimes happened that checking my code took him even half a week, and I received sixty comments to correct something - insert a comma and write a specific code fragment differently. Thanks to this, I learned how to write the code correctly. We also had a dedicated channel on Slack, where we were writing about everything that referred to our project's development on each side - frontend, backend, and mobile.

Aleksander: Collaboration with a mentor has changed over time. In the beginning, the mentor helped us more, spending a few hours with us in the same room each day and explaining how to write the specific elements correctly. We also asked for help more often. But thanks to this, we raised our experience level, and later we had fewer questions. However, the cooperation has never been based on the principle that he only checked our code, and that's it. We could discuss various things together with him regarding, for example, logic.

Paweł: The mentors really helped us. It turned out that working on an actual project looks completely different from doing academic projects. At LeanCode, we have our own backend helper libraries, and there is a threshold to enter it, and without a mentor, it would be difficult to use it. At the end of the internship, we also had a final meeting with mentors and summarized what everyone had learned. We got feedback, and I think it's important to know which way of skills development you should follow and what to improve.

Being a part of the development team and sharing responsibilities

Since the first day, we treat you as a part of LeanCode. It means that besides getting to know other interns, you may get to know other developers and specialists in the company. We usually organize small integration events to make it easier for you. Later with the same people, you might be communicating daily.

Working on an actual project with the team will help you learn how to organize work, how to estimate the needed time to deliver a specific feature, and how to talk through problems that you encounter. You also learn to take responsibility for your work because the results will be pushed to production.

Aleksander: For me, it was a chance to work with a development team for the first time and with the client. Before this internship, I was doing a small project with one person, and here, including all team members, it was 11 people: 6 interns plus Project Owner, QA, and 3 mentors. I saw technically what an organization of work in the project looks like, and now I have something to relate to. It is a valuable experience. I realized that you have to manage what tasks are included in the project, share them, and sometimes work out a problem together.

Paweł: The most important thing is to gain experience working on an actual project, where you are aware that the final product will be delivered to the client and users will later use it. You have to be more responsible. It is also essential to work in a group, in a large team, and full-time. Our team had constant communication, which was a valuable experience that you can't get by doing your private projects.

Aliaksei: Joining the LeanCode internship gave me a different perspective on programming as a whole. I saw a completely different level of approach to the project and new solutions. I wouldn't have had a chance to learn that if I had tried to educate myself. It was a massive dose of information. The mentors who were part of the team were very experienced and shared their knowledge with us. I am glad that I could see how clients talk with the Product Owner and developers and how tasks are planned in a team. Communication was non-stop, and if someone did not understand something, it was quickly explained in conversations like in a real job.

Łukasz (Mentor, Backend Developer): These are interns, in fact, only by name because responsibility in the team is the same as every developer has in LeanCode. You are responsible for the same things that you will do later in real work. It's not that we are creating some strange existence just for the "art of coding" to see if you will ever become a good employee. In fact, you immediately get a project with an initial implementation date and need to deliver the details. Such an internship teaches you how to work with the actual client and with a "living" project - which must be stable and meet the requirements.

What else can we tell you about the Internship at LeanCode?

In 2022 we organized our 7th edition of the LeanCode Internship. Most of our interns took advantage of a chance to stay with us and work together later on. We are also passionate about technologies and try to show you that you can experiment and still learn new things during your internship and later while working as a full-time developer. Also, you get paid for your work during the training, which is an additional asset.

Our internship program is usually limited to 6 people, so don’t wait too long to apply if you are interested in joining. You may apply only via our LeanCode Internship website.

Jan: There are few places where you can learn Flutter entirely from scratch. I quit my job and resigned from a pay raise in another company as a Junior Developer to take part in this internship and learn this technology. I think it's a huge plus that I can get knowledge about Flutter technology from a top Flutter company. If I hadn't tried it, in my opinion, I would have had a much lower market value today as a developer. Besides that, LeanCode organizes Flutter events and lectures at the Warsaw University of Technology, and many people from the company are active in the Flutter community. For me, it’s a privilege to work in such a place.

Tomasz (Mentor, Frontend Developer): At LeanCode, everyone is thrown into the deep end and gains a very mature experience. In this case, an internship is not training. Interns can see what work and communication look like. It's obvious that at the beginning it is more of a listening experience because mentors conduct meetings. Still, after some time, we try to transfer responsibility to the interns so that they can learn in practice how to ask about graphics, solutions, or any other aspects by themselves.

Łukasz (Mentor, Backend Developer): When it comes to our internship program, they not only teach you technical smartness but also work with an IT project, according to the SCRUM methodology. We use it in LeanCode, and SCRUM partially imposes the way we work. It also encourages daily and direct communication. I wanted the interns to ask themselves important questions about the project, e.g., how someone will use our API. In the case of UI, how the user will use the application. The next step was to learn to communicate this to the rest of the team.

Kamil (Mentor, Frontend Developer): After the internship, people quickly adapt to each new project. They have a chance to get to know the entire development process setup, which helps them seamlessly move from working on one project team to the next one later. It is due to the fact that during the internship, they learn a lot, and their code becomes better. It is more understandable and has fewer errors. Also, what distinguishes LeanCode is that as an IT employee here, you can change your specialization later on if you feel that what you do is not your thing. Nobody is assigned permanently; the most important thing is constant development.

Take your chance to become a skilled developer and gain experience by working on a commercial project. Apply via the LeanCode Internship website to take part in a 2-month internship program.

Free product design tips
Join our Newsletter for Expert Flutter Tips & Product Design Insights from our seasoned team!
By submitting your email you agree to receive the content requested and to LeanCode's Privacy Policy.
or follow us
Rate this article
5.00 / 5 Based on 5 reviews

Read more

How to Make Your CV Stand Out as a Junior Developer?

As a Junior Developer, you may wonder how to make your CV stand out while not having that much experience? We prepared for you an article with tips on how to improve your CV, so as a result, you have a higher chance of receiving an invitation for an interview.
Junior Developer who is preparing a CV

Summary of the State of Flutter Framework for 2019

The journey we took almost a year ago has exceeded our expectations, with more than a dozen professional apps developed in Flutter during 2019. We have also found one of the biggest Meetups in Europe — Flutter Warsaw, with the regular monthly talks given by the most respected community leaders.
Image tile

What a Flutter! Or What Makes It So Performant

Why should you pay attention to Flutter? What makes Flutter different? Flutter uses Dart object-oriented programming language, which is the fastest-growing language, up by 532% between 2018 and 2019. GitHub states that Flutter is top 3 in the number of project contributions. Want to find out more? Watch the video.
Image tile