Theory
is when you know everything and nothing works;Practice
is when everything works and nobody knows why.
Here we combine theory with practice: nothing works and nobody knows why!
Experience and Knowledge
Theory and Practice collide everywhere -
When we learn something we improve our knowledge
,
When we practice it - we gain experience
.
Practicing programming
My example topic would be C#
Dependency Injection:
Theory
The theoretical part explains what is a dependency
and what it means injection
.
Image from the post:
Dependency
:
A dependency is something a unit of work relies on.
Injection
:
Putting a unit of work or data into other unit of work.
In practice
The practice is where we explore the actual code:
1 | public class Blender |
The ctor
contains the acutal injection: public Blender(ICutter cutter)
.
Thus learnt the method of Ctor dependency injection
.
Knowledge is what we learned and practice contains some of the knowledge.
Fully realizing knowledge takes time.
This concept is known and practiced.
Yet,
There’s a missing piece!
The source to both - knowledge and experience
.
The Potential
!
Potential
You don’t know what you don’t know.
The potential
is the source for all knowledge and experience.
It can grow indefinitely
by exploring topics without learning or practicing them,
Just by keeping track of what you don’t know!
For example,
A beginner would not know about different programming languages,
Maybe they are aware of C
and Java
because they are exposed to it in their university.
So their potential is quite low at this point, their knowledge and experience are at the bottom because their only expertise is an Hello World
program.
This is ok - because it can grow
!!!
How?
Growing your potential
By exploring!
My own potential
I keep track of many things and keep adding sources, books, videos, references, api reference, discord channels, git repositories and much more!
Reading about the unknown
it the first step to grow
your potential
!
Having a book about Reverse Engineering increases your potential to be a reverse engineer,
Reading the book increases your knowledge about Reverse engineering,
Reversing a program increases experience!
Your potential
What steps should you take?
- Listen to conference talks and Podcasts.
- Read tutorials about your favorite programming languages.
- Talk with programmers - and listen.
- Read discussions in open source repositories (Like github).
Keep recording your exploration.
- Add materials and sources to your list.
- Bookmark anything you find useful.
- Write in your own words about knowledge you gain.
- Build application and scripts after you gain knowledge.
This will help you to increase your potential
which in come will realize it into knowledge
and finally into experience
.
Curiosity and Deep dive
Fuel your potential by being curios.
Deep dive into topics your are already familiar with.
Learning should be done like you are a 5 year old experience the world anew.
Keep asking yourself “How this thing works”, deep dive into unknown regions and unfamiliar code.
Make yourself at home in strange repositories.
Learning and experiencing code will help you to become a better programmer.
The hard part is - it’s a never ending adventure.
You will do it until later in your career you will be the source of potential for others!
Until then, keep reading, writing and learning :)
Thanks for reading!