For anyone whose ambition is to become a professional software developer, being an outsider looking in can be extremely intimidating. It’s one thing to consider taking up programming as a hobby, but to consider it as a career move can be overwhelming. There are so many questions that a prospective developer asks — many I asked about myself. So for everyone out there considering software development as a career, I’ve compiled the following list of commonly asked/thought questions, and will do my best to answer them based on my own experience. For those of you that just want a summary, I will include a TL;DR at the bottom, as well as resources that I found helpful as I was learning.
How Do I Begin?
The truth is, there really is no best way to get started. Are some ways better than others? Sure, why not. But the most important step is just getting started in the first place. From my own experience, it was much easier to learn about web development to begin with. I started off using the basic tutorials from Code Academy, then moved on to find a project based course on StackSkills. The best way to learn is to do, so finding a mentor or tutorial to guide you through building an actual project is a fantastic way to pick up a lot of different skills quickly.
My first project was a Ruby on Rails web app that connected developers, investors, and business owners, to promote collaboration and help with networking. Throughout the course that led me through this project I learned valuable skills for creating a UI, setting up a server, dealing with security and user accounts, and integrating online payment processing using Stripe. Having an actual project to show on my portfolio was integral to my success in securing my first professional job.
The major takeaway from this is to just start programming! Don’t worry too much about all the different technology available, just pick up the basics to begin with, everything else will fall into place naturally as you start on more and more ambitious projects.
Which Language Is The Best?
Now as you might have picked up from the last section, I don’t really believe that there is a best option out there. Now some of you may be thinking, but surely there is some objective way that language X is better than Y? Well, this is true in some ways — I’ve found that the worst thing you can do as a developer to stunt your growth is to become overly attached to a specific language, framework, or other technology.
You will likely come across individuals who champion specific technology above all others; however, it’s important to remember that languages and frameworks are just tools. Just as you wouldn’t use ONLY a hammer to build a house, sometimes really nailing that project requires many different tools, sometimes ones that you haven’t used before. If you learn the fundamentals of programming and computer science, that will serve you much better than worrying about frameworks and languages.
My best advice is to just keep an open mind, and be a continuous learner. No matter how experienced you become, there will always be more to pick up. I personally find this extremely motivating, as you can make new discoveries almost every day! At some point you may develop a certain preference for specific languages or frameworks, this is normal and completely fine — just be aware that sometimes another tool will be more suited to your needs.
I’ve Heard (Insert Buzzword Here) Is In Demand, Should I Learn It?
Whether it’s Cloud Architecture, AI, Big Data, or Machine Learning, there is one thing for certain — there will always be something new right around the corner. The most important thing to know is that the world of tech is ever changing, and more important than jumping on the hottest new technology is finding something you love doing. Trust me. Nothing will make you more miserable than bashing your head against your desk as you try to figure out a problem related to a technology you aren’t really even that interested in.
Running into roadblocks while learning is completely normal, you will probably encounter moments where you have no clue what to do. For many developers this problem solving is both the most exciting and most awful part of the work. While you are stumped by the problem, you may think to yourself “I have no idea what I’m doing, I’m not qualified to do this”, but once you finally figure it out, the sense of accomplishment and pride you feel will make it all worth it. That struggle to overcome obstacles is what will make your grow as a professional.
Being able to work through challenges is extremely important to succeed as a developer, so be kind to yourself, and patient as you progress through learning.
How Do I Get My First Job?
This one is a little tricky to answer, there are many different paths but ultimately they all have one thing in common — prove you can do the job. Yup, that’s right. Sound simple? Well, as you’ve probably guessed it isn’t necessarily that straight forward, so let me try and lay out some of the details for you:
Some employers will require at least a bachelor’s in computer science, computer engineering, or another related field. Some will require that you at least have a bachelor’s, and others still don’t really care about your formal education so much as your proven competency as a developer. Having a BS in computer science is probably the easiest path to securing your first job; however, it is completely manageable in the other two scenarios.
I personally had a bachelors degree, but it was unrelated to computer science. I can’t speak personally on the challenges of securing work without a degree, but I have heard that it is entirely possible so long as you have a portfolio. As a matter of fact, no matter what your situation is, having publicly displayed projects is a sure way to vastly increase the odds that you land your first job, as well as all jobs following that. After awhile, your experience will mean a lot more than your degree.
Additionally, even though a an entry job posting lists a CS degree as a requirement, send in your application anyway. If you have a portfolio to show off, you may still have a chance at an interview. It’s always worth putting your name out there, and who knows — they might look positively on your initiative.
“Well,” you might be wondering, “what kinds of projects should I fill my portfolio with?”. The specifics aren’t necessarily incredibly important, unless you are trying to secure a specialized type of work. The important part is that you have projects that challenged you. Writing your first Hello World program is important sure — but in order to prove that you will be able to get up to speed as a junior developer, you will need projects that incorporate many different skills.
For example, as I mentioned before, a hosted website capable of retaining user accounts and processing payments will show that you understand: Front-end development, server side logic, setting up a database, and deploying your project. Additionally, keeping your project on a website like Github, Gitlab, or Bitbucket will demonstrate an understanding of version control which is crucial in working as part of a team.
Try building your own projects, find open source to contribute to such as a project on Github, or even volunteer to do some development work for a local business or a relative to get that real world experience.
Equally important to your technical skills is your ability to work as part of a team. Nine times out of ten, you will not be working alone, so being able to demonstrate strong skills as a communicator and team player will go a long ways. A big ego or unwillingness to heed others advice or opinions is a surefire way to make yourself a lot less desirable to those looking to hire a developer.
You might be extremely technically talented, but if you are a pain to work with, as soon as someone as good, or nearly as good as you comes along who is more friendly and cooperative, you may quickly find yourself out of work. This isn’t unique to software development, but is an often overlooked part of the job. Make sure that you prepare for your interview, find commonly asked behavioral questions and keep a few answers in mind, but don’t rattle off a canned speech during your interview. Try to keep things conversational and ask questions back when appropriate and you will do great!
Another often overlooked component to securing your first job is networking. How are you supposed to find opportunity if you don’t talk to people. Do you have a friend who is already a developer? Ask them about their work and how they got started! Similarly, you could make introductions on websites like Stack Overflow, or even here on Medium (Hello reader!). While knowing the right people is never a substitute for technical aptitude, having a strong network will set you up for success.
In addition to having a strong network, the biggest advantage you could possibly get is finding an incredible mentor. Having a skilled mentor who is able to work with you directly and answer questions will greatly enhance your experience as you learn. You may find that working with certain individuals skyrockets your learning, and takes you to another level as a developer.
The best thing you can do is find a project you will enjoy and work on it to completion. It’s OK to follow along with a tutorial to begin with, but at some point you should attempt doing something with no explicit guidance. Keep an open mind, languages and frameworks are tools, each excels at something in a different way, so ignore those that tout a specific language as “the best”. Be patient with yourself and enjoy the journey, development is a job of constant learning, so also remember to stay humble and never let yourself get too big of an ego. Lastly, find a good mentor who can work with you individually toward your goals, and work with you as you code, this will propel you further than anything else.
While I surely haven’t addressed all common questions, feel free to leave a comment with questions you have, and I will do my best to answer them.
- Code Academy — Great resource for starting your coding journey, lots of tutorials, and forums for discussion.
- Code Wars — A good website for those with a little bit of coding experience already. User made exercises help to teach fundamentals, as well as assist in picking up new languages.
- Stack Overflow — One of the best websites to ask questions and look up up information. If you have a coding question, it has most likely already been asked on this website.
- Stack Skills — A great site for picking up tutorials. There are plenty of free sites out there, but this site often has sales, and was where I learned to develop across the Full Stack.
- Coursera — Similar to Stack Skills, this is a fantastic site for picking up individual courses.
- Pluralsight — A subscription based site with tons of fantastic courses with great instructors. Although more pricey than other options, I had a subscription here for a year and learned a lot of really invaluable skills that have helped me throughout my career.
- Code.Org — This resource may be primarily aimed at a younger audience; however, it is still a fantastic place to learn core concepts, as well as seek out more information and resources.
- Dev.To — A great site for connecting with other Devs, reading tech news, and building up your resume.
Additional Articles From Knoware
- 5 Tips To Kickstart Your Website — common problems with UI/UX and design tips.
- Start Taking Better Pics For Your Designs — A dive into the basic concepts of photography, and how to make your website stand out.
- How To Fight Developer Burnout — Ways to cope and what to do when you feel the burnout.
- Selling — An Introvert’s Perspective — A look into learning to market yourself as a developer, no matter how introverted you are.
Also check out TheCodeReview podcast, new episodes delivered weekly.
*Disclaimer: Neither Knoware or myself are endorsed by any of the above resources, I have only shared them due to them having been useful in my career as a software developer. This article is not sponsored by any resources referenced.