 Raise your hand if you have encountered something really hard when you've been learning tech. Everyone in the room. So me too. So as mentioned earlier on, I made a career switch and it hasn't been easy. So here I am talking to you about how to learn something hard in tech. So a little bit about me. As mentioned earlier, I'm currently a software engineer here at SP Digital under the Quality Engineering, which is also Quality Assurance. So this is a picture of the team I'm actually on the same team as Michael as well. And so as mentioned, I made a career switch from banking industry in 2017 with absolutely no programming knowledge. And after I graduated from GA, I went to a startup to work as a Quality Assurance, which is essentially to check the code quality. So I've made a lot of mistakes and I also got a lot of advice. So this is a problem that I really like. So it's whoever loves discipline, loves knowledge, but whoever hates correction is stupid. So let's begin. So the mountain climb is something that I would like to equate a journey where you're learning something new in tech too. And so there are various stages in the mountain climb. So the first is at the foot, which is right at the bottom of the mountain. And after that, you will begin scaling up the mountain during the ascent. And sometimes along the way, you will encounter some struggles. And after you struggle a bit, you'll finally reach the peak, which is right at the top. So what is my mountain climb? My mountain climb is this program called Apache JMeter. So what is Apache JMeter? It's 100% open source, pure Java application, and it's designed for load testing and measuring performance. So that's actually, it's a GUI, but there's also a test IDE which is used for fast test plan recording, multi-threading, as well as extracting data from various textual formats. So I use Apache JMeter for a project that I'm working on to test certain features for it. So this is a sample of what a blank test plan looks like in JMeter. It's not very pretty to look at, but it does its job. So this is an example of after you've run test plan. It's a little bit small to see, but this is a screenshot from one of my projects. I blanked out some sensitive data. But if you want to find out a bit more, you can ask me later. So the foot of the mountain, your journey begins here. And so there are a few pieces of advice that I actually learned. So the first is to practice when you can and prepare when you can. So when it came to Apache JMeter, there wasn't really much room for me to practice outside of the work environment. I had to essentially learn on the job, and the only data I had available to test was what I could use on the job. But if let's say you're working on something that is a lot more open source, say like JavaScript or Ruby and Rails, or something where there are many open source libraries, you can practice those on code cutters outside. And so we search on the good, the bad, and the ugly before you proceed with any framework or language on the project. So ask for help from more senior devs or even your peers. Because sometimes it takes another brain and another pair of eyes to be able to to see the same thing from a different angle. And it helps not just you, but also the other person is helping you on the understanding of the framework. And the last is telling yourself that yes, you can do it. But also maybe something else that is here that maybe is a little bit hidden is the abbreviation pray. Okay, I'm a Christian. So I do pray and I find that it does help me calm my nerves and helps to erase some of the anxiety that I have when facing something tough like this. But maybe if you are religious, you can pray to whichever higher being you believe in. So relating to my mountain, which is JMeter, so I was reading up a lot of the documentation online. And admittedly it's not always very user friendly. And so because I went to look up tutorials on YouTube, as well as other articles that have been written. And also I asked more senior devs. In this case, it was the project's tech lead for helping understanding the documentation and the articles even more. And so they're good at the bend and ugly, right? So the really ugly and not so good thing is a super clunky UI as you've seen earlier. And why is it clunky? Because if you want to select on something, you can't just select the div on the button, but you have to select the text which frustrated me for so long because I was wondering why is this IDE not even working? Until my tech lead was saying, look, I know it's frustrating, but you have to actually put your mouse on the text itself and then you right click or you click it together to work. And so it's like... And when I heard that, I actually really felt like flipping the table. So yeah. But the good thing about JMeter is that it's really, really powerful. And I think it's like if you understand how to use it properly, you can use it to do many, many powerful things that a lot of software nowadays can't do. And it was really suitable because there was a very complicated test logic behind the project that I was doing and JMeter was a lot more suited for it than, say, Postman, which is what you normally use for APIs. So they're sent when you're scaling the mountain. And so when you are scaling the mountain, it's good to have your shepherd with you. So what exactly is a shepherd? So a shepherd is traditionally an ethnic nomadic group in Nepal, which traditionally very elite mountaineers and they have helped a lot of people, including the very first people to reach Mount Everest as the guides and also as climbing support. So who is a shepherd in a tech journey? So someone who is usually more experienced and or more skilled than you in terms of whatever you're learning is able to guide you along the journey and also can help to carry your burdens. And also, there's a debate about team versus soul effort. Is it better to have someone with you or is it better to learn it on your own? So there are many pros and cons when it comes to this. So it's like if you want to go fast, go alone. And if you want to go far, go together. So this is the African proverb. So it really depends on your own learning preference. Some of you may learn better by learning on your own or some of you may prefer to sit down with someone else and have the person explain to you. And so when it came to JMeter, I started off more of a soul effort. So as mentioned, I was reading a lot of documentation and tutorials. I was doing a lot of exploratory clicking because I've been tested. So it's like we do exploratory testing of whatever product that we ask to test. So that's my natural response. But I realized it was pretty limited to what kind of progress I could be making. Because I found even running the application was a bit of a challenge. You can't go to Launchpad and find Apache JMeter, click on it and open it. You actually have to go through all the folders to where you downloaded the JMeter. And then you click on the .exe file and then you can run the IDE. So it's not so user friendly, but it still does its job. And so I approached the tech lead for advice and help. And after he went through the documentation, he was able to explain to me in a way that was a lot easier for me to understand. And he also highlighted quotes of the application, like the UI related issues ahead. And so here comes where all the tough times come. So it can be slippery slope going up a learning journey. And so we have to learn how to cope when we struggle over rainfall. And so it's not always smooth sailing. And sometimes you will encounter certain challenges that you don't expect when you chose to framework, even after doing all your research. So it's like, so good practice is ready to prepare for the worst, hope for the best. And also do due diligence, which is try to research as much as you can and prepare yourself so that at least it's easier for you to come up with a plan B if need be. And so when it came to the project, adapting to the various needs wasn't really as simple as copying and pasting. So it's not as though I've already done a test plan for scenario A. I can then apply it to scenario B, C, D, et cetera. But the thing is that for the project, there are at least 50 scenarios that we had to cater for. But not everyone was a bit, was quite unique. So we chose a bit of a challenge as well. So we needed to analyze and understand the different aspects a lot more clearly. And then we have to adapt it to writing the test cases for JMeter. So it really can be quite taxing, but the struggle is actually worth it. Another thing that we encountered was because we needed to upload files to JMeter, and this was a very, very important part of the project. But when I did the exploratory testing, exploratory part of the application, I couldn't find a button or a function and say, oh, upload file here. So I was thinking to myself, if we can't, if we can't find this function, then how are we going to do it? So I went to search online, but every time I searched, it only just redirected me to third-party tools. But the thing is I needed to build the entire application within JMeter. So it was a bit of a challenge. So it's like the solution in the end, Charles and I were. Yes, I was pretty much like this most of the time, and I really, really struggled with trying to go through different solutions, and when it doesn't work, I would just get frustrated. And yes, let me end on the secret. The tech lead had to do this as well. So even he himself was also really frustrated during the course of the project. And so what was the solution? If you're curious, we had to run in the command line. You have to change the directory to where you start your JMeter, and then you have to type this command just to upload. For in this case, it's .csvfile. So it was something that you have to do a lot of experimentation. It's not even in the IDE. This is somewhere like a bit of off-road kind of way to get to the destination. And so after struggling for so long, you finally reached a peak. Yay! So it's like you finally managed to learn something hard, and that is something worth celebrating, because you have finally learned something a lot more than your past self, and you have improved. So but don't wait until you have finished mastering whatever you're learning. When you're climbing, you usually don't expect yourself to reach the peak in one shot, but there are usually base camps along the way. So when you have reached your base camp and your tech learning journey, celebrate it, because it's not easy to reach that stage. And also give yourself a pat on the back, because you deserve to be acknowledged that you have put in the effort and time to learn something hard. And so JMeter, I would say that I'm able to understand it enough to be able to do the job well, but I'm still no expert. I'm still my complete journey in learning JMeter is still a long way more to go to be complete. And so it's like now when I'm done doing what needs to be done, there's probably a bit more room for me to experiment around. Maybe try out adding or removing certain stages, see whether it's more efficient. And so it's like maybe I can use it to apply to other projects in the long run, because in SP Digital, I heard that not a lot of people actually know how to use JMeter. So maybe we might use it for future projects, who knows. And so nothing should break if I do my Git commits properly, right? Well, I've had some advantages with Git, but really that is a story for another time. And so no fellow devs, there will be many more mountains to climb in the future. Or even now, it's like, so this is Dragon's Back Maroo in Malaysia, it's near Selangor. It's a very famous certain KAM trail that runners and mountain bikers use to train their endurance. And as you can see from the picture, there's a lot of different slopes, a lot of different peaks and valleys along the way, so it's not a very easy trail. So likewise, even the most senior software engineers and their whole journey will face mountains in the programming career from time to time. Even a very senior devs like Michael also probably has experienced a lot of difficulties for learning new things. And so, but don't be discouraged, because really what is the worst thing that could happen as long as you don't drop the production database? Never ever do that. It hasn't happened to me before, but just don't be the first to try. So it's like, so it takes as much as it takes a village to raise the child, it takes a community of support to grow and train developers. Everyone of you here is on the learning journey, but we can all help each other to grow. And also, sometimes you need to teach someone else how to do something for you to learn better in that thing. And so enjoy the journey. It's going to be a long way. It's probably going to be in the industry for next few years or maybe even decades. So it's like, enjoy the ride. You're going to be in for the long haul. And who knows? You may be destined to scale at even greater heights. And so, Junior Devs, I hope you're prepared. Remember to PRAY. And I wish you all the best in your tech journey. Thank you.