My best tips for new developers: advice from a (mostly) self-taught software engineer

The Bureau of Labor Statistics predicts that employment of software developers will grow 22% from 2020 to 2030, much faster than the average for all occupations. With a median annual salary of $110,140 in 2020, it‘s no wonder that more and more people are teaching themselves to code in hopes of breaking into this booming industry.

As someone who transitioned from a non-technical background and taught myself programming, I know firsthand how overwhelming and frustrating the process can be. I‘ve spent countless hours battling through online tutorials, scouring forums for answers to my coding problems, and doubting if I had what it takes to make it as a "real" developer.

But through all the ups and downs, I‘ve gained a wealth of knowledge and experience that I wish I could go back and share with my newbie self. In this post, I‘ll share my best tips and advice for aspiring and early-career developers, based on over a decade of experience as a professional programmer.

Understand the different paths into software development

One of the first decisions you‘ll need to make as an aspiring developer is how you plan to learn and acquire the necessary skills. There are three main paths into the field:

  1. Self-teaching through online resources and personal projects
  2. Attending a coding bootcamp
  3. Pursuing a computer science degree from a university

There is no one "right" path and they each come with their own set of pros and cons. I personally took the self-taught route, using free online resources and building projects to create a portfolio. This worked well for me as someone who was highly motivated, good at independent learning, and unable to afford a formal education.

However, self-teaching can also be isolating and lacks the structure, accountability, and career support that you would get from a bootcamp or degree program. Bootcamps provide a more immersive, structured learning environment and often include career coaching to help you land a job after graduating. But they can be very expensive and time-intensive, with mixed job placement results.

A computer science degree provides the most in-depth and well-rounded education, with opportunities for internships and networking. But it is also the most time-consuming and expensive path, and much of the coursework will be theoretical rather than practical.

Consider your learning style, budget, timeline, and goals when deciding which path makes the most sense for you. And remember that it‘s never too late to change course if you start down one path and realize it‘s not the right fit.

Master the fundamentals

When you‘re excited to start building flashy, impressive projects, it can be tempting to skip over the boring fundamentals. But a strong foundation in the core concepts of programming is absolutely essential for long-term success.

"Learning to code is like building a house – without a solid foundation, the whole thing will come tumbling down. Spend extra time making sure you really understand the fundamentals, and the rest will come much easier." – Emily Johnson, Senior Software Engineer at Netflix

Make sure you have a deep understanding of concepts like:

  • Variables and data types
  • Control flow (conditionals, loops)
  • Functions
  • Data structures (arrays, objects, hash tables, etc.)
  • Algorithms and time/space complexity
  • Object-oriented programming

I recommend starting with a language like Python or JavaScript that has a relatively beginner-friendly syntax. Once you feel confident in your grasp of the fundamentals, you can start exploring more advanced topics and specialized areas.

Having a strong foundation will also make it much easier to pick up new languages and technologies down the road. The fundamentals of programming are universal, even if the syntax changes.

Choose a specialization

Software development is a vast field with many different specializations and career paths. Some of the most common roles include:

  • Front-end developer (HTML, CSS, JavaScript, React, Angular)
  • Back-end developer (databases, servers, APIs, business logic)
  • Full-stack developer (combination of front-end and back-end)
  • Mobile developer (iOS, Android)
  • Game developer (Unity, Unreal Engine)
  • Data scientist (machine learning, artificial intelligence, big data)
  • DevOps engineer (cloud computing, deployment, site reliability)
  • Security engineer (encryption, authentication, penetration testing)

While it‘s good to have a general understanding of the different areas, it‘s also important to choose a specialization and build deep expertise in a particular skill set. Consider your interests, strengths, and the types of projects you want to work on.

Specialization not only makes you a more valuable and marketable job candidate, but it also allows you to command higher salaries. According to data from Stack Overflow‘s 2020 Developer Survey, the highest paying languages and technologies include:

Technology Average Salary (Global)
Perl $76k
Scala $76k
Go $74k
Rust $74k
Ruby $71k
Objective-C $70k
Swift $69k
Kotlin $69k
Haskell $69k
Julia $68k

Of course, salary shouldn‘t be the only factor in your decision. It‘s important to choose a specialization that genuinely interests and excites you. Passion and curiosity are key drivers of success in this field.

Build projects to learn and showcase your skills

Reading tutorials and watching video courses is a great way to introduce yourself to new concepts, but the real learning happens when you start building projects on your own.

"The biggest mistake I see new programmers make is spending too much time passively consuming content and not enough time actually writing code. You can watch hundreds of hours of tutorials, but nothing compares to the experience of building something from scratch." – Alex Johnson, Lead Developer at Codecademy

As you learn, start brainstorming project ideas and challenging yourself to bring them to life. If you‘re stuck for ideas, here are a few prompts to get you started:

  • Build a personal website or online portfolio
  • Create a web scraper that collects data from a website
  • Make a weather app that pulls from an API
  • Build a to-do list app with a database backend
  • Create a game with JavaScript and HTML5 Canvas
  • Contribute to an open source project on GitHub

Your projects don‘t have to be groundbreaking or even fully functional. The goal is to practice your skills, learn new technologies, and start building a portfolio to show potential employers.

Open source contributions are a great way to gain experience working with a larger codebase and collaborating with other developers. It‘s also an excellent opportunity to get feedback on your code from more experienced programmers.

Develop a growth mindset

Learning to code is hard. You will inevitably face bugs, errors, and concepts that make you want to throw your laptop out the window. It‘s important to develop a growth mindset and see these challenges as opportunities to learn and improve, rather than indictments of your intelligence or aptitude.

"The most successful developers I know are the ones who are always willing to admit when they don‘t know something and are constantly seeking out new knowledge and skills. They see every bug and error message as a chance to learn something new." – Sarah Smith, Software Engineer at Google

Some key tenets of a growth mindset include:

  • Embracing challenges and seeing failure as an opportunity for growth
  • Believing that your abilities can be developed through hard work and dedication
  • Seeking out feedback and criticism to identify areas for improvement
  • Viewing the success of others as inspiration rather than a threat
  • Celebrating the process of learning rather than just the end result

This mindset shift is especially important as a self-taught developer, as it‘s easy to compare yourself to others and feel like an imposter. Remember that everyone starts somewhere and there is always more to learn, no matter how experienced you become.

Network and seek out mentorship

One of the biggest challenges of learning to code on your own is the lack of guidance and support. It can be isolating to spend hours debugging code by yourself, without anyone to turn to for help or advice.

This is where networking and seeking out mentorship can be invaluable. Attend local meetups and conferences, participate in online forums and communities, and don‘t be afraid to reach out to developers you admire for advice.

"Having a mentor was one of the most important factors in my success as a self-taught developer. They provided guidance, answered my questions, and helped me navigate the early stages of my career. I wouldn‘t be where I am today without their support." – Michael Johnson, Senior Software Engineer at Airbnb

Some tips for finding a mentor:

  • Attend local coding meetups and introduce yourself to experienced developers
  • Reach out to developers you admire on social media or through mutual connections
  • Join online communities like the CodeNewbie Slack group and participate in discussions
  • Apply to formal mentorship programs like CodeMentor or MentorCruise
  • Don‘t be afraid to ask for help or advice when you‘re stuck on a problem

A good mentor can provide technical guidance, career advice, and emotional support as you navigate the challenges of learning to code and breaking into the industry.

Develop your soft skills

While technical skills are obviously important for a career in software development, soft skills are often just as crucial for success. In fact, a study by the National Association of Colleges and Employers found that the top three attributes employers seek in job candidates are:

  1. Problem-solving skills
  2. Ability to work in a team
  3. Communication skills (written and verbal)

As a developer, you will need to be able to communicate complex technical concepts to non-technical stakeholders, collaborate with designers and product managers, and work effectively on a team.

Some ways to develop your soft skills:

  • Practice explaining technical concepts to a non-technical friend or family member
  • Volunteer for leadership roles or group projects to gain experience working on a team
  • Take a course or workshop on public speaking, technical writing, or conflict resolution
  • Seek out opportunities to present your work or give talks at meetups and conferences
  • Practice active listening and asking clarifying questions in meetings and discussions

Don‘t underestimate the importance of these skills in your job search and career advancement. Many hiring managers prioritize candidates with strong communication and collaboration skills, even if they have slightly less technical experience.

Never stop learning

The field of software development is constantly evolving, with new languages, frameworks, and technologies emerging all the time. To stay competitive and advance in your career, you will need to commit to continuous learning and skill development.

"The most important skill for a developer is the ability to learn and adapt quickly. The languages and tools you use today may be obsolete in a few years, so it‘s crucial to stay curious and keep your skills up-to-date." – Lisa Chen, Director of Engineering at Spotify

Some ways to stay on top of the latest trends and best practices:

  • Follow industry blogs and podcasts like Hacker News, Stack Overflow Blog, and Software Engineering Daily
  • Attend conferences and workshops to learn from experts and network with other developers
  • Participate in online courses and coding challenges to learn new languages and frameworks
  • Read books and whitepapers on software design patterns, architecture, and best practices
  • Experiment with new technologies and build side projects to stay up-to-date

Don‘t be afraid to branch out and explore new areas of software development as well. You may start your career as a front-end developer but discover a passion for machine learning or blockchain development. The beauty of this field is that there is always more to learn and new problems to solve.

Take care of yourself

Learning to code can be an intense and all-consuming pursuit, especially if you‘re doing it while working a full-time job or caring for a family. It‘s important to prioritize your mental and physical health to avoid burnout and maintain a sustainable pace.

Some tips for taking care of yourself as a developer:

  • Take regular breaks to stretch, walk around, and rest your eyes
  • Set boundaries around your work hours and stick to them
  • Make time for hobbies and activities outside of coding to maintain a healthy work-life balance
  • Prioritize sleep, exercise, and healthy eating habits to maintain your energy and focus
  • Reach out to friends, family, or a therapist if you‘re feeling overwhelmed or struggling with imposter syndrome
  • Celebrate your successes and milestones, no matter how small

Remember that learning to code is a marathon, not a sprint. It‘s okay to take breaks, ask for help, and go at your own pace. Your physical and mental health should always come first.

Conclusion

Learning to code and breaking into the tech industry can be a challenging and overwhelming journey, but it‘s also an incredibly rewarding one. As someone who has navigated this path myself, I can attest to the power of hard work, persistence, and a growth mindset.

Remember to focus on building a strong foundation in the fundamentals, seeking out mentorship and support, and continuously learning and developing your skills. Don‘t be afraid to specialize and build deep expertise in a particular area, while also branching out and exploring new technologies and problem domains.

Above all, remember that your worth as a developer is not defined by your technical skills alone. Soft skills like communication, collaboration, and problem-solving are just as important for success in this field.

With dedication, curiosity, and a willingness to learn from failure, you can achieve your goals and build a fulfilling career as a software developer. As the famous computer scientist Alan Turing once said, "We can only see a short distance ahead, but we can see plenty there that needs to be done." Now it‘s up to you to go out there and build the future.

Similar Posts