Code Switching (Literally) as a Fresh Grad — Keeping up with the Expectations
Joining the workforce after graduating is definitely the most scary but also strangely anticipative part of my life.
Working with others, delivering work with deadlines, expectations, progression woes, salary concerns, competitiveness, and the most dreaded — office politics. Nothing could have prepared me for what the working life expected of me. Even my internships were nothing like that.
I am an ordinary software developer with ordinary qualifications and ordinary everything. I graduated with a degree in Computer Science in a mid-tier university with almost-failing grades. I wasn’t able to keep up with my peers in school and was constantly falling behind regardless of the topics and content of the classes. This definitely shattered my confidence that “life would get better when i started working”.
Fear of underperforming, excessive worrying of what others think of you, and just being unconfident of your work. The unholy trifecta of what can easily be aggregated as “low self-esteem”. However, these worries do nothing other than making you underperform even if you were doing well.
I joined my first company only having prior experience with python. I attended the interview fully knowing that I would not get to use python at all. In the popular words of Bear Grylls, I had to improvise, adapt and overcome. The languages i had to learn were PHP, Typescript, HTML and CSS. The closest language to python was PHP, but the other 3, primarily front end languages, were absolutely new to me. And the worst part? I was the front end developer.
To me, software development is like mathematics. You get it, or you just don’t. And if you don’t get it, you never will. Either you put in ridiculous amounts of effort to overcome, or you just get left behind. You are a software developer in a software company. If you cannot develop software, what use are you? Yes, it’s hard to learn new languages on the fly. Yes, it’s scary to use new frameworks. But we all gotta start somewhere. If you don’t at least start walking, you will be stationary forever.
Tackling the uncertain future was definitely an extremely daunting task. What if I could not even pass my probation? What if I get fired as a fresh grad? What if I’m mediocre at best and cannot progress?
Well, I’m still here right now, employed, and doing better than I could imagine. And I would like to share what worked for me, for anyone who happens to be in the same position that I was in.
Knowing Your Place
No, I am not talking about listening to your managers and doing what you’re told. Neither am I talking about bowing your head down and being a pushover.
You are a junior developer. And a fresh grad. What better situation could you be in to learn? To make mistakes? Or to ask relentlessly? In other words, you are in control of your own career now. Expectations? Throw that out of the window. You are who you want to be. If you made an honest mistake (within your boundaries), then so be it. Be sad, be guilty, but most importantly, learn from it. Never make that same mistake again, and warn others against your mistake. Learn the full spectrum of actions and outcomes. Doing this results in that. Doing that results in this. This is software development. There is a definite logic flow to anything you do pertaining to work.
Took 4 hours to centre a div? Doesn’t matter, next time you can do it 10 minutes.
Took 5 days to get your local up and running? Fret not, at least you now know about vhosts and phpmyadmin.
Badger your seniors on solutions, on methods of thinking. How is it that the senior frontend developer can create a new page from scratch in 2 hours? Is there a certain way he does it? Perhaps he does logic → HTML → styling? Or is it better to do up the HTML + Styling simultaneously? Don’t know the answer? Then ask. Worse case, he doesn’t know. Best case? You gain invaluable knowledge that might shape the way you work forever.
Imagine you are at a character selection screen where you have to allocate your stats. Pick the stat that you want to be the strongest in. Intelligence? Charisma? It’s up to you.
You only need to do one thing.
Master the Fundamentals, Not the Language
Now, on to the more crucial advice. As a developer, you will not only have to learn languages but also frameworks. I thought I was good at python, but when I tried my hand at Flask, I felt like I was a complete newbie.
The only thing that ALL programming languages share: fundamentals and concepts. The syntax may differ greatly, but the languages have interchangeable paradigms that you should try to identify.
For example, think of ordinary languages. Every language has its own grammar and vocabulary (syntax and keywords), but the concept that every language needs to formulate a sentence (define functions) and whether its a Subject — object — verb, or a subject — verb — object sentence structure (programming paradigms; OOP or functional?) are similar. This is the part that helped me code switch effectively.
Focus less on the “how” but more on the “why”. Why does this language define things this way? Why is it better to do it this way than the way I know of ? Why should I structure my code like this? Why do I use curried functions instead of normal functions? After you have the answers to these, it will greatly help you adapt and adjust to different similar languages whenever you need it.
Don’t hesitate to be wrong or to need to research about it. Refer to your predecessor’s code. It may not be 100% correct, but it works. Why use a filter or map over a normal loop? Google it all. Did it before but forgot the reason? Google it again. Don’t stop seeking knowledge and expanding your grasp of programming.
You must understand why a language does it this way. Why not others. Convince yourself. Have debates with yourself on why can’t you do it your way. Always pursue optimal implementation. Many people have told me that there is no such thing as “the optimal implementation”, and I was just being idealistic. However, with each iteration and implementation of that code, it is always better than your previous implementation. And that’s what matters. Sure, it may not be optimal. But it has improved.
Initially, the biggest issue you will face with code-switching is just the syntax. But that is something you will get used to as you program in that language after a while. It is something that you can easily overcome. By understanding the “why” of the language, you naturally understand the “how”.
The Only One Who Can Help You is You
In the lifelong process of learning, there is only 1 person who will be with you the entire time. And that’s you. No one else, but you.
If you were worried about having trouble learning or finding the motivation, or just questioning if the time investment is worth it, my message for you is: it will be worth it.
The only person who can help you is you. By sitting there and going with the flow, you are not going to learn much. And the only thing you need as a fresh grad, is experience. A number of years of experience mean nothing if you have been doing the same thing. How else to accelerate your years of experience? Take the initiative. Find new software, technologies, or systems that you are interested in and try them out. Don’t be afraid to create repositories and run your locals to try out software and frameworks.
Just because your job doesn’t require it, doesn’t mean you can’t do it. Your time is your own. It will be tiring, but it will greatly accelerate your learning as a fresh grad. Pace yourself and manage your time effectively.
You can make a difference in your own progression and scale your experiences at your own pace. Do it for no one but yourself. Every day you will wake up to a better version of yourself. This is the prime of your life where you can do this. Make it count. Don’t stop fighting and improving.
If you’ve read this far, thank you for letting me share my story. I hope that I have at least motivated or offered some valid advice that will help you tide over this crucial moment of your life. I am still that ordinary guy from before. But one thing is for sure, I am a better version of that guy.
That was my story. Now, it’s time to write yours.