Tips for Students: How to Start Your Programming Career
Sebastian Aigner, a passionate education-focused developer advocate at JetBrains, talks about working with students as well as his path from university to JetBrains, and he offers inspiration for those who are ready for frustration.
To help you study and improve your programming skills JetBrains offers:
What does it mean to be an education-focused developer advocate at JetBrains?
I am part of the developer advocacy team, where my focus is on our cooperation with universities, schools, and other teaching initiatives. I try to bring JetBrains into the classroom by highlighting the positive features and benefits of our tools and our programming language Kotlin, to educators. We also sponsor and organize hackathons at universities, where students can challenge themselves to create innovative solutions and get to see first-hand the benefits of using Kotlin and our tools.
All my activities really focus on making people better at what they like to do. I always start with the core questions – how can we make it easier for people to learn to program, and what can we do to make it more fun to use our tools and Kotlin?
What do you like the most about your job?
Working on the booth at conferences, hackathons, and career fairs. When we actually talk to users, we can really tell that our work is making an impact. It just gives me a warm and happy feeling when people come to us and say: “Hey! Your tool solved the problem for us”, or “Hey, it was really easy to get started”, or “Hey, you essentially saved my career as a developer”, or “Hey, without you, I couldn’t have finished my homework on time.”
Has the opposite ever happened, when a person came to you with an idea that you later implemented at work?
One of the main tasks in my daily work is addressing one of the major pieces of feedback that we’ve received about Kotlin JS – that it’s hard to get started because we lack tutorials and documentation.
At university events like hackaTUM, a student hackathon, we’ve had students come to us and say: “I joined this event because I thought JetBrains was going to give me a challenge.” So the next year, we showed up with a challenge, and received more student submissions than we could have ever hoped for. We don’t just offer workshops and educate people about our tools. Now we challenge people to create innovative solutions that improve their lives as students and developers.
How are JetBrains tools useful for students?
As someone who was once a student (laughs), I personally believe they are the best tools for getting started. When you are a learner, it’s really important to get feedback on what you are doing. This can come from your professors or fellow students, but it adds a whole new dimension to your learning if it also comes from your IDE.
A smart development environment highlights when you are doing something wrong or when you can do something better. This essentially gives you opportunities to improve and says: "Hey, maybe you don’t need to use three nested loops here. Maybe we can somehow combine this in a more readable way". This is how a smart IDE really helps you as a learner, because it starts transforming the way you think about complex topics and how you can improve. When you write bad code, or let’s say less than optimal code, your IDE can nudge you in the right direction. And at some point, after this happens a few times, you will find yourself writing better code directly.
With our Educational Products we are putting a lot of effort into helping learners get started smoothly by integrating with platforms like Coursera and JetBrains Academy. With our tools, learners can get direct access to the exercises from a programming course and work on them without all the overhead of having to copy and download files.
Do you have any advice for students who want to work at JetBrains?
Bring enthusiasm for the things you want to do. Bring self-motivation, which is one of the key points that you need to have when working at JetBrains. Be innovative and unafraid to challenge and change things. You need to be able to accept that you don’t know everything. You need to be willing to question what you know and kind of constantly have the mindset to want to keep learning and growing as an individual. I think that encapsulates what we are all about at JetBrains: building new and innovative things of the highest quality.
How to combine work and studies and not to burn out?
It’s no secret that it’s extremely hard to treat your studies as a full-time job, meaning that you devote 40 hours, maybe even 50 hours, every week to them while also working 15 to 20 hours on a part-time job. There is only so much time in a day, and at some point, you run out. Sadly, there is no magic cure for this. My best advice is to always structure your work and focus on individual tasks without constantly switching contexts.
What are the typical mistakes made by students who apply for an internship at JetBrains?
Our applicants usually do a good job of highlighting their strengths via their CVs. However, some of them seem to struggle with relating their abilities to the position they apply for.
While good grades and experience are great first steps, they should not forget to make it clear why their unique set of skills make them a great fit for the position they are applying for. The cover letter is a great place to do this, and can help make it easier for us to match applicants with the great opportunities we have available at JetBrains.
What advice can you give to the interns who get accepted?
Focus on the work that you do. Your main objective should be to listen to your team lead, learn as much as possible, accept the fact that you are surrounded by people who might know more than you, try to absorb as much knowledge as possible and put it all into whatever project you are working on. That will put you on the path to gain the biggest success out of the experience. And, of course, try to make meaningful connections with the people you are working with.
How did you realize you wanted to be a programmer?
I started when I was probably 11. I guess I was influenced by movies like ‘War Games’ that had this Hollywood depiction of hackers and people who were really good with computers. My dad introduced me to a dialect of Basic called Free-Basic. He is not a programmer, but he was always super-supportive of everything I did. At some point, I got exposed to development with PHP via a good friend and then Java, and later on Swift. When I discovered Kotlin, I pretty much instantly fell in love with its syntax and approaches, so I heavily focused my efforts on it. After seeing that the language was made by JetBrains, I just knew this was going to be the programming language I would be writing in for a long time.
What was the first tool from JetBrains that you used?
It was IntelliJ IDEA, back in my first semester at the Technical University of Munich. I installed it, (enabled the dark theme) and I saw all the warnings in the code that I had written beforehand. And I pretty much instantly fell in love.
How do you learn new stuff?
It’s a combination of trial and error and full immersion. Trial and error can literally mean trying to build a new thing using new technology, throwing it away and rewriting it, analyzing whether I have programmed myself into a corner that I cannot get out of, and revisiting architecture and design decisions until I’m happy with what I’ve actually built.
Full immersion means that I try to use many different channels to gather knowledge about a technology. I might seek out a podcast, find an online course, or watch a conference talk before going to bed. I might not immediately grasp everything from each type of medium, but I can get a feeling for the technology.
What character traits should a person have to be a programmer?
A huge tolerance for frustration. That’s the number one thing. It’s good to be mathematically inclined or to have a strong sense of logic. But contrary to popular belief, machines don’t always do what you tell them, or at least to the end-user it often doesn’t look like they do what you tell them.
Try different things. Don’t be afraid. You cannot expect things to work on the first try. You need to be able to sink multiple hours into a single problem or into figuring out why something doesn’t work. In my eyes, that’s probably the most important part of being a programmer.