Starting Out as a Newbie in the Tech Industry
Perhaps, you are considering joining the tech industry and asking about where to start as a newbie. Questions concerning this is usually raised during meetups and personal discussions with people. The tech industry is a good place to be. Being in tech gives you the opportunity to take an idea from ideation to a working application. You get the opportunity to build amazing solutions and help make life easier for people utilizing technology.
My experience has been an awesome one so far - not easy, but rewarding. Sometimes, you get overwhelmed and at other times, you become joyous seeing a product you were part of its development being used by many.
In this article, I will dissect the life of a software developer, how you can start your journey in tech and opportunities in the tech industry.
A day in the life of a developer
Seen developers before? They are a bunch of nerds with no social life. Staring at the screen all day with headphones on putting them within the zone. Are you sure they are not internet fraudsters?
This is the common belief of people around developers ignorant of what software development entails. Is that true? you may ask. Personally, I've seen jovial software engineers. We are not all introverts, there are ambiverts too.
When working on a task and you encounter a bug, the first thing to do after a couple of debugging is to check the documentation before visiting Stack Overflow - a platform that features questions and answers on a wide range of topics in computer programming. If the answer is not forthcoming, google to see what other platforms have to offer. Sometimes, you may need to rubber duck.
The life of a developer is a disciplined one. As a developer, your spare time is hardly spent watching movies. When you want to relax and watch a movie, you remember all the notifications from coding channels that are piled up calling for your attention. Which would you go for? Definitely not that Netflix movie. You'll rather spend it learning one or two from coding platforms like freeCodeCamp, Chrome Dev channel, DevTips, LevelUpTuts etc.
Software development teaches you to think vastly and solve problems. So, you should consider coding. Check out Carl Newport's view on why skills trump passion in the quest for the work you love.
"We've heard our whole lives that if you follow your passion, that's all that matters. What I'm arguing, instead, is that passion is something that follows you; on your path, you become really good at things that are valuable. If you focus on what's important and really focus on doing those things better, then [you] use these skills as leverage to keep shaping [your] job. It's not a sexy process, but it's one that very consistently helps people build these types of working lives that really resonate with them. They're a real source of passion." - Cal Newport
Journeying into tech, you should keep the following tips at heart:
Be dedicated to the craft
You must not have a Computer Science degree to be in tech. Choose a track and improve. A lot of people have made themselves relevant in this field irrespective of their discipline or gender by putting in hours of work. Nothing great comes easy. You're going to hit a lot of walls, constantly acquire new skills as tools change rapidly and sometimes debugging is going to become immensely frustrating. The problem you're facing might make you feel dumb, and will make you rethink your career path. In these cases, do not give up. Even the best programmers are not geniuses. They just have a growth mindset
The tech industry is a good place to venture into especially with the innovative disruption happening at the moment. New to Tech? Do not fret as this is a lovely community to be in, creating a sense of belonging to individuals in it.
Find a means that work for you
What is your primary source of learning? Stack Overflow, YouTube, Books, MOOC, Online tutorials, Personal tutor, Discussion group or School system? This differs depending on the individual involved. Use whatever works for you. Identifying this early helps fast-track the learning process as there are lots of articles and tutorials flooded online. You don't need them all. Focus on the good ones and avoid getting overwhelmed.
Here is a curated list of a few useful resources:
- Css Tricks
- You Don’t Know JS
- Don’t Make Me Think
- Mozilla Developers Network
- CS50's Introduction to Computer Science and more…
Learn at your pace
Value every second, don't try to learn everything, focus on one thing at a time and forget all the hype. At the initial stage, everything may seem confusing starting with the stack to focus on, to the frameworks to consider, the text editor to use, configurations and hacks to make you more productive.
You don’t need to learn everything at once. Learn the language when you need to use it to solve a problem. You must not use all the frameworks. Just learn what you need to accomplish the project at hand. It’s not about the code you write but about the problems you solve using those languages. Use the right tools to get the job done.
While trying to choose a niche can be quite confusing, the earlier you dive deep and explore, the better. Go for things you enjoy doing and develop your skills in it. If you are good at designs, you can venture into User Interface (UI), User Experience (UX) or Front-end development. Love logic and algorithms? Back-end development will be a good fit. Stay calm and learn. You may be plagued with imposter syndrome, remember that everyone else feels the same way. Don't let the syndrome consume you. Good resources that can help you transition smoothly into tech abound. Do not also let yourself suffer from Dunning–Kruger effect
A lot of practice is needed to be a master in this craft. Don't expect to be a pro in a month. Before starting any project, it is imperative to plan extensively before executing. In the course of planning, potential loopholes are spotted and solutions to them gotten.
To excel, explore, build and ship it. The more you go through other people's codes, the better you become. Hang around more experienced software engineers and learn from them (they will push you to become better). Make Google your friend, source for information online as there is a high probability of someone having asked questions concerning the challenge you are currently faced with. Read articles and write about things you find interesting. Data subscription should be something you shouldn't trade for anything else as it plays a vital role here.
Get good tools
You need a computer with good specifications to function effectively. Don't feel intimidated when you see most people move about with a Mac. You can still do well with your Linux or Windows laptop provided it has good specs (Ubuntu operating system preferably, minimum of 4GB RAM, Core i5, great processing speed etc.).
You need a Terminal (iTerm2, bash, cmd) for writing commands to run programs, a Text editor (Visual Studio Code, Sublime Text, Atom) or an Integrated Development Environment (Web Storm, PHP Storm, Visual Studio, Android Studio, Pycharm) for writing codes, a Web browser (Chrome, Firefox) for viewing the output if your chosen track is web development, Git for version control (GitHub, GitLab, Bitbucket)), Web Server (Netlify, Heroku, Linode, Digital Ocean, GCP, AWS) for hosting your site.
Share your Work
Don’t be afraid to share your first work. It can definitely not be compared to the ones you’ll build as you gain more experience. That is just your first iteration. Share it and seek for feedback. This will help you improve.
Follow people making waves in the industry on social media (twitter is the best place to be), read their articles, and attend events they propagate. Meetups, seminars, workshops and conferences can be a great way to network and learn from peers and professionals in the industry, you may secure your next job through your connection.
There are lots of meetups and conferences around that you can attend. Here in Lagos, Nigeria, we have:
- Google Developers Group
- Facebook Developer's Circle
- Andela Learning Community
- Women in Tech
- Android Nigeria and more ...
- forLoop Summit
- React Summit and more ...
Securing a job
When you are ready to secure a job, don't go for the money at first, go for a structured environment. It will help you learn good software practices. Know the business - how the services talk to each other (how they are integrated). After mastering a particular area of software engineering, explore other areas - be rounded ( front, middle, back-end). Have your own practice time, you're paid to learn so you need to do that to remain relevant.
Organizations seek for people with the following skills:
- System design
- Database design
- Codebase navigation
- Code review capability
- Performance optimization
- Software testing
- Programming language proficiency
Opportunities in the tech industry
There are various opportunities in the tech industry.
- Project Management
- Product Design
- UI/UX Design
- Software Architect
- Software Engineering
- Database Administration
- Data Science
- Quality Assurance
- Network Administration
- Security Personnels
- Ethical Hacking
Tools Used in tech
You must not know how to code to be in the tech industry as great job opportunities exist in in various areas. Underlisted are tools used by different areas that can help you get started:
- Adobe XD
- Sketch (Mac only)
- Microsoft Visio
- Offline Editors: Visual Studio Code, Sublime Text, Atom, Visual Studio, Web Storm, PHP Storm, Pycharm, Android Studio
- Online Editors: Repl.it, Codepen, JS fiddle, Sassmeister
- Terminal: iTerm2, Bash
- SQL Yog
- Sequel Pro
- SQL Workbench
- Packet Tracer
- Selenium and more...
Conclusively, you should note the underlisted points to excel in software engineering
- Learn the fundamentals. It helps you to understand the "how" and "why" involved in taking a specific approach to problem-solving.
- The best programmers are just the ones that never gave up.
- Great software engineers are problem solvers, not code warriors.
- Writing good software isn't about fancy one-liners, it's about writing maintainable code that serves a business need.
- For every code you write, consider performance and scale
- Learn the actual language of choice so that you can distinguish what the language can do and what the framework is helping with.
- Prefer official docs over Stack Overflow.
- Do your own quality assurance.
- Don't ignore the world around your work.
- Seek constructive criticism.
- Have side projects.
You can have a look at Hackerrank 2018 Developer Skills Report