Programming Languages and Frameworks: Why You Must Master One First

Companies Do Not Care About Your Preferences

‘I heard Python is trendy these days. Should we use Python?’ Can a junior developer say this on their first day? Absolutely not.

Before getting hired, I had the luxury of choice. I used Python for coding tests because it was concise, and I studied Java for web development because the job market demanded it. But the reality of the small team I joined was different.

The company’s tech stack was already set in stone. The legacy code was running on Java (Spring Boot), the frontend was rendered in JavaScript (Vue.js), and suddenly, I was assigned to maintain an Android app, forcing me to wrestle with XML and a different flavor of Java.

I never made a choice. The ‘Environment (Framework)’ forced those languages upon me. At first, I was terrified by this barrage of unfamiliar syntax. But as I frantically read and wrote code to survive, I realized a crucial fact.

‘Wait a minute… isn’t this exactly the same concept I learned in Java?’

If you master the core concepts of one language, opening the doors to others is just a matter of time.

Syntax is Different, Essence is the Same (Concept Transfer)

In college, I skimmed through C and dug deep into Java. When job hunting season arrived, I heard rumors that ‘Python is a cheat code for technical interviews’, so I opened a Python book for the first time.

The syntax was alien, yet I adapted in just a few days. It wasn’t because Python is easy. It was because I already understood the ‘Essence of Programming’ through Java.

  • Python’s List: ‘Oh, this is just Java’s ArrayList combined with Stack and Queue features.’
  • Python’s Dictionary: ‘This is exactly like Java’s HashMap. It stores Key-Value pairs.’

I wasn’t learning a new language from ‘Zero’. I was overlaying the ‘Map of Python’ onto the ‘Map of Java’ that already existed in my brain. In educational psychology, this is called ‘Transfer of Learning’. The deeper you dig into one language, the faster you can understand others.

UI is Just a Tree Structure

This experience shined in completely different areas too. I had dabbled in HTML/CSS to renew a school website for pocket money. I never thought it would help my career. But after joining the company, I had to fix the UI of an Android app. Android uses XML for its layout. I was nervous, but when I looked at the code, I laughed.

<!-- Android XML -->
<LinearLayout orientation="vertical">
    <TextView text="Hello World" />
    <Button text="Click Me" />
</LinearLayout>

<!-- HTML -->
<div style="display: flex; flex-direction: column;">
    <span>Hello World</span>
    <button>Click Me</button>
</div>

Only the tag names were different. The structure of ‘putting child elements inside a parent and shaping them with attributes’ was identical to HTML. Because I understood the DOM Tree structure and the Box Model, the Android View Hierarchy was instantly familiar.

Even if the platform changes, the essence of ‘Hierarchy’ remains the same.

Frameworks: The Thing School Did Not Teach

Actually, what confused me more than the languages were the ‘Frameworks’. School taught me ‘Basic Fitness’ like C syntax, Data Structures, Algorithms, and Theory. Of course, I had heard of ‘React’ or ‘Spring’. I even bought a React book once.

But I closed it before finishing half. I couldn’t understand why I had to write code this way. ‘Why do I have to extend a Component? Why do I have to put my logic inside a render function? Why don’t I have control?’

I didn’t know the critical difference between a ‘Library’ and a ‘Framework’.

  • School (Library style): I write the code, and I call the tools (functions) when I need them. (Building a custom house with my own hammer).
  • Work (Framework style): The tool (Framework) calls me. I just fill in the blanks where I am told to. (Assembling a prefabricated model house).

If school taught me how to hammer freely, the Frameworks in production were like massive factories saying, ‘We will do the hammering; you just insert the nail into this specific hole.’ Because I didn’t understand this ‘Inversion of Control (IoC)’, the books felt like alien scriptures.

[Code Verification] Language is Different, Memory is One

Let’s prove with code that even if languages differ, what happens inside the ‘Digital Fulfillment Center’ (Computer) is the same. Java’s ArrayList and Python’s list have different syntax, but their strategy for managing the warehouse (Memory) is identical: ‘Dynamic Arrays’.

// Java: ArrayList resizing strategy
import java.util.ArrayList;
import java.lang.reflect.Field;

public class MemoryTest {
    public static void main(String[] args) throws Exception {
        ArrayList<Integer> list = new ArrayList<>();
        // In Java, when the array is full, 
        // it creates a new array 1.5 times bigger and moves (copies) the items.
        // Capacity: 0 -> 10 -> 15 -> 22 ...
        
        System.out.println("--- Java ArrayList Growth ---");
        for (int i = 0; i < 20; i++) {
            list.add(i);
            printCapacity(list);
        }
    }

    // Helper to peek into the internal capacity
    private static void printCapacity(ArrayList<?> l) throws Exception {
        Field dataField = ArrayList.class.getDeclaredField("elementData");
        dataField.setAccessible(true);
        Object[] internalArray = (Object[]) dataField.get(l);
        System.out.println("Size: " + l.size() + ", Capacity: " + internalArray.length);
    }
}

import sys

# Python: List resizing strategy
# In Python, when the list is full,
# it creates a new array (approx 1.125x + constant) and moves.
# Capacity: 0 -> 4 -> 8 -> 16 -> 24 ...

print("--- Python List Growth ---")
my_list = []
for i in range(20):
    my_list.append(i)
    # getsizeof includes header overhead, but shows the growth step
    print(f"Size: {len(my_list)}, Size in Bytes: {sys.getsizeof(my_list)}")

The Realization: Whether we use Java or Python, the ‘Warehouse Manager’ (OS/Memory) uses the same logic. They both allocate a contiguous block of memory and resize it when it gets full. The rules of the Digital Fulfillment Center are universal.

[Practical Advice] Prescription for Analysis Paralysis

‘Which language should I learn?’ This is the most common question in communities. You don’t have to stick to one language forever. But paradoxically, to be good at many, you must ‘Master One First’.

If you are a student paralyzed by choice, close the book and open a ‘Job Board’ right now.

  1. Find a Job Description (JD) of a company you want to join.
  2. Pick ‘One Tech Stack’ (Language & Framework) listed there.
  3. Dig into that single stack deeply.

‘But this company uses Spring, and that one uses Node.js. What do I do?’ It doesn’t matter. If you master one properly, the essence transfers. A person who mastered Spring will adapt to Node.js quickly because they understand the web architecture. But a person who only tasted a bit of everything will get lost in any framework.

Stop worrying and dig deep into ‘what the market wants’. That is the fastest shortcut.

Closing Thoughts: Curiosity Over Fear

As a developer, the moment will come when you have to use a language or framework you didn’t choose. Will you run away saying, ‘I am a Java developer, I hate Python’?

Language is not a religion; it is a ‘Tool’. And a Framework is just the ‘Workshop’ where we use that tool. Someone who has deeply mastered their mother tongue learns a second language faster. So, don’t be scared if your company forces a new tech stack on you. The shell is different, but the nut inside is the same one you already know.

Now that we have removed the fear of languages, in the next post, we will dive into the real world where code lives: the depths of ‘Memory’. Once you know where your code sits in RAM and how it moves, the language barrier will crumble even further.

Leave a Comment