JOURNAL · REFLECTION

The Season of Being a Beginner

While learning Java in BlueJ for the FreshTrack project, I built the objects one by one, got stuck on the Inventory object, saw an unexpected count of 4, then reran the polymorphism test cleanly and confirmed 0 → 3. The mistake became part of the learning.

Source: Mastery · Robert Greene

Mar 12, 2026 • 3 min read
The Season of Being a Beginner

One of the clearest reminders that beginner work is supposed to look like beginner work came from my FreshTrack Java project in BlueJ.

I was not trying to master Java in one sitting. I was trying to make the object model work correctly and prove that I understood what the code was doing.

I had to build the test piece by piece

I created the objects one at a time: a base FoodItem, a FreshFood, and a PackagedFood. I could see the inheritance structure in the code, but understanding it conceptually was different from proving it through an actual test.

The polymorphism test required something more specific: one Inventory object, then the same addFoodItem(FoodItem) method called with all three object types.

That was the point where I had to stop and ask how to create the inventory object properly.

The unexpected result was useful

At one stage, the inventory count showed 4 when I expected 3.

The extra item was not proof that the class design was broken. The object had already received an earlier addition. The state of the test mattered.

Instead of forcing the expected answer, I recreated the test with a fresh inventory.

This time the count started at 0. I added the base item, the fresh item, and the packaged item through the same addFoodItem(FoodItem) method. The final count was 3.

That small correction taught more than the clean result

If the test had worked perfectly the first time, I would have seen the result but missed part of the lesson.

The count of 4 forced me to notice that objects carry state. A test is not only about calling the right method; it is also about knowing what has already happened to the object you are testing.

I also saw polymorphism in a practical way. The method accepted the parent type, while the objects passed into it could be the parent class or subclasses. That became clearer once I watched the same method accept all three and the inventory count update correctly.

Beginner progress became measurable

I did not need to look advanced. I needed to be able to do the next thing correctly:

  • create the objects,
  • understand which class inherited from which,
  • call the same method with different object types,
  • notice an unexpected result,
  • identify why it happened,
  • reset the test properly,
  • and confirm the expected result.

That sequence gave me a more useful definition of progress than simply asking whether I “knew Java.”

The limit

Completing one test case did not make me an expert in object-oriented programming. It proved something smaller and more useful: I could work through one concrete concept, test it, correct the test state, and understand more than I did before.

That is the part of beginnerhood I want to keep respecting. The awkward step is not separate from mastery. It is one of the places mastery begins.

REFLECT

What will you carry forward?

Some ideas become useful only after we notice how they show up in our own experience.

Take a moment to ask what this reflection might help you notice differently in your own life.

IAMRAIN LEARNING JOURNEY

From understanding the idea to applying it.

Follow the same idea through Growth, Journal and Premium. Each stage adds a different kind of value.

01 Growth

What WE learned

02 Journal

What I experienced

03 Premium

What YOU can apply