How to Make It Happen as a Self-Taught Programmer: What Nobody Told Me

JMath
7 min readMar 3, 2019

Full disclosure: I wrote the following article months ago, but only recently found the courage to publish it.

I am sitting at the coffee shop where my job search began. At last, I went from only knowing a minimal amount about programming and computer science to programming for a well established and international company. Out of gratitude for the fact that there are so many resources at my disposal which guided me to this point, I decided that now is the time for me to join the advice-giving side of the conversation about how to succeed as a self-taught programmer.

If you’re reading this, you are probably looking for advice on how to achieve your goal of starting a career in programming. There is plenty of advice out there on the internet. It mostly all says the same stuff — contribute to open source projects, send out lots of job applications, go to local meet-ups for developers, learn the most popular libraries and frameworks. All of that is great, but there are some points that were missed that would put you ahead of everyone who is following the usual advice when you are looking for a job. Here’s what everyone else isn’t saying:

Become well rounded.

You never know when the next job description is looking for something that the other entry level programmers probably won’t have. You should get a decent understanding of things that programmers sometimes might skip because they don’t directly relate to their idea of what their career should be. Libraries and tools for things like networking, data science, dev-ops, and analytics, and even some weird stuff that you may have never heard of should be in your arsenal. You don’t need to have very deep knowledge of these things, but you should know enough to be dangerous. Nobody is expecting you to be a master of anything as an entry level programmer, but they do expect you to be able to learn about technology quickly and effectively.

Be interesting. Make programs that turn heads.

Don’t just learn how to make a blog or a basic messaging micro-service. Those are good, but you should move past them. All of your competitors in the job market know how to make blogs and messaging micro-services. If you are stronger with frontend, make frontends that turn heads. You can get great ideas or inspiration from the other websites, Codepen.io , or even from asking your friends what they think would look cool. If you are more of a backend developer, make something that does something crazy with data. Use real data. It doesn’t matter if it is scraped from the internet, called from an API, retrieved from a blockchain, or gathered from any combination of data sources. All that matters is that you do something that gives people something to talk about and remember you for. Nobody cares about a visualization of random, meaningless, or fake data. Make sure that you are interested in what you are working on. This is important because you will spend more time thinking of creative ideas for improving your program if you are genuinely interested in seeing it come to life instead of just putting it on your Github profile to show that you have mastered the basics. Before you start a project, ask yourself the following question: “Would I still want to see this project come to life if I couldn’t show the world that I wrote the code?”. If the answer is “no”, dig deeper.

Experiment with other libraries. Don’t only learn what is in demand.

Please don’t misinterpret this one. The typical in-demand libraries and frameworks are important. Be familiar with them. However, don’t be afraid of switching to another library as a better solution to doing something complicated — especially if your idea is one that sticks out. Dare to be different. A new library or framework might be intimidating at first, but maybe you will find a library that’s very existence will improve your vision for your program. It happens. The possibilities are endless, but the first step is thinking outside the box. You should be more attracted to libraries and frameworks that allow for a broader level of creativity.

Take online learning courses from websites like LinkedIn Learning, Coursera and Udemy.

If you were wondering where the best place is for getting your hands dirty with a new library or framework are — in my humble opinion — it is online video tutorial courses. YouTube and Google are great learning resources, but the above mentioned platforms allow you to ask questions, take quizzes, and can give you a step-by-step path to understanding large amounts of information using professional instructors. Even if you can’t absorb all of the information, as you work through projects in the future you can go back to a specific video to refresh your knowledge of whatever you are struggling with. These courses can help you become more well rounded and even introduce you to features of a framework, library, or technology that you weren’t aware of because you weren’t googling those features. Don’t be afraid to sign up for a course that you know you probably won’t finish. You don’t need to complete a full course to gain knowledge, you just need to commit to learning. Yes, they cost money, but you will certainly be getting the better end of the tradeoff between knowledge and money. Also, it is worth mentioning that it is very important to not just watch the videos, but to work alongside the tutorial and then use what you learned immediately and routinely after watching the videos. At the very least, take notes with a pen and paper as you watch. Never idly binge-watch tutorials like they are your favorite Netflix show and expect to retain the information in a useful way.

Make a program tailored to the industry or company that you are applying for.

It is better to be a top candidate for a few specific companies than a mediocre candidate for dozens of companies. If you know what industry you want to work in, make programs that are useful in that industry. If you have done your research about a company or the position that you are applying to, you should have a guess at what tools are used in the average workday. You should be able to demonstrate proficiency with those skills. If there is a tool that you really don’t have and don’t have time to learn, you should at least read past the “getting started” documentation before the interview.

In your first round interview, you should find out specifically what tools the company uses and how they use them. If you get a second round interview, you should come to the interview with a program already made using the tools which you asked about in the first interview. This may seem like a big challenge or a lot of effort to put into something that isn’t a sure thing, but if you do this then you will show your prospective employer that you can work quickly, are dedicated, fit in unquestionably to the position, and stand out from all of the other candidates. I can almost guarantee that the other candidates are not going to be exceeding expectations in this way for their second round interviews. At worst, you learned something new and have another program to add to your Github profile. Think this won’t work? This strategy helped me secure my job despite the fact that I accidentally completed the whiteboard coding challenge using a function from the wrong programming language. If you really want the job, you’ll put in the effort to seal the deal. This leads me to my next point…

Work harder than everyone else.

It sounds cliché and it might be obvious, but I’m serious. If you truly want to start a career in something as challenging and competitive as programming then you will be most effective if you noticeably have more self-discipline than everyone around you. Instead of watching TV before bed, watch tutorials or write code. Write pseudo-code for one of your projects or review notes when you are riding the subway or bus to work. It is okay to say no to making plans with friends in order to reach the goals that you had for the week or finish working on a new idea that excites you (just promise them that you will be more available when you get your job). If you aren’t happy to stay home and write code on a Friday night then you won’t be happy to write code in a full-time career. You may be sacrificing some of your social life, but this period of overdrive is temporary and can be very rewarding once you have finally succeeded.

The journey to becoming a self-taught programmer is one where a lot of time can be wasted and a lot of code can be written in vain. Above all else, it is most important to stay focused on your vision for your programs as well as your career, give these visions room to grow, keep your code and your notes organized, set goals, write tests, and then achieve what you set out to do. I hope you enjoyed this article and that it will improve your journey… If you have read this far then you have definitely spent enough time reading about how to become successful for now. You should close Medium, open your IDE, and write some code.

Happy coding!

--

--

JMath

One part software developer, one part nomad, two parts curiosity.