Meet Milan Vucic
, one of the "Java Fundamentals"
course mentors at CodeGym University, author and tutor of the "Android app development for beginners"
course. He’s got eight years of experience working as an Android developer and a few years of Java & Android mentoring.
In this text, he talks about his professional background and mentorship, uncovers the biggest mistakes which newbies can make, and advises CodeGym users on becoming developers.
Why did you choose to become a developer?
I am from Serbia. I moved a lot when I was a kid, so I changed five elementary schools in eight years. That has made me quite outspoken and very receptive to new professors.
Once I had a great math professor, so I started to compete in math and won third prize in the Serbian national competition. Later I went to a Mathematical Grammar school, which trained some of the best students to participate in global competitions on math, physics, and programming.
I liked those academic disciplines a lot. So, back in high school, I learned a lot of languages like Pascal, C, C#, and a little bit of SQL for databases. Also, I've been a gamer my whole life, and I saw great potential in making games.
What was your learning pathway to becoming a developer?
I first got into some serious programming in college. I enrolled in one of the best colleges for engineering in Belgrade and have been studying there for two years. At that time, I got relatively high grades in each subject from the training program.
And then, my friend and I decided to make an app and apply for the internship (it was in 2015). Luckily, our “home project” helped us get the trainee positions, and we started working in a company.
The primary language for the projects there was PHP, which I'd never tried before. But the management gave us a couple of weeks to learn PHP frameworks, which I did by watching YouTube tutorials and googling. I was also writing code in PHP, just to get acquainted with the language. Eventually, we got into the team and stayed at that company for a year.
And then, I got another job, where I did some Python programming and later switched to Android.
The first few years were overwhelming and challenging, full of work and new knowledge. But gradually, my confidence grew. At some point, I thought I had finally become a real programmer.
What companies have you worked for, and which projects did you participate in?
My first company was great: I loved the culture there. I've been a member of their research and development team. We were working on an app to help the students organize their college studies, where you would have some friendly UI to see which rooms are empty, which are full, and the schedule of lectures.
The second company where I worked was one the best in the region for programming. I had a lot of fun there: we were creating different kinds of apps. As for me, most of the time, I was working on a medical app.
Then, for the last three and a half years, I've been working at a company that offers a poker-playing app for users. And there, I learned just a bunch more Android stuff.
From your perspective, what is the future of Java in Android development (and in general)?
I've written code mainly in Java, which is my favorite language. Out of all the languages I've used, Java is the most beautiful and easiest to learn because it's so friendly.
Java is already used in many projects; of course, it has a future. You can create almost anything in Java: from Android to web apps, from backend to frontend to desktop. But even if we imagine that Java has no future and all projects written in Java have stopped (which is impossible), it's still an excellent language for getting familiar with programming.
Knowing Java, you can learn Python or C# relatively quickly. You won't like programming if you first take a complex (or ugly) language to learn. If I had learned PHP or C++ from the beginning, I might not have liked programming at all: they're not easy to master.
At what point did you decide to become a mentor?
As I’ve mentioned earlier, many of my professors were great at their work. I give credit to their inspiring teaching, which helped me become proficient in their disciplines and motivated me to gain even more knowledge. So naturally, when I became a developer with considerable experience, I just felt I needed to transfer the knowledge to somebody because I knew how to do it right.
This is why I began to work at Codementor. I’ve had at least ten regular students and a bunch of one-time (or so) sessions, and I guided them from not knowing how to turn on a computer to understanding how to code a simple Java or Android app.
I’ve also had live debugging sessions: there is an option for Codementor users to book an appointment with a mentor and get help with debugging. During these sessions, I fixed the bugs and explained what exactly (and for which purpose) I was doing at certain points.
This experience vastly influenced my teaching style. I want my students in the Android course
to be highly involved in the explanation of any topic. I guide them through the whole thinking process while they are writing code and working on the solutions. You need to embrace a meaningful approach to learning because it’s the only way to master something properly.
How did you come up with the idea to launch your own Android course?
It simply struck me. I knew CodeGym didn't have an Android course, so I decided to propose that I can make it one for them and they accepted.
I started preparing materials, and my brain was constantly working in different dimensions. Sometimes I would walk down the street and take my phone to write something down for the course. At that time, I had so many ideas: what if we write this app, and that app, cover this area of knowledge or this Android concept?.. It was fun making the course contents and coding the apps. Creating the Android course was a fantastic experience for me, and I have more improvements on my mind.
During our live sessions, I tell a lot about my professional experience, especially from the first 3-4 years of working. I think it will open up many doors for them. I’m not only teaching them Java or Android, but also covering how things work in a company and how to design real-life programs.
What are the common mistakes for students while learning to program?
The biggest mistake is stopping learning and thinking that programming is way above your head. I still make bugs after seven years of working experience. Some of them on purpose – to show students how to debug. Some of the bugs just happen during live coding, and students can see how I fix them for the first time myself.
The only thing that's different for me compared to the learner is that I will most likely find and fix the bug much faster.
What are the key differences between students with prior programming knowledge/experience and those who are newbies to coding?
If you've been swimming and you know somebody who isn't doing much physical activity, who is more likely to do better any sort of physical competition? You know the answer.
The same goes for programming: any prior experience with computers/technologies will help you. If you are a computer gamer, it will be easier for you to learn programming than for someone who has never used a computer. A tech rookie will have the most significant way to go. Do you know English well? Instant plus, as many materials are available to you, most of which even free of charge (Youtube, StackOverflow, etc).
Who's going to learn faster? Of course, the one who's already spent thousands of hours on his computer and knows how technology generally works. But don't be discouraged by the fact that you don't have enough experience with technology: you can also become a developer; you simply need more time.
Could you give advice to CodeGym users on how to achieve their training goals and become developers?
Technology makes our lives easier. I’ve learned so many things by randomly clicking buttons and exploring my working environment. When you see something, do you want to know how it works? Then click on it!
Forget about fear
My biggest advice for everyone is not to be scared. Everybody makes bugs and mistakes. Just google and research a lot, and you will find the solution eventually.
Invest time into learning
What we're doing in class is half the battle; you need to invest more time individually. The more you do between the classes, the more you learn, right? If you do nothing between the classes, you'll probably have some knowledge (from watching my lectures
), but you won’t be able to create something independently.
If you are training in the Java Fundamentals or Android courses, invest at least as many hours working on your own as we are working together. Let's say we have three and a half hours a week with me; then you should do at least three or four hours a week yourself.
It's important to code on your own to solidify the knowledge and come up with potential questions for future discussion. Never hesitate to ask a question either in class or in Slack chat. For persistent bugs, we can even do live debug sessions as we did in the last group. Learning is a 2-way street, and it's up to all of us to make this course a fun and productive experience.