So, you've finished college or maybe you are just thinking of getting into software development. First thing that comes into your mind is how you are going to get your foot in the door, find a job and bootstrap your career.
I am writing this post for two reasons:
It's my first post after getting my first job and I want it to signify my journey until now. Kind of like a landmark ⛳
I want every person out there, whether they are into software or anything else to know one thing: If you can dream it, you can achieve it. If you put the work and the hours, it's inevitable that you will finally succeed, no matter how many times you fail. The key is to never stop failing.
Don't get me wrong on this, I certainly don't believe in "working for free". I firmly believe that any kind of work should be fairly paid. What I am trying to say here, is that in this early stage what you are looking for is experience, not money. Like a good investor, you should aim for long-term gains by investing in yourself and not minor, short-term profits. The experience that you will gain working on real projects is far more important than some pocket money, because it will raise your intrinsic value. This will allow you to get your foot in the door and work from there. However, this will not always be the case, depending on where you live, so if you can get paid for your time, that is of course the best scenario.
So, the currency of exchange here is opportunity. You are given the opportunity to demonstrate your eagerness to learn and grow, in exchange for a lucky strike: The employer's opportunity to find a great developer. You are basically providing nothing to the employer. In contrast, they risk putting a burden on their already productive senior employees, by making them having to look over you. They have the chance, though, to get work done for free, plus, end up with a talented individual, if they are lucky and you prove yourself to be good. Consequently, it's a win-win situation. Not all employers understand or embrace this and that's why getting an internship is not as easy as it sounds.
When I got an internship at a small company, I signed up for 6 months of full-time, unpaid labour. But I didn't care. All I wanted was to apply my almost non-existent knowledge. Fueled by motivation to learn, I just wanted to work on a real, professional environment. I ended up learning an immense amount of stuff, growing exponentially each day and kickstarting my career. I even got paid for a mini-project, during the end of this period. What's even better is that for next year I continued doing business with the owner, as a freelancer, engaging on much bigger projects and making a good amount of money, while again learning a ton of stuff!
By focusing on things that matter, the results will come and so will the money.
You should adopt a continuous learning mentality. If you want to escape mediocrity, that's the least you can do and getting a job as a self-taught software engineer is not what the average Joe does. Especially in programming, this will be an essential part of your job, so you'd better get accustomed to it early in your career. Treat learning as investing money in a growing company: The ROI (return of investment) is going to be greater than the initial investment and your future self happier 😀
I am a big fan of "learning by doing". Something in our brains works better when we apply what we learn. It's really important that you stop procrastinating and actually practice what you learn. Tutorial hell is real. Learned about APIs today? Great, spin up a server and write some simple code using your language of choice. Build stuff, experiment. It's the only real way to learn, no book or tutorial by itself will transform your brain and form new neurons for it. Don't just passively absorb information, put it to work! Act like a functional-programming function: Given an input, always return a value 😉
Never stop learning new things, especially in this early stage.
So you've gotten your foot in the door. Awesome! Now, how you'll end up, is completely up to you. You should've gathered a lot of knowledge during this "initialization" period. Knowledge that will allow you to get an entry-level job. Key points to keep in mind while applying are the following:
Never skip a job posting that seems "too much" for you. Apply for any role that seems relevant to what you love doing. Job postings have a tendency to be a bit out of context, so don't let that scare you away. If it seems good overall, apply! Afterall, it's a numbers' game.
Market yourself the right way. I managed to get in touch with 15 companies, get 5 job offers and have the choice to reject another 8. Now, you might ask yourself, how is this possible, especially for an entry-level candidate without a CS degree (actually, without a degree at all, I am pending gradute 😂)? I correctly presented myself. My key selling points were the skills I had acquired during freelancing, my attitude and my willingness to learn and grow. Hiring managers, especially the smart ones, mainly look for communicative people with the right mindset and soft skills, then for skilled engineers. Technical skills can be learned at any point in time, attitude cannot.
You can't know how you will be evaluated and what they will appreciate on you. I literally had people come to me with an offer, saying that I stood out to them because I didn't have a degree! Dead serious. I was blown away. I had a certain confidence on my skills and mindset, but having someone offering me a job, because of my lack of a degree was on another level. They appreciated my ability to learn new and different, cross-disciplinary stuff, my self-discipline and most of all my love for coding.
Always be frank and honest. In our time, transparency of character is a rare commodity and very much appreciated. Enhance your resume, but don't lie claiming skills you don't actually have. You will eventually expose yourself.
I would deviate a bit from the standard "portfolio advice" and say that having a portfolio should not be the end goal, but a nice side-effect of your "learning by doing" process. Nevertheless, having a simple online resume, a polished LinkedIn account and some code to show are a must.
Keep your resume simple, concise and not more than one page. Find a nice template and create something beautiful that will get their attention. Trust me on this, if you build it correctly, you will get that phone call: Showcase your enthusiasm and motivation and be comprehensive about the skills they seek, not just what you deem important.
No matter what, just find a way to get started. You are not interested in money, you are interested in the opportunity. If you have the right mindset, you will end up giving them an opportunity, not them.
Never stop learning. It's about the process, not the event. By continuously exposing yourself to new information you are raising your skills and with them, your value.
After feeling ready to jump in, create a clean and simple resume and start applying to any role you see fit. You have nothing to lose by applying to someone who won't even get in touch, but you have a lot to lose -the job 🤔- by not applying to a potential hire.
Try to avoid excess stress by working longer than normal hours. It's only going to harm your productivity and result in a burn-out, which in many aspects is a bad thing. Remember, it's not a sprint, it's a marathon.
Thanks for reading!