It's almost 2019 and there are some amazing things coming down the pipeline in the world of programming. But for many new developers the prospect of jumping into a career in coding can be intimidating.
There are so many technologies to learn and so many languages to choose from. Thus, I've compiled (no pun intended) a list of 19 tips for software engineers in 2019.
Happy coding 🤩💻
1. Don't get discouraged
The technology industry is one of the most intense and volatile industries out there, and it can be overwhelming to jump into. What I try to remember each day is that everyone, at some point in their coding career, started where I did. All of the industry leaders in tech were once beginners.
Do some people learn faster than others? Yes. But you can't let that discourage you from getting started.
Coding careers are desirable for a very good reason: you can teach yourself anything on the internet... for free! And often the lifestyle which accompanies a career in tech is much more comfortable than other careers.
It's important to keep in mind that, while there are a plethora of resources out there, you don't need to learn everything. Start with the basics.
The first step is to decide whether you'd prefer to begin your career in front-end (the user interface of the application you interact with) or back-end (working with data). Once you choose your niche, start with the basics.
If you've selected front-end development, hone in on HTML, CSS, and JavaScript. Don't take these skills for granted. While they may seem simple at first glance, a strong knowledge of the foundations of web development will land you your first role as a Software Engineer. Most companies would prefer to see a candidate with strong "vanilla" skills than a pretty good understanding of a popular framework/library.
If you decide to go the back-end development route, try out a language like Python or Java. These are highly coveted skills in the tech industry.
But do not get discouraged. You will have days where you feel utterly overwhelmed. Everyone began their journey where you did. It will get easier.
2. Learn to read & decipher code
One of the skills that I took for granted when I began my coding journey was the ability to read other developer's code. This is a truly important skill because it allows you to work effectively in many different code bases.
You don't need to know all of the nuances of a programming language in order to decipher what that code is doing.
There are many ways to learn how to read code. Check out some open-source projects. Read through the documentation and the source code and see if you can delineate what's happening. You'll slowly start to realize that there are improvements that can be made, and perhaps you'll even open a PR!
Learn to analyze the code and determine whether or not it was written in the most effective way.
Learning to read and review code is a skill that takes time, but is well worth the effort.
3. Find your method of learning
Humans learn in different ways. Some retain information best when they're writing code. Others learn best by reading or watching videos.
I prefer to watch online tutorials and read documentation in order to fill in the gaps.
I'm not the kind of person who can just start a sandbox application and code away. I like to follow a guided tutorial and then expand upon the ideas.
Find your method of learning. Try out different resources and platforms.
Once you find your learning method, you'll find that you learn much more efficiently.
4. Get involved in the community
I didn't join the online tech community until about 3 years into my coding journey. This put me at a huge disadvantage.
I struggled greatly with impostor syndrome and found it hard to stay motivated. But once I found a community of developers on Twitter and blogging platforms, I became much more invested in learning.
Find an open source project. Tweet your coding projects. Push your projects to GitHub. Find a way to get involved, and you'll quickly develop a more intimate relationship with coding.
5. Balance theory with practicality
In order to become an effective programmer, you must understand the theory behind certain paradigms (to a certain extent).
For example, if you want to understand why a nested for-loop is not as performant as two for-loops within the same scope, you need to understand Big-O notation.
We live in an age where you don't need a Computer Science degree to succeed in the tech industry. That being said, some of the concepts taught within a CS degree are extremely valuable (i.e. algorithms, run-time analysis, etc.).
You don't need to learn all of the computer science theory, but you should understand the theory of why one solution is better than another.
6. Don't compare yourself to others
Your career will never follow the exact same path as another developer. You should not compare yourself to others.
You are unique and the skills you offer will be tailored to you.
Just because one of the industry leaders is learning Ruby on Rails doesn't mean you have to follow suit. Find the skills that get you excited about programming, and learn them to the best of your abilities.
There is no expected time-frame in regards to learning a technology. As I mentioned in tip 3, people learn by different methods, and as such people learn at different rates.
Just because it takes you three months to learn JavaScript doesn't mean you're a worse developer than the girl who learned it in one.
7. Get involved in open source
The open-source community is thriving, so why not get involved? If you need a way to boost your code-reading skills, find an open-source project!
You can check out the GitHub Open Source community to get started!
You can even start your own open source project! I founded my own open-source project, Coding Coach, this last September, and it's been an eye-opening experience.
If you'd like to get involved and learn from some great developers, feel free to check it out!
8. Be comfortable with being uncomfortable
The tech industry is constantly changing, which means there is always a new skill to be learned.
While this can be intimidating at first glance, it also provides many opportunities to find a new technology to learn (how could you ever get bored?!).
The best way to grow in your coding skills is to tackle tasks that scare you. You can do this at work by volunteering to complete a challenging task. But you can also do this in your spare time with new technologies.
You have to become comfortable with being uncomfortable. You're not expected to have all of the answers.
9. Don't be afraid to ask questions
Eventually you will hit a problem that you don't know how to solve. Stack Overflow just isn't cutting it!
It's important to recognize when you need to ask for help. If you have tried to solve a problem, and gone down all viable paths, it's time to reach out for help.
Asking for help does not make you look weak; this is something that I still struggle with.
If you're spending hours trying to figure out why your variable is throwing a ReferenceError, ask for help.
10. Surround yourself with people who build you up
Coding is hard. You will have days where you don't feel cut out to be a Software Engineer.
Thus, you must surround yourself with people who believe in you. Find a core group of family or friends who build up your self-esteem, and say goodbye to those who don't.
11. Focus on one thing at a time
Multitasking is the quickest way to ensure mediocrity. Humans cannot effectively multitask.
Choose one thing to focus on at a time. Learn it, or complete it, to the best of your abilities. Once complete, move on to the next thing.
Do not try to juggle several topics at once.
12. See the bigger picture - how do all these technologies fit together
You will be learning many different technologies throughout your coding career. And it can be extremely confusing to determine which technologies solve what task.
I like to draw diagrams of complex problems. If I'm tasked with building an application, I like to break it down into domains. For example, I know I need HTML, CSS, and JavaScript on the front-end. Perhaps I'll decide to use React as a JS library. And maybe, if I need this application to scale, I'll choose Redux for state management.
Learn the best use-cases for different technologies. When would you choose one over another? How do they fit together?
These are important questions you should learn to answer.
13. Find your toolbox - which tools are the best for the job?
There are no shortage of tools available to developers these days. I can name at least five IDEs off the top of my head that I've worked with in the past.
The amount of tools available can be extremely overwhelming. Do some research. Determine which tool is right for you. Some questions you might want to ask are:
- Is this tool being actively maintained?
- Is there a thriving community of developers using it (in the event that you need help)?
- How hard is it to configure?
- Could integrating this tool have negative implications on performance?
- Can I solve the task without the tool?
Just because a tool exists doesn't mean you need to use it.
14. Maintain a good work/life balance
You do not need to spend all hours of the day coding. In fact, to do so would be unhealthy.
You must maintain a healthy work/life balance, or you could suffer the consequences of burnout.
If you do something from the moment you wake up until the moment you go to sleep at night, you will quickly come to resent it.
By taking time for yourself, and your other hobbies, you'll maintain a healthy relationship with coding.
15. Learn the basics of design
If you're building an application that's user-facing, you should know the basics of design. I'm not saying you need to learn how to use Sketch or Adobe Illustrator, but learning the basics of UX Design will positively impact your applications.
You cannot assume a user will use your application in the same way that you would. In fact, you shouldn't make any assumptions about user behavior at all.
Understand the reasoning behind certain UI principles in order to determine the best solution for your application.
For example, it was found that buttons with square edges are actually better for users than buttons with rounded edges, as they contain more pixels.
Learn these basics, and you can be sure that your web app will shine.
16. Find a mentor
Finding a mentor is hard, but it's necessary. You can learn invaluable skills from career advice to coding best practices.
It never hurts to ask someone in the field, whom you admire, to mentor you. The worst thing they can say is no!
And remember to re-evaluate your mentorship as time progresses, to ensure that it's beneficial to both of you.
17. Build a kick-ass portfolio & resume
Portfolios and resumes are your first impression to an employer during an interview process. It's imperative to put on your best face.
Fix spelling and grammatical errors. Ensure that everything is formatted consistently and appropriately.
If you want more details on writing an awesome resume, feel free to check out my previous blog post.
18. Fail fast and fail often
Failure is subjective. If you make a mistake, learn from it. Don't make the same mistake twice. Just because something "failed" doesn't mean it wasn't valuable.
The most successful people in history produced vast amounts of work, yet they're only recognized for a few.
You don't have to code beautiful websites from start to finish for each project you develop. Focus on the underlying technology, and you can worry about making it look nice later.
19. Just keep going
There will be days you want to give up coding. Don't. It's a difficult career, and everyone suffers with impostor syndrome.
You are not alone. Coding will get easier over time.
Take it day-by-day, and you'll be alright.
Just keep going.