Intro
Hi there, me again, it's been a while since I last wrote an article, I think my last one was in 2021, but this issue of people learning to code has been coming up and am tired of giving the same advice over and over, so am gonna straight this up once and for all, I will then be pointing all to this am about to share here, share it with anyone you know who could be helped by it and am also sure you will also learn a thing or two, and excuse some grammar mistakes and whatnots, well am a writer writing poems, books, and journals secretly but I have not been writing much lately, but let's dive in.
These are the mistakes or problems I see most in people starting out to learn how to code, especially self-learners or self-taught and they stop them from achieving and becoming what they want to achieve, cause programming just like any other profession, career, or skill, it's a journey of a lifetime and has all the kind of similar dynamics in other fields, and that takes us to our first problem.
Problem 1, Wrong Mindset And Poor Expectations!
Well let's face it, programming in general is more like climbing a mountain than climbing a hill, It's possible and many have done it but that does not mean it's easy, there's a difference between simple and easy, and well programming can be simple but it's never easy, for example, turn on your computer, a laptop or whatever it is and open any text editor even notepad can do, it comes with every operating system or something like it, and yeah start typing, type whatever you want, so what's hard on that, simple isn't it?
Now that's simple but how you make those things you type to turn into a working program, something that people can use worldwide, something that can do its job without even your presence, now that, that's not easy, and the problem with most people starting out expect it to be easy, they expect programming to be easy as climbing a hill not climbing a mountain and this way even their preparations are short-sighted and low effort, they think because they know how to turn on a computer, play a song in VLC or use power point, they will ace this in no time, like even someone they know is doing it, so well what will fail huh?
Hmm, it is so easy to think like that, but am sorry to tell you, this is not anything like that, cause here, it is not about using programs like VLC, or those on your computer, or typing a word document, it's actually making those programs, it's making the word document software, it's making google than using it and you have to stretch beyond your normal thinking, mindset and skill-sets, you have to grow into someone else, a maker, someone who makes programs not who use them, in fact much of your time will turn from usage time to making time, you will spend less time on Tiktok for example and more time on making social media apps like Tiktok for example, so as a starter, stop trying to make programming concepts fit so much into what you know, a cup can't be filled with milk if it's full already, if something is not what you expected, take it as it is, learn the new way, also reduce time you spent in using things, start questioning how they work, how does Shazam recognize the song that is playing, how does Whatsapp work, this is what will help you moving forward as a programmer.
Problem 2, Thinking There Are Shortcuts? Sorry!!!
Now this one is much similar to the first one that it still stems from thinking in easy instead of being really realistic that yes this is possible, but with some effort and time, yet here, someone really buys into get it easy and quick schemes similar to get rich quick schemes, they will just take your money for nothing, cause I know bootcamps are promising to make you full stack in 3 months or weeks, I don't even believe there's anything like fullstack, well you can be able to do frontend and backend but that does not mean your full stack, having a system running in all different aspects of it takes more than connecting to a database, making an api and consuming it with a frontend, there challenges you may not know about, scalling the system, dev Ops, security, and more and knowing all these one person takes a lot, at least you should be at CTO level.
This theory of fullstack going around is misleading, maybe your software engineer or developer without stating whether you do backend or frontend cause you can do both, and even then with your so called fullstack titles, you gravitate towards one end than the other, and am sure you can't beat the most proficient person in those two ends respectively, a so called fullstack dev can't beat a senior or principal frontend developer in frontend, so let's put that lie away, focus on something and get good, start with one end, either backend or frontend and get good at it, you can diversify into other fields later and it will even be much easier, will talk more on this in coming points but when bootcamps and fake gurus tell you to make you fullstack in no time, try to ask them how long it took them to be where they are, I just pray they be honest with you, it takes some time.
There's a reason why most jobs demand at least 3 years of experience, though that's also flat cause years in the field don't necessarily translate to expertise, like one can still be in a field for more time and be average in it but I guess the recruiter's hope is at least they will get less mediocrity in this way, however all in all, truth is being good in anything takes time and many failures, by the time you become solid as a programmer you have seen a couple of bugs, you have hit some pitfalls and asked whether you made right choice starting out and all that, personally I think for a junior developer at least needs 3 months in, a moderate 3 years in and then from there one can start thinking about polishing themselves more into senior roles, but you can't have a baby this month by impregnating 9 women, it will still take 9 months for each to give you a baby, so please, don't listen to those who tell you there shortcuts in this, yes you can pick up some tips, that can maybe make your learning a bit easier and a bit quicker than average but not by drastic metrics, you can't learn all these things in 3 weeks or crazy less time, try asking around what people it took them to learn a particular technology and get your average.
That's what it literary takes unless your the next Einstein for which I don't think even Einstein just woke up into a physics genius, read his story you will he almost had lived learning physics all his life, so you want this, put in what it takes and be patient, it will finally come to pass!
Problem 3, Getting Into Advanced Stuff Too Early, Skipping The Basics!
Well this one am also a victim of it, as a self taught I skipped a lot of computer science concepts like how bits work in a computer, hell yeah am even still planning to really try to understand pointers in C from the little I know about them cause they cut across many languages and can help you write efficient programs cause you know how they deal with memory under the hood, but see, these things I skipped keep on haunting me like ghosts from deja' vu, they keep on coming on surface when I try to do some things, for example, am trying to learn rust these days and it's super hard for me, and my belief, one of the reasons why is because I didn't have more on basics, like what are structs, enums, pattern matching, memory safety like that borrowing concept, garbage collection and all that, cause my background is in JavaScript and there these things are not there or at least not commonly used, good thing I had been doing some typescript so at least enums and strict typing is not new to me but some concepts are, I didn't know about structs for example, never even knew why in Js we have double ampersand like &&
and not a single one &
and well just learned that the other is for bitwise operations, and well did you know?
So I really now understand the importance of having basics and most importantly general programming or computer science basics, cause look the withstanding of a tower depends on it's foundation, so dear don't rush, don't jump into frameworks and meta frameworks without grasping the languages they are made in instead, you doing react, next js, Django and others but when we take away the frameworks you know nothing, I see a lot of beginners jump onto react for example without a solid understanding of JavaScript as a language and in this case when using a framework, they can't tell what is framework level abstraction or really language feature, and that is really bad cause it means you can't expand beyond a framework, in simple say your a frameworker not a programmer, and not an engineer, and let's say you didn't know and had skipped these basics.
Go back and note down everything you think you need to know in basics and keep increasing your knowledge on fundamentals and basics every day, it's called tech debt, know your debt and pay it every day, this is what am doing, and if you just starting, please don't rush to things and advanced concepts, I know you want to look cool, and knowing but, there's no meaning in that, it boils down to what you can do, and you can't do great if you can't even do basic things, you get me? Alright lets move on!
Problem 4, You Want To Do Everything Or You Doing It Not Knowing, Aren't You?
Well well well, I can see you wanted to do web dev, or want to but don't even know what that means really, but let's say, you want to build websites and web apps, so you had started with HTML, CSS, and JavaScript, but, while you were learning those, someone you met, maybe online, told you to learn python instead or any other technology, like hey even java is still cool. Wait, am saying Python or Java are bad, not really I also love Python for example but they're wrong if what you intend to become or do does not align with what your learning, for example, you want to do web development, you want to build websites and web apps, but look at you, your learning C, C++, Java, Python, etc and well that's not bad but I would expect a web developer to start with the technologies of the web, html, CSS and JavaScript as I would expect a backend developer to not waste time initially in CSS land.
The point here is focus, have some focus, pick what you want to do, web dev, mobile dev, systems, data science etc and then choose the technologies you want to use and stick to your path, everyone will try to convince you otherwise to use their stack they're using but that's a trap, and we can also all agree no one really even knows what they're doing, the tech they love today may end up outdated tomorrow, angular js was once hot and rocking, it's in google's grave-yard now but am sure some people would still preach it to you now days, and so with any other technology, so just pick what you want.
Ba-ba-ba but hold on... in a panda voice, "But well am just starting don't know what to pick, I can't tell cause I have not tried and explored all to see what works for me", well yes I understand where you coming from, but again you don't need months and years to know whether you will work with well with something or not, these days I even use the 100s seconds technic, I follow some youtube channel called fireship, you should check it out if you not subscribed to it yet, Jeff Delany there has a way of dramatizing and making hard concepts simple, and almost has 100s video on any technology, framework or language, so you can watch those and you only need that 100s to know about all basic concepts of a technology and these can help you determine whether you will learn something indepth or not, that has been a good way for me to assess what to learn next, another way if you want to earn first from your skills after learning to code, is look for job posts and see what skills they expect say for a junor frontend developer and go learn those, and look at many job posts not one to have things that you see listed everywhere, those are what are used in real world and are most likely what you should learn.
But overall you don't need weeks or 6 hours, 10 hours tutorials to know whether a tech is good for you and knowing one tech will make it easier to learn the other, for me it took me at least 2 weeks I tried Kotlin, Java, Python, PHP and others I don't remember but when I met JavaScript somehow things just looked nice to me, the syntax and having the feedback in browser to see what I have made was really much exciting, and that was it, I have done JavaScript since for some years now and I have just got into python and rust recently, but I chose to become a frontend developer, got a roadmap and sticked with it, I have just started to transition away from a senior frontend role lately, but over the time all these kept coming but I knew what I wanted, I picked up react at some point then later, everyone was either doing angular or vue then, I didn't care, and this has proved to be what all experts in any field do!
Get something and get so good at it, and it actually makes getting into other things easier, for example having done Js for some years, It literary took me 3 days to pick up Python basics and be able to do basic stuff in it, though mastery will take me some but you get it, loops and functions and control flow if else stuff will be almost the same in any other language just different syntax, so don't rush, understand one language well, python, js or whatever and it will be really much easier for you to pick up any other. A lot of people I started with keep asking me stuff because they rushed, take it slow but seriously, it is not a race, if one learned in a month, it's ok if for you it takes 3 months, or a year or more, it's about understanding not getting there first.
These trends will come and pass but underlying basics will stay the same, same with frameworks, languages will always remain, so pick anything don't get distracted by those telling you oh this is hot now, it won't be hot later, these are tools, pick some and get efficient in them to finish whatever work you have to do. You can have an idea about everything but you can't truly know everything, you can learn anything, but you can't learn everything, no one does, Everyone just has a set of technologies they are proficient in and others they just have an idea about, settle down, first get something solidified!
Problem 5, From Tutorial Hell To Mediocrity!
What is tutorial hell, is when you keep on watching more and more tutorials without actually testing if you learning anything, you see watching a tutorial until the end does not mean you learned anything, you bet?
Ok have you ever watched a tutorial, the guy does things, everything is working, and then when you close that video player or course and get into your IDE and try to do it on your own, things are not coming out of your head, it's like you can't remember what exactly he did at that point, and if you did sometimes, you get errors, yet in the tutorial that particular stage doing exactly what you did pass well, now why is yours not working, you go and watch another tutorial and another tutorial and another tutorial in a loop, and this phenomenon keeps happening again, and again, and welcome to tutorial hell, and there is when you try to look into solutions sometimes, which lead you to projects hell, where now your like learning by hands-on is the way to go, I follow the tutorial I code what they code, and yeah that's better, project-based learning sure, but well that's not enough.
You will indeed learn but end-up in 2 probable situations, you have projects hell, a lot of unfinished projects and you keep on staring more, this is because every tutorial keeps on teaching you how to build so so clone, YouTube clone, amazon clone etc and these projects can bore you as you try to follow through, you end up not finishing them on the start of another tutorial, so this takes me to the second situation, you finish a few projects and enter into mediocrity, I have seen a lot of developers get into an interview not knowing each other but it turns out they have similar projects, like how is this possible, well it turns out they followed same tutorials or also did so so clones, WhatsApp clone, YouTube clone etc clone, please watch that tutorial, see how things are done, challenge yourself to build a unique project.
Get an idea, and challenge yourself to build it from scratch without following a tutorial exactly, well it might be inspired by a clone tutorial but not the same exactly, for example instead of just making a todo app, I make mine where users can share their todos with others, and it also has reminders, like try to be more creative, and this will help you not be among mediocre, it will make you grow and make things more fun and you will at least be most likely to finish such projects, you won't lock into tutorial land and will have unique projects in interviews.
Problem 6, Do You Really Know Where To Look?
Huh, I know as a beginner you think you know where to look, but hear me say this, are you sure? You buy Udemy, you subscribe to some wired YouTube channels or read some classic books recommended, well that's good except, you need to be careful on where you look, if you look in the wrong direction, you will see a wrong impression.
One of the most amazing things I loved as a self-taught about the current age we in is that you can learn anything and most cases even for free, yes free, personally I have never bought any Udemy course or so, and am not saying buying them is stupid, if you have money invest in yourself, it's the best investment you can make, but again, don't just buy into stuff, try to see benchmarks, what are top programming YouTube channels, fireship, traversy media, programming with mosh, etc, and beauty is if one instructor doesn't sound well for you or whatever, you can easily switch, this is not like school where even if you hate your chemistry teacher they're all you got, you can choose who you want to learn from, this is the internet, we have more information to the point we are drowning in it, even those trying to look and don't have money, come on, there a lot of open programs out there free to make you skill up.
Personally I learned with w3schools, solo learn, joined Google African Developer Program for 2 years, 30 days of JavaScript by wes boss, linkedln learning, freecode camp, youtube, css tricks and many more all for free, so just get yourself up and learn, any paid course has a comparably free course out there, some are even from big universities like Havard's CS50, ALX, etc, like these are there and waiting for you to learn, go take them up, don't use money as an excuse, know where to look, seek developer roadmaps, roadmap.sh is also a great resource, I also have some resources I prepared and can share you can write to me at hssnkizz@gmail.com if you want something, but know where to look, avoid aggressive gurus who claim how much they know, avoid scammy bootcamps telling you to make you fullstack in no time, be humble and scratch the internet, what you want is there, invest time in finding good resources for yourself, bookmark them and keep learning.
Problem 7, Beginners Don't Know What They Don't Know!
Well, I see you ask, how can one know what they don't know? well the answer is I also don't know but I know that I don't know, I know that, well I don't know abcd stuff, know what you don't know, you can't climb a mountain when you can't even see the peak, you can't walk a journey you know not how long it is, so know what you don't know, as a beginner, know why one framework is recommended over the other why it might also as well not fit in some scenarios, and what are alternatives, what are your options, don't just pick stuff and go fool hardy with it, it will even be easy for someone to convince you otherwise by just telling you how so so language is better than the other.
If you know your options you can debate them out why you chose that particular one, am not saying learn everything, just learn why a particular technology exists, what particular problems does it solve, how is it different from each other and when it should not be used, like just basic info, this will help you decide what to learn and what to avoid, make a list of things you also need to learn, have a personal roadmap or list of things you want to learn and keep assessing how far you have reached on the journey, if you need to stick them somewhere you can see them everyday, it will help you much better than just learning, you can do very bad at beating your roadmap or this task in particular but it will be good cause you really know what and where you failing, what you haven't covered what's the scope ahead of you and this will just move you aside the crowd of your fellows!
Problem 8, Not Being Comfortable With Abstraction!
So after you have realized what you don't know, you got need to learn to be comfortable with it, we all have stuff we don't know, we all have tech debt, don't be too hard on yourself, but to bring this in another light, programming is also abstractions on top of abstractions, in fact there whole design patterns in software like facade pattern that spring from this idea, from zeroes and ones, we get upto complex applications and programs, one layer on top of another, so it's all abstractions, all the way down, but people starting out are not familiar with this phenomenon, they think everything should make sense right away, and that's not quiet what you get in programming especially when you just starting,initially you will see a language you don't understand, and they will say that symbol means something and some logic, and you got to do maths without values, write a function that adds commas to numbers, the number can be n, and all that other jargon, this will be frustrating and confusing but bare it, everything will make sense at some time to come, just like connecting dots, you don't connect them looking forward, you connect them looking back, you will reach a point where you all the pieces you collected over time make the puzzle complete, just stick to learning, knowing little is the worst you could get, cause you only got a glimpse of what is possible, after all there already people who understand these symbols, and languages, so can you!
But don't be so hard on yourself if you don't get stuff right away, thatβs what programming is about you have to be comfortable with abstract thinking, for example, how can we determine that of two people who to give the next mango given on what they have already, we only want to give the one with less, but without knowing how many next mangoes n
are coming, you see that's simple isn't it, but it has some very little unkwon factor, we don't know how many mangoes will come, so if we just give to one who has little now, they might have the most next time, so we need to do our check every time a new mango comes in isntead of only once, you see that's how these go, just get used to the abstraction, and you will get it over time, and math taught in school helps but not so much, cause sometimes there they give you real values to work with, split 100 mangoes to 2 people versus the example we saw earlier, so just get confortable to this kind of thinking.
Problem 9, They Learn In A Cubicle Cave!
A cubicle cave can be imagined as a small tidy place, sometimes usually underground. Unfortunately, for most beginners this is where they learn and grow from, they don't see the sun, and sometimes your in a dense slam area where you can't meet other programmers or you just don't have enough resources, try much to expose yourself as possible as you can, attend developer meetups at least one in a month, be part of online developer forums, groups and communities, be one reddit, devto, daily dev, twitter, StackOverflow, and literaly everywhere where devs hangout from, for us we even have whatsapp groups, join those, you will feel more peace going through tough learning curves with people who think like you, those who hide in caves that's a mistake, and if it's not something you can control, say in your area there no devs you can hangout with, make yourself a whole dev circle and friends online, this is very important.
If you don't expose yourself, your closing yourself to connections who can refer you to jobs, people who can help you on your journey and share your progress and code and ask for feedback in day light, these will make you a better developer than otherwise, expose yourself, I learned from a deep village, I needed a taxi to go see my developer friend, I had old gadgets or none even at some point, internet was the only thing I bought when my fellows bought new cloth and stuff, but it somehow paid out later, and much of the jobs I have got and even to date are due to referral and exposure, don't make a mistake to be on your own, find other communities and groups dealing in the technology you doing, chill with them and you will grow much faster!
Problem 10, Quick Quiting!!!
Yes really, I know how this goes, your new to this, trying to learn on your own maybe, stuff is not making sense, and people are not even willing to help you, you feel like giving up. Well go on, give up, but before you actually do, reflect on all the points I talked about earlier, and try to read all the success stories of famous programmers or other programmers in your circle and see how it was for them, you think it was quick, it came easy, no not really. I have seen many beginners try this for a very short time with very little effort and give up, and start excuses, well am busy, well I don't have so so, well come on, this is not easy as I said on first point, if it was everyone would have been doing it and they would never tie such big payments to it, you got to earn it, this is not a field where you can hide in while incompetent, you can't fake it, either you know what you doing or don't.
But that does not mean it's not possible, it is people have and are still making it, but you need some patience and efforts, some sleepless nights some times, others take a lot of coffee and all that, it has a big reward thus big efforts needed, ask yourself always if your not making this mistake of quiting too early, it's tricky to know when you should really quite but assess this well before you actually do, and ask yourself if really there no solutions to your challenges, better ask someone for second person opinions to know how to proceed.
Bonus: Not Knowing How To Ask!
Hmmm, I remember once upon a time I was really desperate had a bug and wanted some help, I posted on reddit and a guy answered with a very strong kind of harsh language, he didn't help me with the bug, but with something much more, the art of asking for help, many starters when they come to ask, in worst case they have not made any research or looking up, immediately when they see error they jump into inbox and be like help me, come on, sometimes even the answer is the first result on google.
I remember once one asked me such, they were getting an error and I knew the answer cause I had faced it 2 weeks back, and it was right there on stackoveflow, first result on google, I told them to do some search and claimed they just wanted help, pointed them to stackoverflow link and it had exactly what they wanted, so please before you bother people with your problems and bugs, they're busy and they too have problems, first do some work and try solving your problems on your own before you go out there asking for help, and am not saying asking for help is bad, we all ask for help in some way, we all need it but first try, googling it, try stackoverflow, reddit, devto like all developer platforms just to be sure it's not there, and modern day also try chat GPT, though you should be careful with it, it can give false answers or give you stuff that works but you don't understand make sure you understand the solution line by line, and if all of these fail, then this is how you askβ¦
Hey or hello, am trying to do a and am using b and am getting error c and I have tried google, etc, I can't get this to work, replace abc as per your circumstances but in that you let someone know 1, what your trying to do, 2, what technology your using, and 3 what efforts you have tried, they won't tell you what you have tried already or spend again more time just trying to assess the error your getting, and they will be more likely to help cause you shown you have tried, I use this framework of asking to ask for help like on twitter even add a screenshot or github link to code and I usually get helped compared when I just was like help me help me.
And this goes too to those who seek mentors, be mentor-able in the first place, no one will want to mentor you if your not self-driven and self learning, this has to be your second nature no one will walk the journey for you, they will just walk along with you though, polish yourself as a person too before you go asking people to be your mentor, what have you done as a person, what shows your teachable, I see a lot of starters making this mistake and somehow feel like others should be obliged to help them, that's not how this works, everyone had to aid themselves in someway, being self taught I know this, and I appreciate the experience, I want to help others get what I didn't get of course, the help and resources and guidance, but off course only those who too are remarkable.
Conclusion
So to conclude, programming is like climbing a mountain, you need to know how high the mountain is before climbing, what tools you need to climb, pick tools that you will enjoy to work with it doesn't matter much provided you finally climb the mountain and don't give up along the way, expose yourself to strangers you find on way, ask for help, but after trying and the top mountain summit awaits, if you have read this far and your beginning, I can assure you your almost a must success those I have talked about don't even read upto here, thanks for reading, share this if you think it would help a friend, always available if you need any guidance or help, bye!!!
By Hussein Kizz - 11 September 2023
Contact: hssnkizz@gmail.com
Top comments (2)
Wow this is a really good write up @husseinkizz . Well done π.
I like how you presented your thoughts with your personal experiences and with such great detail. This is definitely a good resource that every aspiring developer should have.
I've learned alot personally especially on paying my tech debt π, am going to work on that and also not being comfortable with abstractions... I agree with you. It's helps alot when you have a good grounding on the fundamentals.
I appreciate your work and effort on coming up with this resource. π―
Thanks and welcome, that's good to hear!