Q&A: IT Master & Apprentice
Dialogues between an experienced IT professional and those seeking guidance on programming, career development, and technical growth. These exchanges reflect real questions and practical wisdom drawn from decades of professional experience.
Quick Navigation:
- Q1: Time Needed to Learn Programming Language
- Q2: Practical Path When Time Limited
- Q3: Improving Public Speaking Skills
- Q4: Surviving Difficult Workplace Relationships
Q1: Time Needed to Learn Programming Language
Apprentice asks:
I am young, hardworking, and willing to invest significant effort in learning programming. I understand that mastery takes years, but I'm asking about something more modest: how much time does it realistically take to reach a "decent" level in a programming language—functional competence where I can actually build things and solve real problems? I know this varies by person and circumstance, but I'd value hearing from your direct experience rather than generic advice.
Master responds:
Your question is well-formulated, and I appreciate that you're seeking realistic expectations rather than motivational platitudes. Let me share specific data from my own learning journey, with an important caveat: these times represent my experience AFTER completing university computer science education AND after five years of professional work. Your circumstances will differ, but the order of magnitude should provide useful reference points.
When I say "decent" or "functional competence," I mean: you understand the language's fundamental concepts, can read and write code confidently, know where to find documentation when needed, and can build practical applications. Not trivial work, but not expert-level either—solid, reliable competence.
Here are my learning times for reaching functional competence:
- BASIC: Approximately 8 hours. This was essentially reviewing a comprehensive book on the language, as the concepts were simple and I had strong foundational knowledge.
- Pascal: Approximately 80 hours. This required more serious study—understanding structured programming principles, strong typing, and Pascal's particular approach to program organization.
- ANSI C: Approximately 800 hours. This represents roughly ten comprehensive books studied thoroughly. C demands deep understanding: pointers, memory management, the compilation model, linking, standard library internals. There are no shortcuts here—C reveals the machine beneath, and that knowledge must be earned through sustained effort.
- Java: Approximately 40 hours. Having thoroughly understood C and object-oriented principles, Java was primarily learning new syntax and library organization. The fundamental concepts transferred directly.
Notice the pattern: each order of magnitude represents genuinely different depth of investment. Also notice that later languages became faster to learn—not because they're "easier," but because foundational knowledge transfers. After you truly understand one language deeply (especially something fundamental like C), subsequent languages become variations on themes you already comprehend.
For you specifically: if you're starting fresh without my background, expect these times to extend. But the crucial insight is this: reaching functional competence in a serious language requires months of dedicated work, not days or weeks. Anyone promising faster results is either selling something or doesn't understand what competence actually means.
The investment is worth it. Genuine competence, once earned, becomes the foundation for everything that follows.
Q2: Practical Path When Time Limited
Apprentice asks:
I understand from your previous answer that deep learning—particularly something like C—requires hundreds of hours of investment. I respect that and don't doubt its value. However, I'm facing practical constraints: I need to become productive relatively quickly, perhaps to secure employment or contribute to a project. At the same time, I don't want to build my career on superficial knowledge. Is there a pragmatic path forward that balances immediate necessity with long-term solidity?
Master responds:
Your question reflects mature thinking—recognizing both the ideal and the practical constraints of your situation. Yes, there is a pragmatic path, though it requires intellectual honesty about what you're doing and why.
Here's a three-stage approach that respects both your immediate needs and long-term development:
Stage 1 - Immediate Productivity: Python (Current Standard, 2025)
Start with Python. It's currently the most pragmatic choice for rapid productivity: readable syntax, extensive libraries, strong AI/ML ecosystem integration, and genuinely useful for a wide range of applications from web development to data analysis to automation. You can become functionally productive in Python within weeks rather than months—writing real programs that solve real problems.
Python's weakness is execution speed and the fact that it abstracts away many fundamental concepts. Accept this trade-off consciously: you're choosing rapid productivity over deep understanding, at least initially.
Stage 2 - Progressive Deepening: Kotlin (Modern, Elegant Alternative)
When you begin feeling Python's limitations—and you will—move to Kotlin. It's modern, elegant, offers significantly better performance, and provides excellent support for both Android mobile development and desktop/server applications. Kotlin sits in a sweet spot: more sophisticated than Python, backed by serious engineering (Google), but more accessible than diving straight into C/C++.
Kotlin will teach you static typing, more sophisticated object-oriented and functional programming concepts, and give you experience with compiled languages—all while remaining reasonably approachable.
Stage 3 - Foundational Mastery: ANSI C, then C++ (The "Retirement Languages")
I call C and C++ "retirement languages" not because they're obsolete—they absolutely aren't—but because learning them properly is something you do when you have time to invest deeply, perhaps later in your career or during a period of reduced immediate pressure. This is when you build the foundational understanding that makes everything else transparent.
After mastering C/C++, every other language becomes almost trivial to learn—typically reaching functional competence in about a week rather than months. This is because you understand what's actually happening beneath every abstraction. You've seen the machine itself.
The Honest Truth:
This staged approach is a compromise. The ideal would be learning C first, building that foundation, then everything else. But given your constraints, starting with Python and progressing through Kotlin before eventually tackling C/C++ represents a pragmatic path that doesn't abandon the goal of deep competence—it simply defers the most demanding investment until you can afford it.
Just don't confuse productivity with mastery. Know which stage you're in and keep the long-term goal visible.
Q3: Improving Public Speaking Skills
Apprentice asks:
I occasionally need to give presentations at work—technical explanations to colleagues, project updates to management, that sort of thing. I manage adequately, but I realize I'm proceeding intuitively without any real theoretical foundation or systematic approach. I'd like to improve but don't know where to start. Most resources I find are either superficial "TED talk" style advice or academic rhetoric texts that seem disconnected from practical needs. Do you have guidance on developing genuine competence in public speaking?
Master responds:
Your instinct is sound—recognizing that intuitive competence has limits and that systematic study could elevate your capabilities. Let me address both the philosophical context and practical direction.
The Foundational Reality:
Descartes observed, rightly, that eloquence is more a natural gift than the result of study—some people possess innate talent for persuasive, engaging speech. However, this doesn't mean instruction and practice are worthless. Even with natural limits, systematic study and deliberate practice can substantially improve whatever ability you already possess. The goal isn't to become Cicero if you weren't born with that gift, but to maximize whatever potential you do have.
Learn from the masters, not from their students:
Most modern "public speaking" advice comes from people who themselves learned from superficial sources—students teaching students. Instead, go to the masters: those who understood rhetoric at the deepest level and whose insights have survived centuries.
My recommendation: Study Quintilian, the Roman master of rhetoric and oratory from the 1st century AD. His "Institutio Oratoria" (Institutes of Oratory) represents the most systematic and comprehensive treatment of public speaking in the Western tradition. Quintilian wasn't theorizing—he was training advocates who would argue cases in Roman courts where outcomes had real consequences.
I've prepared a concise introduction to Quintilian's essential principles, which you can access here:
Quintilian - Foundations of Oratory: View PDF
Immediate Elements to Consider:
While you're studying Quintilian, keep these fundamentals in mind:
- Physical presence matters: Decent dress appropriate to the occasion, clear voice projection, deliberate gesture. These aren't superficial—they signal respect for your audience and seriousness of purpose.
- Silence is powerful: As Cicero observed, "Silence is one of the great arts of conversation." The same applies to presentations. Strategic pauses give your audience time to absorb ideas and create emphasis more effectively than rushing through material.
- Structure over improvisation: Natural talent might allow some to improvise effectively, but for most of us, systematic organization of ideas—clear introduction, logical development, strong conclusion—produces far better results than relying on spontaneity.
- Practice delivery, not just content: Technical people often prepare content thoroughly but neglect practicing actual delivery. Rehearse aloud, ideally recording yourself, to identify awkward phrasing, unclear explanations, and timing issues.
Final Thought:
Public speaking is a skill that improves with study and practice. You don't need exceptional natural talent to become significantly better than average—you need systematic approach and willingness to invest effort. Quintilian provides that systematic approach.
Q4: Surviving Difficult Workplace Relationships
Apprentice asks:
When I'm working alone or in small, technically-focused teams, I do well—the work itself is manageable and even enjoyable. But in larger, more hierarchical organizations, I encounter difficulties that have nothing to do with technical competence: office politics, difficult personalities, conflicts over resources or credit, management dysfunction. The context is often far from ideal, yet I need to navigate it successfully. What guidance exists for handling these very human challenges that aren't addressed in technical education?
Master responds:
You've identified something crucial: technical competence is necessary but insufficient for professional success. The challenges you describe—navigating complex human relationships in imperfect organizational environments—often prove more demanding than the technical work itself.
A Historical Analogy:
Consider the Egyptian scribes serving in the Pharaoh's court. Certainly, they ate better than peasants working in fields—their position provided material advantages. However, their daily stress was arguably greater. Why? Because the peasant's challenge was surviving physical labor, while the scribe's challenge was surviving court politics—managing relationships with nobles, avoiding factional conflicts, maintaining the favor of superiors, handling rivals. One mistake, one enemy made carelessly, could mean ruin.
The Viking warrior has another useful metaphor: it's one thing to be a strong swimmer, another thing entirely to swim during a storm in the open ocean. Your technical skills are your swimming ability. The organizational environment—with its politics, conflicts, and complexities—is the storm. You need more than swimming ability; you need navigation skills.
What NOT to Read:
Many will recommend books like Machiavelli's "The Prince" or Sun Tzu's "The Art of War." Resist this advice. These are the wrong books for your situation:
- Not Machiavelli's "The Prince": You are not a prince. You're not seeking political power or building a state. Machiavelli's advice concerns how rulers maintain power through force and cunning—utterly inappropriate for navigating workplace relationships as a professional.
- Not Sun Tzu's "The Art of War": You are not a general commanding armies. Military strategy and office navigation require entirely different approaches. Treating colleagues as battlefield adversaries is a recipe for professional disaster.
The Right Book:
Read Baltasar Gracián's "The Art of Worldly Wisdom." Gracián was a Spanish Jesuit rector at a major university during the period when many of his students became advisors to European monarchs and high nobility. He understood precisely what you're asking about: how educated, competent individuals navigate complex social and political environments where relationships matter enormously.
Gracián's wisdom centers on a principle crucial to your question: avoid conflicts at all costs. This doesn't mean weakness or cowardice—it means recognizing that conflicts damage both parties involved and tarnish reputations in ways difficult to repair. The art he teaches is conflict avoidance, not conflict winning.
The resource is available here (the same referenced in the Cultural section of this site):
A Biblical Wisdom:
Jesus told his disciples memorable guidance for this exact situation:: "Behold, I send you out as sheep in the midst of wolves. Therefore be wise as serpents and innocent as doves." (Matthew 10:16)
Notice both qualities: wise as serpents (shrewd, aware, strategic) AND innocent as doves (maintaining integrity, avoiding malice). This balance—navigating difficult environments skillfully while preserving your ethical core—is precisely what Gracián teaches systematically.
Final Thought:
The challenges you describe are real and significant. They've ended more careers than technical incompetence ever has. Taking them seriously—studying how to navigate them skillfully—is a mark of maturity. Gracián provides the systematic guidance you need.