Day 95/#100DaysOfCode. A Reflection and Tips
Published: 2022-08-07 01:43:00

I have been getting several DMs from people who needed direction and as usual, I am happy to be the Cheshire Cat. But you, Alice, gotta find the tea party on your own. Reason being is, our goals may be different so what we are learning would be different too. 

I decided to write this to compile some experiences I garnered in the last 95 days of the challenge so that those who are just jumping in have a bit of direction. 

Here are are some tips:
1. Follow the #100DaysOfChallenge in Twitter. Common mistake is being scared to join because you won't be able to do it everyday therefore losing the challenge. Guess what? The challenge doesn't give you prize money. It is solely for the purpose of you to improve your skills as a programmer. Unless if you're a robot, you will miss a day or two. I have missed a week a couple of times because I went on a room makeover rampage so that my programming station is neat and tidy. I have also taken a week off to read books on how to learn efficiently. All these contributed to my final goal (yet to be achieved). Even if the founder of the challenge decides to kick me out of the challenge for not complying to the 1-hour of coding per day, I will still do it anyway because of the valuable connections I make.
2. Connect with those doing the same challenge. Pay close attention to those who are doing the same thing as you because you'll be learning a lot from them. This is how I found Ammar, my faithful Python sparring buddy who's now an active contributor to a project I started. So much so that he takes so much ownership of the project that I am very touched. Real team work. 
3. At the same time, don't disregard those who don't do the same thing as you because if you have a project in mind, chances are you'll need to learn stuff they know too and maybe even rope them in for a future project together. For an example, I am focusing solely on backend. But I keep mental notes about frontend terminology, technology and people because my personal project requires a fair bit of it and my future projects definitely would require these skills and people. 
4. When it comes to personal projects, it has been advised by those who hire that a few to several projects is a sweet spot to impress the companies you're after. I decided to take on one lofty personal project that I am obsessed about despite my mentor's warning. Am I suffering? Yes. Will I stop it? No. Will I still listen to him? Half-half. Thanks for understanding my stubbornness, Matt.
5. When DMing female programmers and you're a male, it is a good idea to err on the other side of caution. We females are the minority in the tech scene and tend to be quite guarded. It's a good practice to ask the questions you ask male programmers and don't ask questions you don't ask male programmers like, "Are you married?". I understand questions like this is a polite one in some cultures but the tech scene also has its own culture and this is one of them. Don't take it personal. Just adjust accordingly.
6. Stack Overflow's guide on asking questions came across as cold to me at first. But along the journey, I understood why it is as such because now I am adopting the same guide when people ask me questions. It saves your time and the person's you're asking the questions to. Like everything, it takes practice to ask good effective questions. If you're anything like me, you'll start by asking poor questions. Normal. Keep asking. 
7. Managing frustration is a crucial process for beginners. I feel like once you learn to manage your frustrations, you'll be hit the ground running. Again, in order to learn to manage it, you first need to experience the crying, whining, smashing keyboards (I hope not), endless memes to cheer you up. But once you learned that these are not gonna help, you'll find a method or two to manage your frustration more effectively. My methods are running and handwriting in my daily journal. Before that I was biting my hand and whining.
8. As a new programmer, I was trying to solve coding problems right off the bat. I would hit roadblocks immediately and would feel at loss for a long time. So I googled, "How to solve programming problems". That got me reading materials on the mindset of programmers and how they think. That was the missing piece I had. I didn't know how to think like a programmer. I ended up reading the first chapter of How To _Think Like a Programmer_ by _V Anton Spraul_ and I started to think more methodically when solving problems. It's a guide that's super useful. I cannot recommend it enough. 
9. During your journey, you'll receive a lot of encouragement and even constant adulation if you're consistent. Use these as benchmark but never let it stroke your ego and make you rest on your laurel. I personally appreciate the votes of confidence but I still won't call myself a programmer until I complete my first project. It's just an Impostor Syndrome thing and I can only believe that I am not an impostor if I can prove to myself that I can complete this personal project. All the adulating remarks people say are received gracefully and used as fuel to get me to my destination.  
10. The first 2 months of learning Python, I was completely lost. I was just going through the chapters in a Python Udemy course I took, doing the code as instructed by the instructor. But when it was time to solve problems, I was completely stunned and went into a state of catatonia. Then I realised that I had to change the way I learn. My mindset was, learn, learn, learn, solve problems because sufficient materials should have been covered by the instructor before I attempted the solving, right? Just like in traditional schooling system. I was wrong. Learning programming requires different mindset. I took a week off coding and finished reading Ultralearning by Scott F Young in 36 hours, my fastest reading record. I started practicing what he taught. I was obsessed in finding ways to change the way I learn. I cannot recommend this book enough for self-taught developers. 
11. I started learning by the methods espoused by Scott F Young. I see improvement because the goal was clear so the paths started showing up. I started writing handwritten notes to organise my thoughts (my method not his). I couldn't type my notes in the computer at that point of time. I had not handwritten for 20 years and it was affecting my cognitive ability. I was skipping letters and my handwriting weren't even legible. So you can imagine the state of my problem-solving ability. I had to write fast the diagrams etc to solidify my understanding. Figuring out which button to click takes longer than picking a different coloured pen and drawing the arrow straight. I couldn't afford to lose that train of thought. I wrote copious amount of notes although I know I am a programmer-to-be so I should be utilising the computer instead but at that point of time, I couldn't. It's a process. Now I don't handwrite anymore. I already have methods to organise my thought processes. Again, please find How To Think Like A Programmer by V Anton Spraul to learn methods and strategies to solve problems. 
12. Remove all previous self and people identification. When I started, my self-concept was heavily "Mom, housewife for 13 years, failure, come from this country, of this ethnicity, already quite old to be learning programming so might be quite slow, female". This is counterproductive and put a lot of blocks in my learning. I started thinking of myself as a blank slate. I am a programmer who's learning. I am intelligent. I am not technical yet but I will be. Everyone else in the tech scene is too. I don't categorize people by age, religion, ethnicity, marital status, sexual orientation, etc. We live in the digital world. All these lines are getting blurred. So don't box yourself into categories. You are who you want to be. People are whoever they want to be. 
13. You'll be distracted during the challenge. Twitter is so seductive. This is where your power of focus is tested. It is  much more alluring to post 'progress' and wait for the adulation of your ever-adoring followers but you know it for yourself if you're really getting quality stuff stuck in your head. Do what you need to do to focus. Take a break. One day, one week, one month. I still believe in the connection so complete abandonment of social media to focus to me is not ideal. But you do you.

There are more thoughts in my head but I hope my sharing helps you on your journey. I have learned so much from people who shared their journey. Aziza Baratova, Sebastian Felling, Ammar Azman, Gabor Pfalzer, Sushmita Dutta, Roseline Bassey, Dave Wellstedt, Aditi Deshpande, Martin Blore and so many more. Sometimes what they shared are mostly mindset stuff and directions and very little technical stuff. As a beginner, this is what I needed. Now I am ready to switch gears. 

Don't forget to help others along the way. You'll only get better when you give as much as you take. 

My best wishes to you and see you all soon after my one-month break!