Self-taught (adjective) = Having acquired knowledge or skill on one’s own initiative rather than through formal instruction or training.
Mentor (noun) = An experienced and trusted adviser.
Definitions taken from the Oxford Dictionaries platform.
To complete the explanation of the title, allow me to validate the choice of the other elements:
- selfTaught, findMentor - you’re right, these two represent the camel case notation.
- && - yes, you’re right again! It’s the logical AND operator of most programming languages.
A recent poll on Stack Overflow showed that 30% of software developers never took a computer science class or any other university courses in this area and 90% consider themselves kind of self-taught. What do these facts actually mean? From my point of view they show two important facets of learning programming:
- if you’re passionate and motivated enough to learn, getting a computer science degree is only optional; (but be aware that University courses help you in grasping the basic concepts easily);
- the learning process never ends, because things are constantly evolving.
In the following paragraphs I will tell you a story related to these two facts. Ready? Let's start!
Where am I now?
Currently, besides being a PHP Developer employee, I’m also heading towards getting my University of Computer Science degree. It would have been very easy to just work and not go to University, because I received the first job offer before the Academic year had started. However, I chose to do it and the main reasons were to have the experience, do networking and make friends. Also, I founded a community in Cluj-Napoca with the mission to create an enabling environment for knowledge transfer between IT professionals and students.
Every story has a beginning...
Some people had difficulties understanding how I passed an interview when most people my age were trying to decide what to do with their lives. I admit, I also had a bit of luck, but “the secret” is that I worked. Hard. I really think there’s no luck without work. I started reading articles and going through tutorials for beginners. Also, I played with what I learned from them. A page which displays “Hello world” from an HTML document, a page which displays a “Hello world” message from a PHP script and I have incrementally increased the difficulty until I crafted my first application, an online library.
There are hundreds of free University courses, books, articles, tutorials and many people are attracted to sources that promise to turn you from zero-to-hero in 30 days. Based on our human nature, we want to be the best, with as little effort as possible. Which is impossible! It’s a must to work hard to become heroes and, more than that, if we can, we should help others by sharing our knowledge. The information is a click away, and it’s ready to change anyone’s life.
You’re a self-taught or you’ll fall behind...
From one project to another, some things (like authentication) happen to be present almost every time. But the authentication system can be done using PHP sessions or bearer token. This happens because every year new programming techniques emerge. Also, new tools and libraries are being developed in the attempt to solve a problem and later shared with the software developers community to help them when they’re faced with the same problem. In some projects, using what I already learned was enough. In other projects I had to learn and apply new approaches. Shortly, as a software developer you’ll either become self-taught or you’ll fall behind.
When I started my journey, I chose PHP, MySQL and HTML. But whichever technological stack you choose, one thing is clear: the process of gaining experience and dexterity is continuous. No matter if you choose the front-end, the back-end side or both. No matter if you choose to enroll at University, become a self-taught developer or both. Skills are learned through practice and struggling with problems every day. First, we learn by applying a set of information and rules. After a while, we’ve already gained some experience but we’re still learning by example and we often need instructions. Until one day… that day when the people around us start to ask for our help, because we started applying the same set of rules but in different ways, we made important choices and the level of responsibility increased.
I remember when I finished my first application, a procedural PHP app. I felt like I was building a rocket, I even thought I was a real software developer ready to create the next Facebook. Thank God it was just temporary excitement until I realized that the procedural way is older and I had to go further in acquiring knowledge.
Life beats movies and practice beats theory
Keeping your motivation up in a self-taught process is difficult due to the easy-to-procrastinate nature of online learning. I remember when I started exploring a wide subject, debated by many people since 1980: Object Oriented Programming (OOP). For the first time in the PHP journey, I felt I was overwhelmed. I often fell into the trap of overthinking about technical questions, such as which resource to choose, which tool is the best or which implementation is appropriate. So I started watching Prison Break. Yes, I’m serious! I couldn’t keep my motivation up and I replaced the self-taught process with a simple task: watching a TV show. After a while, my conscience started to “kick in” and I got back on track. To avoid further situations like this, throughout my learning process I developed for myself a path containing 7 checkpoints. These checkpoints helped me stay on the road and reach my goals:
- Establish a strong and doable goal - knowing what you want to accomplish will keep you motivated.
- Break it into short-term goals - smaller goals can be more easily accomplished and monitored, to avoid procrastination.
- Research carefully to find your best sources of information - to find those sources that meet your needs in the best possible way. If you have the possibility, ask friends for some recommendations. You will get some honest reviews about the learning platforms, books etc. that you should use for your benefit. This will help you a lot.
- Create a learning plan - and try to schedule some learning time-slots for every week. This way you will have an overview of your learning progress at all times. You will know what you’ve already learned and what you still have to learn to reach your end goal. In busy weeks, try to not overlook the schedule.
- Optimize the plan - from time to time, sum up all your experiences to figure out how you can improve your learning journey for the future.
- Practice your acquired skills - build real projects using everything you have learned.
- Ask for advice always - yes, that’s right, there are stupid questions. But you will learn from them. And, later on, you’ll have something to laugh about.
Use shortcuts. Nobody judges you
It’s easy to say “in three months I’ll learn the Functional Programming concepts on my own”. The hardest part is when you need to actually sit down and really learn something, because the self-learning process integrates management and monitoring. Actually, it integrates self-management (time, resources, steps to follow) and self-monitoring (keeping track of your progress and keeping your end goal in mind). This is where a mentor makes all the difference. They can help you with the following:
- giving you the right information sources (tutorials, articles, books etc.);
- helping you create a learning plan;
- monitoring your learning curve;
- showing you good practices;
- boosting your confidence and communication skills.
Maybe you’ll say “You’re right! However, a University has a curriculum for you (learning plan), teachers create courses (right information sources) and give you advice. Also, they monitor your evolution during those courses”. I totally agree with you. But a mentor improves all of these and, most importantly, he/she does so in an informal context. A mentor tracks your evolution and helps you adjust the learning plan to your needs. A mentor identifies your knowledge gaps and knows the right amount of interest and effort you should invest in every major aspect of your learning process. In a nutshell, a mentor will enhance the learning process that suits you.
I did not even think it could be so helpful to become a mentee, until I was one. Do you remember I mentioned about the importance of luck? When Cipri became my mentor it was a lucky moment. He guided me in my Magento 1 journey for seven months (and, trust me, Magento 1 is not an easy platform to learn). Then I realized the benefits of a mentor in a learning process and I promised myself that one day I would become a mentor for other people as well. There is nothing more beautiful than sharing your knowledge and not expecting anything in return.
Like a friend of mine once said: "You’ll still need to do most of the work yourself (remember the “self” part from “selfTaught”), but at least you’ll have access to some shortcuts".
Every story has an ending…*
Of all the programming languages I have learned, I chose to work with PHP: the programming language which I taught myself. Of all the learning experiences, learning while being assisted by a mentor was, by far, the best experience. This is why I definitely recommend it to you. You should give it a go if you haven’t done this before. If you are in the middle of a self-taught process right now, stay focused and motivated. This journey will not be an easy one and there will be times when you feel it’s not the right thing for you. I felt it myself! But keep in mind: the best accomplishments are those in which you invest time and effort.
I hope this article will help you. Feel free to share your experience in the comments section.
*Every story has an ending, which makes room for another story.