DEV Community

Cover image for 19 Tips For Software Engineers In 2019
Emma Bostian ✨
Emma Bostian ✨

Posted on

19 Tips For Software Engineers In 2019

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.

Top comments (69)

Collapse
 
molly profile image
Molly Struve (she/her) • Edited

20. Give yourself time to work through this incredibly thoughtful list 😀

If you don't have a mentor, that's OK! If your resume or portfolio is light or even non existent, that's OK! (I've been at this for 6 years and still don't really have a portfolio) The fact that you are thinking about these things is a huge win! Given time and some hard work you can accomplish all of these!

Collapse
 
phillipdodd profile image
Phillip Dodd

Reading your comment was the exact kind of encouragement I needed today :)

Collapse
 
tchinioti profile image
Comment marked as low quality/non-constructive by the community. View Code of Conduct
Tech4Jee
Collapse
 
ben profile image
Ben Halpern
  1. Be comfortable with being uncomfortable

Definitely

Collapse
 
stufflebeam profile image
Will Stufflebeam

Such good advice! Thanks for putting this list together, Emma!

I think the mind tricks in here (dealing with imposter syndrome, getting involved with a new community, asking for help, etc.) are the toughest ones to master, but also the most valuable/rewarding to get a handle on. These are things that apply not only to software engineering and professional development, but also to any area of one's life where improvement and mastery is the goal.

In my experience, it doesn't matter if you're self-taught and new to the game, or decades into it with all the degrees and experience, those things can still be challenges you have to face on a regular basis. In fact, if you don't ever face those things, it might be that you're not pushing yourself hard enough.

Getting comfortable being uncomfortable is a great skill to build, as growth and learning tend to happen outside of one's comfort zone.

As soon as you start feeling like the expert and like you have all the answers, it's probably time to start working on mastering a new technology.

It's also good to remember that we're all new to it every time a new technology comes out or gets chosen for a project we're working on. As such, it's important to focus on oneself and doing the best job we can do with whatever we're currently working on, rather than comparing ourselves to others and measuring our success against others' skill sets and timelines.

Seriously, this is all great advice! 👏 Thanks again for sharing it!

Collapse
 
tchinioti profile image
Comment marked as low quality/non-constructive by the community. View Code of Conduct
Tech4Jee
Collapse
 
emmabostian profile image
Emma Bostian ✨

Lol k.

Collapse
 
overlordex3 profile image
Exequiel Beker

Personally, I loved this one:

Just because something "failed" doesn't mean it wasn't valuable.

Thank you for sharing this! Thanks!
Merry christmas!

Collapse
 
bolah2009 profile image
Buari Bola Ahmed

Excellent and enlightening post... In my mind, you are my mentor...🤩

Collapse
 
mobi9ja profile image
mobi9ja

Salam Aleikum brother, from Nigeria

Collapse
 
bolah2009 profile image
Buari Bola Ahmed

Waaliakumsalam...👍🏾

Collapse
 
ahmedabdelhak profile image
Ahmed Abdelhak

thnx a lot Emma, i really appreciate your useful tips :)

Collapse
 
jrohatiner profile image
Judith

Beautiful post Emma, thank you. I'm a big advocate of #14. I think of work/life balance as if I am the sun and all the areas of my life are like planets in orbit around me. Family, health, hobbies, work, love - if one of those planets falls out of orbit it can mess up everything for all the other planets and the sun. I wish I could take credit for that analogy; but it was something a Guru told me 20 years ago. I'm glad it stuck!

Collapse
 
phillipdodd profile image
Phillip Dodd

As this is something I personally struggle with quite often, I find this analogy super helpful. Thanks for sharing it!

Collapse
 
jrohatiner profile image
Judith

So happy it is helpful! Namaste 🙏

Collapse
 
db325 profile image
db325

This is an awesome post! Very informative. Thank you so much. I'm at the point where I find most employers want you to have experience in this language or that framework. But they all do the same thing for the most part. So I go and watch some tutorial on the subject only for the next potential employer to want me to know something completely different...ugggghhhh🤔

Collapse
 
nayeonkim profile image
Nayeon Kim
Focus on one thing at a time

Thanks for this reminder. It's so easy to get sidetracked when learning something new. I get FOMO when I'm in the middle of learning one framework/language/etc and then I come across an article about a shiny new something else. I feel like I HAVE to learn that new thing right away and get distracted with my current progress.

 
grahamlyons profile image
Graham Lyons

Criticism is great - I welcome it - but it should be constructive otherwise it's just writing something rude.

There are enough online communities where people will respond with: "I don't like it", "this sucks", "this is cheesy", and it only serves to insult the original poster.

The article wasn't too your taste because it wasn't technical and you already know and practice everything in it. Wonderful. Why not contribute some of your experience in the comments instead, then go away and read a technical article somewhere else?

Thread Thread
 
biros profile image
Boris Jamot ✊ /

What I noticed is that there is quite no criticism here on DEV.
I think that if we want to grow as a community and to be more valuable, we have to criticize more (in a constructive way) and to accept criticism.
This article is great and has got a lot of positive comments but the only negative criticism has been reported.

Thread Thread
 
grahamlyons profile image
Graham Lyons

I totally agree that constructive criticism is much more valuable than blanket praise. I can't speak for the level of either on dev.to: I've seen some articles generate good discussion, but perhaps your experience has been different.

I do agree with reporting Menil's comment though. It wasn't constructive and amounted to, "this wasn't the article I wanted to read". I found the tone of it insulting too - calling it "cheesy" and dismissing it as "common sense" - although I'm sure it wasn't meant that way.

If there's something to add - 'I don't agree with that, but how about this' - then great but otherwise it's in danger of descending into mud-slinging, which nobody wants.

From what I can see Menil looks to be a good Android developer and I'd really like to see them write a technical article on getting started with a simple Android app, because it's something I know nothing about.

Collapse
 
_morgan_adams_ profile image
morgana

I disagree. New grads in particular may struggle with lot of things on this list but come up with some crazy smart solutions to problems. In fact I know seasoned engineers that struggle with a good many of these items. These tips can help you take your engineering ability and career to new levels, but they are not the components that make up an engineer.

Collapse
 
phillipdodd profile image
Phillip Dodd

Great article, thanks for sharing it! I found this to be very helpful.

I was wondering if you had any further tips regarding #4? Particularly: I have a bad habit of, once I learn something, I just assume it as 'common knowledge that everyone knows'.

So, when I try to think of ideas for things I could potentially write a blog post or something about, I often decide against most of my ideas for the reason of "people would already know about this / not want to read about it." Lately at work, though, I'm finding this to not be the case and that I sometimes do my co-workers a disservice by not sharing certain information because of this.

Collapse
 
emmabostian profile image
Emma Bostian ✨

Everyone learns in different ways and all content you produce, whether completely unique, will be valuable :)

Collapse
 
phillipdodd profile image
Phillip Dodd

What a great way of looking at it -- thanks!

Collapse
 
ruchinmunjal profile image
ruchinmunjal

Agree with everything except one little problem.. "you can make it look nice later".. While I understand what you are saying but most new people somehow interpret it very wrongly. My team has two relatively junior devs and before I joined them they were busy focused on server side code. They assumed having a reference to bootstrap in site some how magically will fix all the bad ui decisions they were taking. Its not that simple. You can make it look nice provided you followed basic principles of the technology /framework. For e.g instead of using the grid layout they were still styling the forms with table tags.

Also, probably obvious but please read the documentation of the tool/framework you choose. It really helps everybody.

Collapse
 
jennynnguyen114 profile image
Jenny Nguyen

You're right. The new people in your team really did interpret "you can make it look nice later" wrong. They should've used div tags and style it up with CSS later to make it look nice.

I hope someone in your team failed them on the client-side code they were making so they could fix it up; they probably didn't know using table tags for forms is bad UI. That's a learning moment for them as junior developers.

 
grahamlyons profile image
Graham Lyons

Thanks for this, Menil. I really like your additions.

I'm really thankful to you both for engaging in a very reasonable way - it doesn't always happen that way online!

my comment was downvoted so fast, and honestly, that scared me

Challenging something negative is better, of course, but the down vote is a quick option to mark something that's unconstructive. I'm sure the community will get better at this as time goes on.

I'm very glad that you've illustrated number 1 from Emma's article and given some nice additions. Looking forward to your first article on Android development, Menil!

Collapse
 
thobyv profile image
Thoby V ijishakin

Awesome post! Truly these are the best tips.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.