selfTaught && findMentor

8 min readDec 11, 2017

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 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:

  • it’s optional to take a computer science degree to become a software developer, if you’re passionate enough and motivated to learn (but be aware that University courses help you to grasp basic concepts easily);
  • the learning process never ends, because things are constantly evolving.

In the following paragraphs I will tell you a story about 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 go 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 grown incrementally 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 a project to another it happens that some things, like authentication, 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 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’re a self-taught or you’ll fall behind.

When I started my journey, I chose PHP, MySQL and HTML. But any technological stack you choose, a 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 world around us starts 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 though I was a real software developer ready to create the next Facebook. Thank God, it was just a 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 up your motivation in a self-taught process is difficult due to the easy-to-procrastinate nature of online learning. I remember when I started to explore 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 to watch 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 during my learning process I developed a path that contains 7 checkpoints. This 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-terms 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 feed 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, 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 not to 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 gained skills — build real projects using everything you have learned.
  • Ask for advice always — there are stupid questions. Yes, that’s right. 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 (keep track of your progress and keep your end goal in mind). This is where a mentor makes all the difference. They can help you with the following:

  • give you the right information sources (tutorials, articles, books etc.);
  • help you create a learning plan;
  • monitor your learning curve;
  • show you good practices;
  • increase 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, 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. In a single sentence, a mentor will enhance the learning process that suits you.

I did not even think it could be such helpful to become a mentee, until I was one. Do you remember I mentioned about luck? When Cipri became my mentor was a lucky moment. He led 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 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 put 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.

Originally published at