📜 ⬆️ ⬇️

As I went to the summer internship and stayed

My name is Renat Taziev. I am 22 years old and I am a developer.



(I am writing code on the Ural Championship on sports programming.)


In June, I collected things, took a train from Orenburg to Yekaterinburg and went on a summer internship. Before that, I had never completed internships, did not go to work in other cities, and did not come across many thousands of companies. Now I will tell you how I decided to do this, how the selection went, what I did all summer and what I remember interesting.


If you are a student and do not know if you need an internship - welcome under cat. A year ago, I did not know either. Therefore, my experience will be useful.


Decision


I studied at the “computer security” at OGU. For five years I have heard many times that you can start a career through an internship. And do not even doubt that this is the right way. It remained the simplest - to choose a company where you can grow, and not to stagnate.


The first time I heard about Contour in my first year. I participated in the Ural Championship on sports programming , and Contour was its sponsor. (I send greetings to all the IT companies that are unsure whether to invest in student activities.)


And in December 2016, I came across a webinar about a summer internship in Kontur. The girl from the screen promised compensation for moving and living to non-resident interns who will be selected. I decided to try.


Selected Spring


On January 25, an unusual news appeared in the VK-community of the Contour Educational programs. We looked for beta testers for test tasks for backend developers. I responded and received a test assignment a week earlier than other trainees.


In contrast to the simple task of 2016 , in 2017 it was necessary to design a statistics service for a multiplayer shooter. There were high speed requirements and limitations on the technologies used. They were enough for me to reread a bunch of forums and reference books before I started writing code.


The selection for an internship took place in two waves. The former had less time, but more freedom in choosing technologies. The second wave could work longer and saw the analysis of typical errors, but she had more restrictions on technology. I was in the second wave, and, as a student habit, I sent the decision a few hours before the deadline.


Four days later, the "letter of happiness" came:



School of young programmer


Kreshkurs began in early April. 22 participants and two teachers gathered at the country base near Yekaterinburg. For three days we were told about clean code, TDD, DI containers, and exception handling.



(Good and evil teacher KreshKursa.)


On the last day, we broke into teams of 4–5 people and tried team development. Together with the participants in the team was one mentor who did not touch the keyboard, but only advised.


The teams solved the same tasks and competed with each other. The task consisted of several tasks that opened every 90 minutes. Every 15 minutes we have released our module. The tasks were not so much to add new functions, but to create the right architecture.


Each team had a rating. It was evaluated by the number of tests, the amount of code covered by tests, the purity of code. If the code in the release branch was not compiled, the team lost points.



(I was in the team "Light", we came in the third finish).


The assignment consolidated all the knowledge and skills acquired in previous days, and introduced the teamwork "in combat conditions". KreshKurs was a breath of fresh air compared to his studies.


Interview-teleconference


A two-week silence after a crash course was interrupted by a sudden bell. To get to the next stage, I was offered to undergo an online interview. At the right time on the other side of Skype, I was waiting for three developers and HR. I was surprised when I saw a familiar person among the developers - ACM ICPC finalist Nikita Burlakova, who played for the IzhSTU team.


At first, HR asked about my experience, interests and plans for the future. The developers asked which last book I read. Then they gave the task: to write a method that determines whether a word is present in the file. I realized that I needed to show the skills of designing, writing clean code, and anticipating places for future expansion. After the task, we talked about algorithms, data structures, and design patterns.


Welcome to the Shire


I was told that I had an interview and became an intern. You already know that after that I took the train and went to Ekaterinburg. July 3, hit the largest development office.


This office is located on the edge of the city in an area called “Broad River” or, abbreviated as SR. Someday it will become the silicon valley of the Urals (but this is not accurate), but for now there are only Contour buildings, private cottages, a forest and a pond.



( 5 floors of the second building have already been built on the construction site. )


On the first day, all 90 trainees gathered in the conference room. Four hours we were introduced to each other, taught to survive in the office, talked about culture and development teams. Then there was lunch, a tour of the office and entertainment . At the end of the day we went to our teams.


My friend and I got into the team of Billing. We met a mentor, unpacked a new technique and launched the system to set up the working environment the next day.


Team


In the first week I met the team. It has about 50 people from three cities: Izhevsk, St. Petersburg and Yekaterinburg. Eight interns joined the team: four backend-developers (two in Yekaterinburg, one each in Izhevsk and St. Petersburg), two frontend-developers, a tester and an analyst.


For us, we prepared articles on the internal wiki and exercises for getting acquainted with the product that we will develop. It automates sales of contour products. Controversial work, partner companies and product users work in it.


They told about the goals of the team, the technologies used and engineering practices. These are pair programming (even with developers from other cities), mandatory code coverage with tests, continuous code review and regular scams. Explained that practices are needed to maintain quality, disseminate product knowledge, and synchronize subcommands.



(Scrum of one of the Billing subcommands. On the TV in Trello.)


I was a full member of the team and solved business problems. A lot of time with a mentor we got acquainted with the code base, refactored and did a review of the code. Almost every day for an hour looked through the code of another pair of developers. Here I made an amazing discovery: messages in exceptions and comments can and should be written in Russian. So they will be extremely clear, and according to the message in the logs it will be easier to understand where the error is. And I also felt how the development of ReSharper accelerates.


Other trainees


I communicated with interns in other teams at meetings once every two weeks and at Equator, a holiday celebration that marks the middle of the internship.



(All trainees at the Equator in the rope park.)


We talked about our tasks and shared our experience. There I learned that not all teams had trainee mission tasks. Some were involved in infrastructure projects that are used in many Contour teams. Some had research tasks: you had to read a lot of articles and make some prototypes for testing technologies.


Big challenge


In August, I made a great feature from start to finish.


Some Billing users work with a list of companies where you can call and make a sale. It is very large, it is generated and sorted automatically by nontrivial algorithms. There was a problem with the current implementation: after updating the list page, the sort order could change, and the user saw completely different list items.


We decided to make the code for working with lists into a separate microservice. I discussed with the tutor what features and interfaces the service should have. Mentor showed me how to design, and learned that the documentation can be not a pack of UML-diagrams and scripts, but sketches on stickers.


We added throttling requests to microservice. It was a new technology, so they presented it to the team. They told how trotting can be used in other microservices.


The team decided to first write the code, and then the tests. The reason is this: in enterprise development, it is often impossible to immediately select the correct architecture and implementation details. You can write code and then immediately cover it with tests. So you can save time, because you do not have to keep the tests up to date during refactoring. When it came time to write tests, the tutor showed me a xoposhiy report about the dangers of mocks and talked about the merits of integration testing.


It was also important for us to understand how we improved the lives of users. Therefore, we added a collection of metrics: for example, the number of queries to the lists and the time they were loaded. Microservice sends metrics to Graphite, and we look at the beautiful graphs in Grafana and analyze the behavior of the code.


Final Conference


By the end, all interns participate in the Final Conference: they tell them what tasks they solved and what they achieved. They came to listen not only trainees and their mentors, but also other developers.



It was the jury, it chose the three best reports. The intern for the best PR project was awarded to an intern who talked about how to use Houston, an internal system for deploying and hosting .NET applications, similar to Kubernetes. The award for the “best story about rocket science in your own words” was received by a dataseenist intern who, using machine learning, extracted names from news texts and connected them with well-known companies. The trainee received the award for “real performance improvement on the battlefield”, who changed one line of code and sped up the application 30 times.


Internship Results


I felt not an intern, but a full-fledged developer who benefits the team and the company on an equal basis with everyone. There was a friendly atmosphere, and no one doubted our abilities.


In two months I worked on 8 tasks, made 180 commits, posted a release twice. I read 35 technical articles, two books, I watched more than 30 hours of video from conferences. And in the middle of August, even before the final conference, I talked to the mentor and decided that I remained in the Billing team.


Now you know what my internship was. If you have questions - ask in the comments :)


')

Source: https://habr.com/ru/post/339812/


All Articles