Update #13 A restart?

Just a short one, trying to re-start my posting habit.

I changed my approach to learning Java, now I understand most of the basic concepts: I am not going to fully finish my Udemy training anymore, but instead doing much more learning by example.

Did I make progress? I think so:

  • I started with understanding Spring, Spring Boot, Spring web starter and Spring security
  • I finally understand Maven and have added some libraries to my sample projects
  • I have a vague idea of a case program I want to build in the geographic domain. So I started with integration of the Java Topology Suite(JTS) in my project and started experimentation

OK, enough for now. Let’s see if I can keep doing Java, as the very busy month of August has started again…

Update #10 My spirit is always alive, not the blog…

Just a mini update (without a READ MORE) this time. As the title says, I am still very motivated to finish this course. But is not easy to find enough time. Last weeks were hectic at work due to the preparation of our quarterly planning event. And even in the quarterly hack week I had only little time for my Java journey as I joined other trainings and organised a (JIRA) training of my own.

For the 2nd time this month my blog was down a few days without me noticing. This time because my (external USB) backup drive was full. Not sure what happened, as I thought older backups were automatically removed. Have to keep a better eye on this and find out how Proxmox handles this exactly. And I was thinking, probably first thing I have to develop when I am a little bit more advanced in Java, is a simple “host monitor” script: Hit https://adeknegt.nl and check if there is 200 response code. Suppose this is dead simple with Spring, but maybe it is doable too with plain old Java. I still have the networking chapter to go in the course.

Finally, I am now in the middle of the 6.5 hours chapter on collections (sets, maps and some assorted extra’s). I feel it is really important to learn this part well, as in almost all programs you use them extensively. Now at 47% of the course (not sure how they measure this, maybe just a count of videos + exercises). On to the next 53%!

(I don’t feel like celebrating post #10, maybe a big party at #25 or so)

Update #8 Worst code ever :-)

I am finishing the chapter on packages, scope and access. Not the most sexy topic, but I am happy to do it. It was itching already for some time when to use public, private, static, final etc… It was used before (of course), but not really explained. Now it is. Again, not something you will need to know in detail in daily practice, but I sorta think this is fundamental knowledge that is good to have.

As part of this chapter, there was a fun challenge to illustrate scope. The assignment: a program that prints primary school “times” list for a value. E.g. for value 3 : 1 * 3 = 3, 2 * 3 = 6, 3 *3 = 9 etc….

One specific condition: all variables, members, methods and classes have to be called x (or X for the class)!! It results in completely unreadable code, but due to scoping in Java, it can be done. See if you can follow the code 🙂

Read More

Update #7 Am I doing the right thing?

The other day I was talking about my Java challenge with one of the (sr) Java developers in my team. I told him that I was currently learning topics like Java Generics and Access Modifiers. His reaction caused me some concern.

He explained that these indeed are topics that Java developers learn and know, but in practice you do not really “use” them. In the daily work you mostly implement known design patterns, which you bootstrap with more or less stand Java coding blocks. And most of the time standard libraries like Spring(-Boot) also take away complexity from using Java standard functionality.

So, should I stop learning the details of Java and more focus on general Java, design patterns and Spring?

Read More

Update #4 – Another one off the list

The title is a poor word joke, as I am finishing up on chapter 8 with Arrays, Lists, ArrayList and LinkedList. Not too complex I think, although the LinkedList has some quirks for sure. I do get how it works in code, but I am not sure yet why you need a separate iterator to be able to iterate through the elements. Well, I probably have to practice some more to get used to it.

Not much to say about lists, so maybe a small update on the course and the learning experience. I still like the structured manner the topics are presented. What I do see now: doing the challenges yourself before checking out the solution is maybe one of the most valuable parts. I am still somewhat frustrated that the teacher often has another take on the solution, but usually there is a lot to learn on how to efficiently solve certain standard problems.

Earlier I was positive about the exercises, for which you have to copy your code to the website where it runs and checks the output. I am less positive now. In last chapters the challenges were quite large (several videos), but at the exercise it turns out the you almost literally have to create the code from the challenge. That is not much of an exercise.

Anyway, still like the learning and the (almost) daily progress I make. Next Topic: Inner- and Abstract Classes & Interfaces.

Update #3 – (Brain) Muscle memory

As you can read in my bio (see About me), I have been trained as a Software Engineer many years ago, somewhere in the mid 1990’s. After a few years programming, I drifted away to analysis, project- and program management and several Agile roles like Release Train Engineer and Scrum Master. Meanwhile I kept involved with technology, but I did not code regularly anymore.

Now that I am coding almost every day for my Java course, I realise that also the brains have some “muscle memory”. Interested to see what I mean by this?

Read More

Update #2 – Milestone reached: OOP done

Another update. After a week with little time, I finally had the time to finish the final Object Oriented Programming chapter. Including the challenges and the exercises. Feels like a real milestone, as mastering OOP concepts is in my opinion really one of the basics of designing good programs. Now terms like Inheritance, Polymorphism, Encapsulation and Composition have little secrets for me.

Let’s go back to the course itself: the final challenge (explained in a video) was exactly the same as the final exercise. Makes the exercise a little less valuable unfortunately. Anyway, I have been creating Basic Hamburgers, Healthy burgers and Deluxe burgers. That was fun to do, but I really think that the trainer, even with the limited knowledge we students have at this time, did not get everything out of his solution. I liked mine better (maybe think all programmers think that about their code?). Let me explain.

Read More

Update #1 – Challenges versus coding exercises

OK, I am now half way Chapter Seven (of Twenty Five), learning about Object Composition and Encapsulation. Probably still basic stuff for experienced OO programmers.

Anyway, in this course there are two types of “hands on the keyboard” exercises in the chapters:

  • Challenges. These are explained in a video. Then you have to pause the video and create your code. The remainder of the video the trainer showing his implementation of the challenge
  • Coding Exercises are different. In this case you make and test your code in IntelliJ, then you copy your coded classes to the course website. The website runs your code and checks if results are as specified in the assignment

Now I have done quite a few of both, I like the Coding Exercises better than the Challenges. Why?

Read More