JavaRush /Java Blog /Random EN /The Java Developer Path
trinit
Level 41

The Java Developer Path

Published in the Random EN group
Well, it’s my turn to write my story. In short, I’ve been a Junior Java Developer for 3.5 months now. If you want details, then read on. Like everyone who writes employment histories, it’s probably best to start with the background story of who I was and who I became. A long time ago, many, many years ago, I tried to start programming. It was 2nd or 3rd grade, I signed up for a programming club, went several times, learned to type my name and home address on the keyboard, and that was the end of my programming, because for some reason I dropped out of that club. I didn’t have any programming skills at school, or at university, just like I was studying to become an accountant. Several times I tried to learn programming on my own. I had a book at home on computer science that contained problems in Pascal, but I didn’t understand anything in it, and there was no one to explain it to, so I gave up on it. Years passed, I studied to be an accountant, there was no work. And about two years ago I finally found a job in a 1C franchisee. I went there to the user technical support line, because... I knew accounting, and the main direction of 1C is still this industry. After some time, the director said that it would be necessary for me to learn programming, because... There is no one to write to and this knowledge will not hurt in technical support. There was nowhere to go and this was my first step on the way. For two months I read a book on the 1C platform, then they explained to me what a variable is, and then it was like a fog :) Just kidding. I didn’t understand anything beyond variables and had to watch courses for beginners based on Python. Already in the process of work and specific tasks, I began to understand loops, arrays, and the mechanism of step-by-step debugging. The real breakthrough was when I figured out how to pass parameters to other functions. One day I was sitting and googling in search of what could help me in learning 1C and on one of the forums I found that learning the VB.NET language could help me with this. This was another breakthrough. I downloaded the book “Lukin S.N. Understanding Visual Basic.NET. Self-instruction manual in 3 volumes” and started studying with it. The book is very good, especially for beginners. And the language for beginners is also good, although many people say bad things about it (apparently they remember the old VB). On the one hand, it allows you to cut logic without being distracted by the user interface, on the other hand, it is both procedural and OOP at the same time. In addition, VB.NET really turned out to be very similar to 1C, or rather, 1C was similar to it and it was easy for me to program in 1C all day, solving work problems, and come in the evening and quickly switch to another language. I devoted all my free time and weekends to programming. Around that time, I was already starting to get tired of 1C and realized that I couldn’t make money with 1C (I earned one and a half times less than my accountant clients, for whom I wrote the program and whom I trained). I started thinking, what to do next? Thoughts came about Android, it seemed interesting, promising, etc. A programmer friend said that they write in Java, and the Internet confirmed it. A friend said that it would be better to learn C++ before Java. I already wanted to start, but there was still more than half of the book on VB.NET, and I didn’t want to quit. The book could have been read in a month, but I realized that reading alone without practice would not give anything and I decided to write some small, but my own project. A notepad was chosen for this purpose. I wrote a notepad that opens and saves files, determines the encoding when opening a file, and colors the 1C syntax. Then I wrote a calculator (I never thought it was such a complicated thing). Then there was another big, by my standards, project - a program for solving 1C tests. The point is that it takes a text file with questions and answers, puts it all into an excel file (yes, back then I didn’t know how to work with a database) and then you can solve both the section and random tickets, etc. There were a couple of other small programs to understand flows, access modifiers and other things. The time has come when I completed the VB.NET book. I had a sufficient base, approximately the same as after the 2nd or even 3rd year of university. At work, I was also already able to write well and understand the jungle of code. It’s just that the work finally got boring, because in order to write on 1C you don’t need to know programming, but to a greater extent you just need to understand the mechanisms of the platform. It's C++'s turn, as my friend advised. I opened the C++ book and opened the second one. Everywhere they write that before learning C++, you need to know C. I found a book on C, looked through it and thought “FUCK YOU!”, I want to write on Android, I NEED JAVA. And as if finally and without giving up C, I decided, purely for the future, to look at courses for beginners in Java. Guess where I stumbled? Yes, to our beloved JavaRush. It was New Year 2015. As soon as I pressed the big green PLAY button, I was overwhelmed. The first 10 levels were easy. Then there was a fee, and the dollar was at unprecedented heights, you had to wait for a discount. In the meantime, I came across free courses on Python of intermediate difficulty level; it’s never a bad idea to stretch your brain, and I completed these courses, which took another couple of months. One day I had the chance to go for an interview with a company; they needed a person who could write in Java. I couldn’t sleep well all night, I kept thinking that they might ask me, in the morning I repeated the difference between an interface and an abstract class, access modifiers, polymorphism. But they didn’t ask me anything, they simply wrote a list of technologies that needed to be learned, after which they promised to give me a test task, based on it they would look at my coding style, logic, and then make a decision about my employment. The vacancy was not for Android, but for a server side, maybe that’s for the best. On the second day, I quit 1C, since this area was exhausted for me, and getting pennies and shoveling tons of 1C code every day, after which studying Java technologies, was beyond my strength. I eagerly began to study the Java technologies that were given to me, this one I didn’t know how to work with a database back then) and then you can decide both the partition and random tickets, etc. There were a couple of other small programs to understand flows, access modifiers and other things. The time has come when I completed the VB.NET book. I had a sufficient base, approximately the same as after the 2nd or even 3rd year of university. At work, I was also already able to write well and understand the jungle of code. It’s just that the work finally got boring, because in order to write on 1C you don’t need to know programming, but to a greater extent you just need to understand the mechanisms of the platform. It's C++'s turn, as my friend advised. I opened the C++ book and opened the second one. Everywhere they write that before learning C++, you need to know C. I found a book on C, looked through it and thought “FUCK YOU!”, I want to write on Android, I NEED JAVA. And as if finally and without giving up C, I decided, purely for the future, to look at courses for beginners in Java. Guess where I stumbled? Yes, to our beloved JavaRush. It was New Year 2015. As soon as I pressed the big green PLAY button, I was overwhelmed. The first 10 levels were easy. Then there was a fee, and the dollar was at unprecedented heights, you had to wait for a discount. In the meantime, I came across free courses on Python of intermediate difficulty level; it’s never a bad idea to stretch your brain, and I completed these courses, which took another couple of months. One day I had the chance to go for an interview with a company; they needed a person who could write in Java. I couldn’t sleep well all night, I kept thinking that they might ask me, in the morning I repeated the difference between an interface and an abstract class, access modifiers, polymorphism. But they didn’t ask me anything, they simply wrote a list of technologies that needed to be learned, after which they promised to give me a test task, based on it they would look at my coding style, logic, and then make a decision about my employment. The vacancy was not for Android, but for a server side, maybe that’s for the best. On the second day, I quit 1C, since this area was exhausted for me, and getting pennies and shoveling tons of 1C code every day, after which studying Java technologies, was beyond my strength. I eagerly began to study the Java technologies that were given to me, this one I didn’t know how to work with a database back then) and then you can decide both the partition and random tickets, etc. There were a couple of other small programs to understand flows, access modifiers and other things. The time has come when I completed the VB.NET book. I had a sufficient base, approximately the same as after the 2nd or even 3rd year of university. At work, I was also already able to write well and understand the jungle of code. It’s just that the work finally got boring, because in order to write on 1C you don’t need to know programming, but to a greater extent you just need to understand the mechanisms of the platform. It's C++'s turn, as my friend advised. I opened the C++ book and opened the second one. Everywhere they write that before learning C++, you need to know C. I found a book on C, looked through it and thought “FUCK YOU!”, I want to write on Android, I NEED JAVA. And as if finally and without giving up C, I decided, purely for the future, to look at courses for beginners in Java. Guess where I stumbled? Yes, to our beloved JavaRush. It was New Year 2015. As soon as I pressed the big green PLAY button, I was overwhelmed. The first 10 levels were easy. Then there was a fee, and the dollar was at unprecedented heights, you had to wait for a discount. In the meantime, I came across free courses on Python of intermediate difficulty level; it’s never a bad idea to stretch your brain, and I completed these courses, which took another couple of months. One day I had the chance to go for an interview with a company; they needed a person who could write in Java. I couldn’t sleep well all night, I kept thinking that they might ask me, in the morning I repeated the difference between an interface and an abstract class, access modifiers, polymorphism. But they didn’t ask me anything, they simply wrote a list of technologies that needed to be learned, after which they promised to give me a test task, based on it they would look at my coding style, logic, and then make a decision about my employment. The vacancy was not for Android, but for a server side, maybe that’s for the best. On the second day, I quit 1C, since this area was exhausted for me, and getting pennies and shoveling tons of 1C code every day, after which studying Java technologies, was beyond my strength. I eagerly began to study the Java technologies that were given to me, this one And as if finally and without giving up C, I decided, purely for the future, to look at courses for beginners in Java. Guess where I stumbled? Yes, to our beloved JavaRush. It was New Year 2015. As soon as I pressed the big green PLAY button, I was overwhelmed. The first 10 levels were easy. Then there was a fee, and the dollar was at unprecedented heights, you had to wait for a discount. In the meantime, I came across free courses on Python of intermediate difficulty level; it’s never a bad idea to stretch your brain, and I completed these courses, which took another couple of months. One day I had the chance to go for an interview with a company; they needed a person who could write in Java. I couldn’t sleep well all night, I kept thinking that they might ask me, in the morning I repeated the difference between an interface and an abstract class, access modifiers, polymorphism. But they didn’t ask me anything, they simply wrote a list of technologies that needed to be learned, after which they promised to give me a test task, based on it they would look at my coding style, logic, and then make a decision about my employment. The vacancy was not for Android, but for a server side, maybe that’s for the best. On the second day, I quit 1C, since this area was exhausted for me, and getting pennies and shoveling tons of 1C code every day, after which studying Java technologies, was beyond my strength. I eagerly began to study the Java technologies that were given to me, this one And as if finally and without giving up C, I decided, purely for the future, to look at courses for beginners in Java. Guess where I stumbled? Yes, to our beloved JavaRush. It was New Year 2015. As soon as I pressed the big green PLAY button, I was overwhelmed. The first 10 levels were easy. Then there was a fee, and the dollar was at unprecedented heights, you had to wait for a discount. In the meantime, I came across free courses on Python of intermediate difficulty level; it’s never a bad idea to stretch your brain, and I completed these courses, which took another couple of months. One day I had the chance to go for an interview with a company; they needed a person who could write in Java. I couldn’t sleep well all night, I kept thinking that they might ask me, in the morning I repeated the difference between an interface and an abstract class, access modifiers, polymorphism. But they didn’t ask me anything, they simply wrote a list of technologies that needed to be learned, after which they promised to give me a test task, based on it they would look at my coding style, logic, and then make a decision about my employment. The vacancy was not for Android, but for a server side, maybe that’s for the best. On the second day, I quit 1C, since this area was exhausted for me, and getting pennies and shoveling tons of 1C code every day, after which studying Java technologies, was beyond my strength. I eagerly began to study the Java technologies that were given to me, this onelist: 1. OOP. 2. Maven. 3. Apache Tiles. 4. Spring MVC. 5. Hibernate. 6. Eclipse (I recommend not using a clean environment, but STS from Spring - https://spring.io/tools/sts/). 7. Tomcat 8. 8. JUnit. I’ll add a couple more technologies that are very desirable to know: 9. Bootstrap - with it you can very quickly create a website interface without inventing you know what... 10. JQuery - so as not to write tons of native JS code + there are all sorts of useful goodies like autocomplete(), etc. 11. Linux/Ubuntu - in most cases this will be installed at work. You need to at least be able to install JDK and Tomcat. 12. GIT/other version control system is a must have. 13. JSON. and technologies that may have to be used in projects: 14. AngularJS - JS framework, a very cool thing. 15. MongoDB. 16. RabbitMQ. and what you can’t do without: 17. English! It was necessary to maintain a balance between the quality of study and the time spent on it. The vacancy couldn’t wait for me forever, and that’s what drove me on. Every day I devoted about 14-16 hours to studying. It took me 3 weeks to become familiar with these technologies. I just read a few articles about some technologies, and watched videos about others. I got to know people like Spring and Hibernate in practice - I watched videos of Indians and repeated what they do. I wrote several JUnit tests and simply installed tomcat on my computer. Maven included dependencies in pom.xml. About Eclipse I thought that it was just a tool and I could switch to it from IDEA at any time (how wrong I was). Although I was not confident in my knowledge, it was time to take the test. I took it, it turned out to be not very difficult, because over the past 3 weeks I have come across almost all of this while studying technology. It was necessary to write a web application - a task manager (site), where you can create a task, change it, delete it, give it a status, and a creation date. And also develop a registration/login module for it. All this could be done without using JS, a beautiful UI, simple HTML & CSS. At the same time, a discount on JavaRush appeared and I signed up for a subscription, but there was no time for courses. It was very interesting to do the test task. It took a week to complete the main functionality, then another 3 to fix minor bugs, refactoring, rewriting from org.hibernate.SessionFactory to javax.persistence.EntityManager, changing the database from MySQL to H2 or HSQLDB, writing JUnit tests. While I was redoing all this, I encountered a thousand errors, along the way I learned to read my now beloved stackoverflow in English and understand at least a little something, albeit from Google translate. I also struggled with Eclipse because it was on the list of technologies I was given during the interview. Let me just say that the difference between IDEA and Eclipse is colossal. Imagine that you are flying on an airplane, and so, IDEA is an airplane with a pilot, and you sleep in a first class seat and slowly fly to your destination, and Eclipse - you are also flying on an airplane, but as a pilot, there is a thunderstorm outside and lightning strikes your engine every 20 minutes. Seriously, IDEA does a lot of things for you, and you don’t even know about it; in Eclipse, all this needs to be set up, configured, and registered. In the first days of “my Eclipse” I spat, cursed and showed suicidal tendencies, after 5 months of working with this IDE I can say that it is cool, powerful and usable, you just need to get used to it. In the end, everything worked out, there was another interview with questions about the implementation of the application’s functionality, and I passed it. Then another interview with the director. Then some of the people who decided my fate went on vacation, then there were the May holidays, then they brought my computer and something else. So another 2 months passed. During these 2 months, I managed to complete levels 13-22 in JavaRush, watch 2 courses by Batyrshynov on Spring and Spring MVC, by the way, good courses, but only for beginners, because basically all the examples are at the "Hello world" level. And I got to work. They immediately gave me a project - a REST API for a toy for iOS, communication via JSON. It was very interesting, but difficult. It was especially difficult at first to delve into something I had never seen - Ubuntu and GIT. Ubuntu can be mastered without problems, but GIT is a fun, powerful, complex thing, especially on large projects and in non-standard situations. I will never forget my first salary, which turned out to be 4 times more than in 1C. Immediately after I got the job, to independently study technology and as a test project, I decided to write a toy, like a sandbox to implement some ideas. And recently I finished it. If you want, you can see the result (but it’s highly advisable to log in from a computer and Chrome, because I’m still a bad layout designer): http://triangles.cf I’ve been working for the 4th month now. I thought that everything difficult was already behind me, but it turned out to be the opposite. Ahead of you is learning English, because if you don’t know it, even if you are hired, you won’t work for long. Reading documentation, communicating with customers, writing code and comments - all in English. You also need to complete JavaRush courses, study patterns, algorithms and other useful things. I would like to wish everyone good luck, easy development and a strong mind. For those who work and those who want to find a job. You will succeed, you just need to strive and do it, fight with yourself and with the interruptions. JAVA everyone!) fight with yourself and with the exceptions. JAVA everyone!) fight with yourself and with the exceptions. JAVA everyone!)
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION