— Software engineering — 4 min read
Read this if you want to know what mistakes I made, so you can decide for yourself if you want to make them too.
Someone told me earlier today to get a good job, you can't just apply (he meant, you need to network/ have existing connections). Then I thought, he's right: I've never gotten a job by applying, except the one at an Ice Rink. My first software job was when I was randomly called by a recruiter, and they pitched a job to me. I didn't even do Computer Science, and graduated from Engineering a few months before their call. I was spending my days, weeks and months coding, learning to become a software engineer! A few weeks later, I was a Backend Software Engineer at a really cool company. Don't worry, I didn't get fired, but I made some mistakes and this article helps me reflect on what I should do now & beyond.
Problem: I didn't know how important it is to just build your own project, instead of following tutorials. I confidently tell people now, tutorials suck my motivation. That is the best way I can put it. There is no reason to learn how to implement authentication if you don't even have a project that needs it. Over time, I've noticed other people find this too.
Solution: Never do online courses or watch tutorials just because they sound interesting. If you hear a new technology is interesting or even programming is fun. Do it to see for yourself. Immediately go to the 'Getting started section' of the technology or programming language. Don't watch someone else or follow along in their tutorial. Its either filled with stuff you don't know (overwhelming) or too easy (underwhelming). The more pain you're facing in your project, the more motivation you'll have to watch a few videos or read articles, and thats okay. I am problem & project driven. I don't know about you. PS: I still enjoy short videos like Fireship, but I know I don't get nearly as much out of it compared to when I design and code programs myself.
Problem: I love side projects because they teach you things a lot quicker than following tutorials. You can also get a feeling for the latest tech and libraries that are being written. Often though, it did not tie in with what I did in my software engineering job, and so it wasn't being augmented by my efforts outside of work. Because of this, I often thought to myself, the developer experience of so-and-so language was much better than the one we have here, and it sometimes got frustrating. Till now, Java has dissapointed me: there are way too many annotations, its slow & I found it generally tiring to work with. I feel like the learning curve for other languages are more interesting. However, I see Java still being used by one or two startups probably because of their employees' past-experience, although I don't see it very often at all.
cracking the coding interview.
Problem: So many things interest me: the CI/CD pipeline, the security vulnerabilities, and any of the applications running alongside the one I work on. I argue that spending time on these other applications give me context, and help me understand my application better.
Solution: This 'problem' only existed because I was relatively new: its a very interesting new world I've entered, and its natural to want to absorb all of it. There's a benefit to understanding more things, but focus is also important. As Xun Zi said, "The person attempting to travel two roads at once will get nowhere." Over time, my productivity would increase as the puzzle pieces together.