Need Help! Talk to an expert: +234 705 333 7790
Learn with us
Need Help! Talk to an expert: +234 705 333 7790
STRINGIFY

How I mastered multiple languages as a programmer

How I mastered multiple languages as a programmer

An Interview with Bassey Akan

Yes, it’s quite an interesting one, but it’s riddled with misconceptions that in the sense of multiple languages, like there’s some advantage of mastering multiple languages.

The real thing really is the way I see programming or programming languages or any piece of technology is more or less like a tool. There is a goal intended with those tools. Like you have a hammer. A hammer is required to fit in nails into make furniture. Then you have other tools, maybe a spanner or there is a lot more tools in which people use to do A and B. Knowing how to use these tools doesn’t make you a better engineer or make you a better craftsman. It only makes you able to do the tasks. What matters is how efficiently you can use those tools to achieve the goal you need. And that is why there needs to be an emphasis on the practicability of what you’re trying to do, right?

You don’t learn languages for the sake of learning those languages. You learn them because you are attempting to do something. In the terms of a carpenter, you don’t just learn how to hit nails into wood, you learn how to do so because you’re trying to build furniture. Because the truth is, if you learn how to hit nails in wood, you are really not accomplishing, you’re not literally doing anything really useful in the long run. Just knowing how to hit nails doesn’t really bring anything productive. And what happens is when you get fed up of playing around with nails and random piece of wood lying around, the issue becomes that you get tired of playing with a hammer, right? And then probably because you’ve not played with it so long or use it so long, it runs out of favor, it runs out of your knowledge. And that’s the same thing that happens with programming languages. When we don’t use something naturally, it becomes domant knowledge and our brain tends to forget. And that is why when you are trying to learn anything, any piece of technology, not just programming languages or maybe a framework, you need to stay very practical and ensure that it definitely rounds up to your goals as a technology enthusiast or as a programmer, as anything you’re actually involved in. And it’s actually the best advice one can get when they literally want to move into technology. 

If one is looking towards mastering multiple programming languages, what that tells me about the person is that they’re open minded to learning new tech. And it’s a good thing for someone who’s in technology because it’s a very, will I say dynamic or a fast pace area in which technology tends to move very fast. So, like I said, I just addressed the misconception in which it seems that learning multiple programming languages seems you are a better person at technology. But no, it’s just you learn how to use multiple tools but without actually drafting or without actually tailoring it to a concrete goal that gets you somewhere as a person that works in technology. 

Personally, in my own personal experience, when I was back in school, it was just learn, learn, learn. And I had the opportunity of learning Java, learning C++, JavaScript, Python. I was racking all these technologies. And the problem I did find myself landing into, especially when I started to search for jobs, is people praise the fact that I learnt so many languages, but where the practical aspects were of it, I did not see it coming out right. I could grind multiple books and learn the program or learn the language at the surface level and really not get anywhere. So, you need to also read yourself of the misconception that you need to learn multiple languages in a way to improve. It’s only something that happens as you grow in tech. And so to any beginners, that are actually looking at this as a way to help their learning abilities. I would say you should stick to one first, master one to a point in which you are considered intermediate or pro, right? For example, for me that is JavaScript. And so there’s something called transferability of knowledge, right? Our brain learns basically very well when we can relate what we know with new things. So it becomes easier when you’re actually learning new languages. You begin to draw the links. 

How does C++ do memory management?

How does JavaScript do it?

Oh, JavaScript kind of leaves it up in the Air, C++ does it this exact way. You need to ensure that you’re managing. It’s very strict about types. You begin to understand why certain things work in a certain language and they’re not done in another language. Why is it that JavaScript is so flimsy or so free with restrictions? And why is it that something like C++ is so strict? You begin to see and draw the parallels and this aids your learning because you spend less time actually learning a new language than just actually taking your old knowledge and transferring it. Because most programming languages are actually the same, just different syntax and different approaches to doing practically the same thing. Because one, the other language kinds of optimizes the way they do the other thing. For example, the way compiler works in Go is different from the way it works in Rust. And that Rust is so very, very fast compared to Go, compared to every other language that exists. And so if you’re doing like microsystems development, you look towards Rust. If you’re building for the blockchain, you look towards Rust and never look towards JavaScript or Python, because you don’t want a slow application, and that will matter, especially on the blockchain where you learn multiple transactions at the same time. 

So the main goal really is to then ask yourself the question, what exactly am I learning this language for? Why do I want to learn this? And apart from asking yourself the question, have a project at hand you want to build. Lay the building blocks and lay the foundation to actually start to build that stuff. And every time you’re learning something with that language, try to put the pieces together to build that. For example, if you’re building like a video game or something and you’re learning like Rust or you’re learning C++, start to put the little pieces you learn about variables. Start defining the variables in a new language, right? The thing is, once you master one language, you know it to an intermediate level, it gets easier from there because all you have to do is when you’re learning a new language oh, I know JavaScript. So, okay, how are they doing XYZ that I do in JavaScript, how they doing it in C++ or in Java? Right? When you ask yourself these questions, it makes it easier for you to learn. Because the problem is we learn stuff that we just forget at some point. I was learning Flutter as a framework and I spent the whole weekend learning it. And what happened is, as the weekend passed by, I’ve learnt the technology, I used it less, I did one little thing, I didn’t use it anymore. I didn’t have a job that I was using it for. The knowledge just went out of sync in my head. I mean, I can’t remember how to write for Flutter. Maybe if I watch the tutorial, I’ll pick it up again. So the point is, start from something that you know, that you know well. And if you don’t know any language, pick a simple one so you don’t get demotivated like Python or JavaScript, right? Pick those simple languages to learn at first. Master them to an intermediate level. Pick up books about these languages. I can recommend Eloquent JavaScript for JavaScript to master exactly how it works. Then when you’re done, you can now start exploring. But don’t explore for the sake of exploring, because that is indeed dangerous. You will just begin to rackup languages you don’t need. For example, it’s like you’re buying different type of hammers, but all the hammers do is beating down nails, right? But you see a professional carpenter might be buying a different type of hammer because he knows the texture of the nail he has. There’s a lot more nuance to why he’s getting those type of hammers because they have different kind of use cases and he knows how to play with them. 

So what I’m trying to drive at is, as a technology person, you need to understand why you are going for a certain language, why you are moving towards that area and that is the best way to motivate your learning. It takes time. And I would say another thing be patient with yourself. Don’t try to outpace yourself when learning something new. Stay practical, very very practical. If you can try building something immediately, you start learning a language, start building it. How do I build this and start building it as you are learning the language, instead of taking hundreds of YouTube videos by programming nudge on YouTube and trying to learn ABC, it won’t really help because the truth is, technology is a practical field. It’s not something you read in the books, right? It’s something you actually live out. And the more you stick to the practical aspect of it, the more you understand it. And as you grow as a technology person, you begin to understand the nuances about that technology. And that is why you specialize and begin to, okay, why should I improve this? For example, I write a lot of react and the issue with that is I’m custom, I know how to build custom screens, I know how to build screens, I know how to do anything, right? But now, all of a sudden,I’m beginning to gravitate towards ensuring I know how to work, making my work scalable, making my work maintainable. So, I’m looking at things like how do you create components, libraries that define the brand of it, that kind of represents the brand of your company, so it’s easier to extend the library, update components that are already being utilized in the application. So it’s easy for you to go from one developer to another to document exactly every single thing that we’re doing as developers, right? Writing docs, all those things I wouldn’t have known as a junior dev or even sometimes as an intermediate dev. But as I began to grow and see the use cases I see in my own life or my own experience, really, of why I need these things, then I began to improve my skills. Because the thing about technology never stops going. Keep improving. It’s only about where your motivations lie and what exactly at the moment is the problem. 

Remember, as technology people, your job primarily is to solve problems. Stick close to solving problems, improve your skill as a problem solver. The technology utilized to do that doesn’t really matter. It’s your skill of solving problems, trying to identify how best to solve it, how to abstract a problem in such a way that the computer can understand it. So you need to even as though you want to understand multiple languages, and that is commendable as a technology person because it shows you open minded to improvement, right? 

Try to also stay very practical, like I said earlier. Practical, practical, practical, very important when it comes to technology. Try to stay close to the practical, not so much theory. Try to build from day one. Figure it out as you’re building. Get it by balls. The more balls you have, the more learning experience is provided. So that is my best advice for picking up multiple languages. And I’ve also addressed the misconceptions, as one have when you talk about multiple languages, because it’s not just about the language, it’s about how well you think about problems and what best solves the problem at the moment.

Leave a Comment

Your email address will not be published. Required fields are marked *