Begin your Java exploration: Advice and resources for Java beginners

If Java is unfamiliar territory for you or you are migrating from another language to Java, this article should help you understand what you need and what you don’t.

I suppose most of you, in the role of explorers and adventure seekers, have come across the following problem – you’ve set a target and you are willing to try out a new technology, in an unknown field, to reach “unexplored” grounds, with the idea of expanding your horizons.

The problem is that, even before you start, an important question arises:

How do I know where to start or where I’m going in the infinite sea of information and how can I distinguish between what I need and what I don’t need?

Quite simple. You need a compass.

But first, a few words about me. My name is Samuil and I am a Java beginner. I’m currently working at Dreamix, a custom software company, where we develop software using Java with Spring Boot and Angular. Prior to starting this job, I went through intensive training at a popular software academy, which I am extremely grateful to for the serious preparation. I became part of the Dreamix team three months ago when I started using Java in the real world. I would like to share with you my personal experience regarding the process of adaptation, what to do and how to accomplish your goals in this direction. I believe the information will be useful to you!

No programming experience

Nowadays, finding information seems very easy. I believe most of you have already searched for something along the lines of: ‘How to teach yourself to code’, ‘Learn to code’, ‘How to get started writing code’ and so on. In front of you appear thousands of articles, containing all kinds of suggestions and tips. I went through the same thing and I know how confusing it can be.

Even though much of the information is useful, you can easily get lost in the labyrinth of data.

Software academy

I am currently finishing my Masters in ‘Electrical Engineering – Informatics and Communication’ in French. Nearly a year and a half ago, while longing for practical experience, and realizing that university in and of itself could not provide it, I decided to try something new. As an experiment, I started attending, as already mentioned, a software academy, and it completely changed my understanding of programming. There, they prepared me for real life, where the work contains an array of problems and requirements.

What I enjoyed most of my time at the academy is the atmosphere. Young, talented and motivated people, who are not in a hurry to leave the lectures, do not run away from innovation, keep pace with new technologies. People whowant to share their experience with anyone who has the thirst to learn. Being a part of this is surely going to motivate you.

The third very valuable quality of this type of training is that you are immersed in anenvironment of people of all ages, occupations, and nationalities, attending university, working, taking care of their families, all willing to dedicate time to attending lectures, studying and expanding their technical horizons. Time does not matter to the lecturers, the only thing they care about is whether the shared knowledge has reached you and has been understood. For them, the emerging questions from students are joy and not a nuisance.

In my view, it is useful at first to be surrounded by people with more knowledge and experience, to guide you through the sea of information, in a way that only the most important and meaningful things reach you. Then, of course, in your quest to get deeper into things, you will search and build up your knowledge.

To me, finding yourself in this environment, where you are thrown directly into the deep and everyone around you goes forward with fast pace and high goals, where in order to endure the intense tempo and constant inflow of new information you need devotion, perseverance and above all desire to keep up, means that if you manage to do so, you can not fail to achieve a good result. This is also agreat way to find out if programming is for you, whether you’re ready to do it eight hours a day, five days a week, despite all the difficulties you will encounter.

The academy is … how to put it, atest projection of reality. My advice is simple. If you can locate a software academy where you live and if you have the opportunity to sign up, do not be afraid to do so. On the contrary, dive right in!

Extra resources

а) Java: A Beginner’s Guide, Seventh Edition 7th Edition – it starts with the basics – how to create, compile, and run a Java program, then moves on to the keywords, syntax, and constructs that form the core of the Java language. This book spans to some of Java’s more advanced features like multithreaded programming, generics, lambda expressions, Swing, and JavaFX. In it, you can also find feature details on Java SE 9’s innovative module system, and an introduction to JShell, Java’s new interactive programming tool.

b) Head First Java, 2nd Edition – offers a highly interactive learning experience that lets new programmers pick up the fundamentals of the Java language quickly. The book is distinguishable from the other books of this type by the mind-stretching exercises, memorable analogies, humorous pictures, and casual language.

c) Java Precisely, Third Edition – offers many examples and some essential libraries. It is both for beginners and more experienced Java programmers.

e) “Stack Overflow” – every programmer’s favorite website – also the largest, most trusted online community for developers to learn, share their programming knowledge, and build their careers.

f) “Codingame” – Coding games are similar to online tutorials. In fact, the two are best used together for a mix of theory, practice and fun.

Some experience in programming

For people who feel comfortable with the basic principles and concepts of programming and would like to expand their knowledge, here are some additional resources that helped me.

Currently, one of my goals is to receive the Oracle Certified Associate Java(OCA) certificate. My trusted sidekick in this initiative is the OCA: Oracle

Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808 1st Edition. When I first opened it, I noticed that it is written in more detail and is very comprehensible, covering some of the most basic and common features of the language, and other, less rare, but tremendously valuable to those who want to improve the quality of their code. At the same time, I also decided to turn to resources that would improve my thinking and would give me different ways to solve a problem. Effective Java (3rd Edition) is the resource for this.

The book is a bit difficult to read and it takes time. I read it slowly, continuing with a new dose of information, only when I am sure I fully understand the previous paragraph. You will encounter a number of ‘non-standard’ techniques that are beyond the scope of the usual programmer, but once you understand the idea behind them, you’ll want to put them to use as soon as possible.

What I like about this book is the fact that everything is thoroughly explained. It makes you ask yourself why you would prefer to make one decision over another when encountering a problem. What the advantages and disadvantages of your choice are, and what other options you have. It gives you great tips and makes you think, it encourages you to add new knowledge to your existing “toolkit” and before you know it, you start using it.

Here are some very detailed Java specific reference books that I’ve heard great things about, and are on my “must read” list

Java: The Complete Reference, Ninth Edition. This Oracle Press resource explains in detail how to develop, compile, debug, and run Java programs. JavaBeans, servlets, applets, and Swing are examined and real-world examples demonstrate Java in action. The new Java SE 8 features such as lambda expressions, the stream library, and the default interface method are also discussed in detail. In addition, it offers a solid introduction to JavaFX.

Core Java Volume I–Fundamentals (11th Edition) explains the most important language and library features and shows how to build real-world applications with thoroughly tested examples. The new features introduced with Java SE 9 are all covered with depth and completion. This book encourages readers to dive deeper into the most critical features of the language and core libraries.

Core Java Volume II– Advanced Features (11th Edition). As you can understand from the name of the book, it takes the reader to the next level by covering advanced user-interface programming and the enterprise features of the Java SE 9 platform.

Here are some “mustread” books that are not Java specific, but will greatly improve your skills as a software engineer:

Samuil Mihaylov is a Full Stack Developer with Angular, Java & Spring at Dreamix, a custom software development company, and a Telerik Academy excellence graduate. He is knowledgeable in technology and has an open minded perspective that drives his curiosity to learn new things, develop his skills and face challenges. He is enthusiastic, adaptive and tends to learn quickly.

Samuil likes to push his limits and believes that this is the way to grow as a person.