3 Roadblocks Any New Software Developer Can Encounter

And how to avoid them gracefully

Madison Hunter
Better Programming
8 min readFeb 15, 2021
Cat resting on laptop
Photo by Trà My on Unsplash.

Studying software engineering and doing software engineering are two very different things.

In school, the code is clean, the debugging is fairly straightforward, the technologies remain consistent, you’re gently introduced to new languages before being thrown into the deep end, and you rarely need to work with someone else’s code.

When it comes to the workplace, though, your job will involve debugging code that existed long before you even considered working in tech, running on the never-ending hamster wheel of new technologies to ensure that you remain “relevant,” learning more languages than the average non-tech person will in their lifetime, and working within teams to decipher someone’s not-always-up-to-standard code.

Depending on the situation, you may find that your education didn’t prepare you for the real world of tech. Or worse, your education totally prepared you, but you’re losing confidence in your abilities as you face new challenges that go beyond what you learned in school.

To succeed in a fast-paced environment that doesn’t seem to slow down for anyone, it’s important to know what you’ll be up against and the challenges that may take a swing or two at you. The British Army said it best: “Proper planning and preparation prevent piss poor performance.” In other words, be prepared for everything a junior developer position will throw at you, and you’ll be surprised at how gracefully you manage to navigate some of the most intimidating problems you will come across.

1. Debugging

The debugging taught in school does not paint the proper picture of a junior developer trying to debug code that is several years old with little to no supporting documentation or context for the given problem.

The unspoken truth is that imposter syndrome tends to set in right around the time you start debugging someone else’s code.

Debugging is one of those tasks that is often given to new developers as a way to get them familiar with best practices, company procedures, and the code base they will be working with. In short, debugging is one of the best learning experiences a new developer can be given and is chock-full of learning opportunities.

Why is debugging a great first learning opportunity for developers?

  • You learn about company-specific use cases. One of my favorite ways to learn about a piece of software is to look at entity relationship diagrams and use case models before starting the debugging process. You can learn so much about how different pieces of code work together and how the whole system functions together to offer a particular experience.
  • You get to learn about cool language features. Debugging is one of the quickest ways to learn about how a language works and the different features it has to help you quickly debug code.
  • You learn how to work through problems in a structured manner. Debugging is an art that helps you learn to think through problems in a stepwise fashion that will pay off when you begin writing code of your own.

How to become better at debugging

  • Get good at Googling. Many great developers will tell you that their big secret to being a great coder and debugger is that they are Google masters. Google and Stack Overflow hold nearly all the answers to typical debugging questions that may plague you during a debugging session. If you learn how to ask the right questions, you’ll be surprised at the answers Google can give you.
  • Don’t become too cool to use the print statement. The print statement is a tried-and-true method of coding that is useful for junior and senior developers alike. While many different debugging methodologies exist, using the print statement is still one of the best ways to discover exactly what your code is doing.
  • Do your best to reproduce the bug. While it’s one thing to have a QA send you an email about a particular bug they found while testing the code, it’s an entirely different thing to try to replicate it yourself. Maybe the test case the QA used is outside the intended scope of the software, or perhaps the bug only occurs under certain circumstances. Regardless, you need to reproduce the bug to ensure you understand exactly what the problem is so you can then begin to formulate a plan on how to fix it.
  • Learn how to use a binary search. When debugging, a binary search can be useful for sifting through thousands of lines of code to find the one piece of code that is causing the error. A binary search involves cutting the entire code file into two parts by commenting out one half and running the other half. After you determine which half of the code is causing the error, you repeat the process and cut that half of the code file into two parts by commenting out one half and running the other half. Wash, rinse, and repeat until you find the exact lines of code causing the error.
  • Don’t go it alone. One of the biggest traps new developers fall into is not asking for help when the going gets tough. However, most bosses would probably be concerned if a new developer wasn’t asking for help. So, take advantage of all of the help people will be willing to give you and make sure you’re asking the right questions.

2. Keeping Up With New Technologies and Learning New Languages on the Fly

A developer’s worth often rests in their ability to keep up with new technologies and learn new programming languages on the fly.

As I mentioned above, it can feel like you’re running on a never-ending hamster wheel of new technologies to remain “relevant.” This phenomenon is what drives people into tech… and what drives people away from tech.

In school, you have a pretty good idea of the languages you’ll learn and the technologies you’ll be working with. At the end of your degree, you’ll probably walk away having worked with six or seven languages and perhaps having dabbled in three different areas of development — each of which hosts various technologies. If you’re lucky, you’ll be able to land a job where you can use some of those languages and technologies. However, if you’re like the rest of us, you’ll probably have to learn something new to become relevant to a company.

Google, Stack Overflow, Reddit, GitHub Trending, and Medium are going to become your best friends as you try to keep up with hot new trends and technologies that will set you apart from other developers or will make you even more valuable to your company.

The trick is to know which languages and technologies are worth adding to your arsenal. My personal rule of thumb is that if the language/technology sticks around for a year or so and many developers give it great reviews, then I may consider learning it. By the one-year mark, the usability and practicality of a new language/technology will be revealed, and the industry will likely have decided if it becomes something mainstream.

How to learn new languages and technologies quickly

Is there a trick for learning new languages and technologies quickly?

Not exactly, but there are some things you can keep in mind that can help the process go smoothly.

First, you need to become fluent in coding fundamentals. Computational thinking and coding fundamentals apply to every programming language and technology out there. The only difference will be syntax, structure, and conventions.

Second, you need to code something using the language or technology that is more substantial than “Hello World.” If you have a short amount of time in which you need to learn something new, there’s no point in wasting it on coding “Hello World.” If, for example, you are learning a new programming language, you’re going to want to design a program that tests out how the language handles basic concepts. These concepts include printing out strings, accepting user input, storing this input for later use, handling simple algorithms, using data structures, and handling errors.

Third, you need to make sure you learn the basics of the new language or technology first before diving into the frameworks and other features that go along with it. Frameworks and features are built using the concepts of the language or base technology. Therefore, you need to learn the basics before you can get into all of the good stuff.

Finally, you should strive for understanding — not perfection. There is so much stress associated with having to learn new languages and technologies on the fly, especially if your job depends on it. Therefore, don’t get distracted by creating the cleanest solutions possible. Instead, focus on using the language or technology to the best of its ability and ensure that you can use it to write bug-free code that runs and gets the job done.

3. Communicating

Few things are more terrifying than speaking up in a meeting or a code review as the junior developer in the room.

However, nothing will set you apart more than your ability to communicate effectively with your team.

One of the greatest things lacking in software developers is their ability to communicate. A common misconception that often encourages people to get into tech is that coding is a solitary task. This results in many developers not improving their soft skills and not learning how to communicate effectively.

Don’t be that person in the room who mumbles, uses filler words, uses inappropriate body language, or can’t write a memo to save their life. Instead, take the time to learn some proper communication skills so you can become an even more valuable member of the team.

Verbal communication

Good verbal communication begins with using a confident speaking voice with an appropriate tone and volume for the environment. Be aware of the tone and inflection you use, and make sure it’s appropriate for the message you are trying to convey. Effective communicators also ensure that they don’t use filler words or industry jargon that may negatively influence the conciseness or efficiency of their message.

Non-verbal communication

Non-verbal communication involves all of the communication you do that doesn’t involve speaking. This includes body language and facial expressions. Be aware of the facial expressions you use, your posture, and the position of your body. Each of your actions can convey different messages to the person you’re communicating with, and you need to ensure that how you’re coming across non-verbally matches how you intend to come off verbally.

Written communication

Clear, concise, and effective written communication starts with having good sentence and paragraph structure, punctuation, grammar, word choice, and tone. While verbal and non-verbal communication can lean on each other to provide a clear message, written communication entirely relies on the writer's word choice and tone to convey the proper message. Therefore, it’s important to keep three things in mind when writing anything:

  • Have a goal in mind for the piece you’re writing and be aware of the audience the piece is for.
  • Ensure that you only include pertinent details in written communication and remove anything extraneous that doesn’t add to your message.
  • Edit the piece at least once for spelling, grammar, punctuation, tone, and structure. Grammarly is a great tool to catch spelling and grammatical errors. Make sure you read the piece aloud to catch structural and tonal errors.

Final Thoughts

Studying software engineering and doing software engineering are two very different things.

While starting a job as a new developer can be intimidating at best, it’s important to remember that your education likely prepared you for everything work will throw at you — even if it doesn’t feel like it sometimes. Regardless, if you use the tips mentioned above to gracefully avoid the three most intimidating problems you’ll encounter as a new developer, you’ll start feeling confident in your skills in no time.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

Madison Hunter
Madison Hunter

Written by Madison Hunter

CAN | +1M views | Data Science, Programming & Learning | TerraBytes Newsletter: https://terrabytes.substack.com/

Responses (4)

What are your thoughts?