I've questioned myself a lot. I'll often wonder if I'm where I'm supposed to be in terms of where I'm at in my career. Am I messing up by learning this language or by having interests in this or that. I'm always telling myself I need to be immersing myself or get at least a bit familiar with testing, app security, dev ops, and other software engineering principles.
Am I writing clean, secure, efficient code? Am I becoming a more efficient problem solver? I want to become the a master wizard goddess of tech, how do I go about that?
On paper, I've done great things for someone with not even a few years of experience. I've given several conference talks on accessibility where people say they've learned a lot from, written tutorials people liked, and have taken ownership of features on both small- and large-scale applications. I've also been appointed front-end lead on a few things too. I've freelanced and also taken contract positions. I've also managed to not get fired for lack of performance or technical aptitude (lol).
I don't really have a way of measuring my success. I try often not to compare my journey to others because I'm prone to getting really competitive and over-worrying myself more than I want to.
What else am I doing? I'm learning Golang because I like to overwhelm myself for absolutely no reason (jk). But really I'm learning it because I've been really wanting to expand my skillset outside of front-end development. I know you're probably thinking why not just start building full stack apps with like Nodejs and Express? Yeah okay sure but dare to be different lol. (I have actually built a few side projects with Node and Express btw). I see languages as merely tools that all of have their strengths and weaknesses. I'm seeking to get familiar with a more statically typed language and also be able to really dive into the backend. I also spend the night reading a book on C the programming language to understand a little about the mother language that influenced the languages I use today. I don't currently aim to have knowledge in C...yet. I want to narrow my focus to just a few things when it comes to studies.
I’m honestly not too concerned with learning every language or framework. I care more about how to solve problems better, thinking about edge cases and how to be an even better contributor to any codebase I touch.
I often think about how I've probably placed myself in a box or put limitations on myself because of my fear of not being good enough to do the job. I've turned down past opportunities because I've felt like I wasn't ready and think so many of us have had those thoughts. I don't often give myself the credit I need. This probably stems from past personal experiences where I had to strive for excellence and accept nothing less. I am my toughest critic. It's good to have standards but not to the point where you question your worthiness of being in this industry.
Do I consider myself to be a senior engineer? I try not to label myself. I usually do go for senior roles (because those are the ones who gives me interviews lol) and however they assess my value and fit me on the team is it how it goes. I usually think if I can do the job and do it well, then boom.
So because I've been a front-end developer my whole career, I sort of expect that my next role will probably involve that. But I'm really hoping to be able to dig into different parts of the stack and hone my backend knowledge. Sounds dope. I'm open to developer advocate roles because I basically do alot of the typical job duties already out of love (helping the developer community, giving talks, writing tutorials, etc) but ehh.
Ok, so I don't want you to think I'm some kind of a computer science addict who lives and breathes code and naturally studies several hours a day. In fact, I'm quite the opposite. You can check my backstory but essentially, I wasn't even introduced to what coding was until a few years ago. But when I discovered (and then months afterwards actually committed to it), I went wild with it. To the point where I've suffered burnout SO. MANY. TIMES. It got to the point where I shuddered at the thought of opening up my editor. I actually had to take a break for a few months. I just got back into the groove of things not so long ago and trying not to do it again. I study when I want to, which currently is a few hours a day. Okay lately it's been 6 hours a day on average but that's because I'm learning Go and it's so fun and I'm driven by the curiosity to learn a bit of about what goes into building scalable, fast-performing backends.
- Write more blogs about technical stuff: Sharing what I learn is probably the core of why I love coding. I love learning something and then creating tutorials where I break down the steps of how I learned something or solved a problem and attempt to explain this the best way I can. I imagine becoming a better "communicator of code" (a phrase I use to describe someone who can explain to other humans how to do tech stuff) makes you a more senior engineer because you can be able to be a better collaborator on a team and help solve problems with people who are both experienced and inexperienced.
- Livestream on Twitch..no seriously: I have a massive fear of live coding. I really do. However I want to combat that but in a way that doesn't make me feel too uncomfortable. So starting this week I'll be livestreaming my studies on Twitch and helping people go through some of Codecademy's courses. I study every day for several hours just for fun so I don't think I'd mind doing it live? I like sharing my notes and don't mind helping people understand whatever they are learning better. Follow me on Twitter to check out for my streaming schedule.
- Contribute to open source: This is mainly because I want even more experience with ownership of features and working with teams and having my code openly dissected and reviewed by even more experienced folks.
- Embrace that being a software developer means to be an eternal student: This is really the field where you can always learn something new. I take pride in the fact that I like to dig deeper to understand how everything works and I've been studying every day for a bit solely because I've fallen back in love with coding.
- Becoming a better problem solver: Just always bettering my CS knowledge and practicing how to implement data structures more and more. I'm not always the most motivated to do so but I do know it's important.
- Just keep going: You can't beat experience. Experience is how you get better at a language, approach solving problems and become a more well rounded developer. You need to fail a million different ways in order to grow. A million different ways of creating bugs leads to you learning a million different ways to not make those mistakes again lol.
- Remind myself that even the best of engineers fail interviews...ALOT: I've watched someone I've known (someone who has been coding since he was 8, has learned the ins and outs of computer science to a level of depth I can't even comprehend and has held nothing but senior roles since he was 18) fail interviews and be given some of the most critical feedback ever. Sometimes your code gets picked apart and exes you out for even just the little things. I have to remember that even the best fail and that's okay. That doesn't make you a bad engineer. That doesn't make you a bad engineer. That doesn't make you a bad engineer. You just keep it freaking move on to the next and keep your head held high. You get right back to building on that side project or practicing Leet code problems. Cry if you must cuz that's normal, but at some point you gotta move forward. I don't really know if this is an open diary entry or if I'm giving advice to be honest but if you felt any part of this post let me know. This is a first draft and I hit publish or else I probably would've scrapped this but I think this could potentially help someone else outside of myself. ## What Will I Do Next?
- Expect a cheatsheet on Vim later today
- Need to update my personal blog site so I can be more professional (lol)
- Go live on Twitch and do my thing