25 Tips for New Developers: Advice from a (Mostly) Self-Taught Software Engineer

Ali Spittel on August 07, 2018

The most common question I get from blog readers is "What is your advice for new programmers?" So, I thought it was time to write up my thoughts.... [Read Full]
markdown guide

26 - if you are not native English, take English courses up to at least intermediate level, with the majority of good resources being English and instructions, functions, conditions and others in English

Before kissing Javascript, I surfed a lot between several programming languages.
I would recommend Ruby for beginners.the syntax is like a conversation with your PC for real.
And eventually Javascript.


I'm not native English. This discussion is the best course for my self teaching. Not empty phrases only, but talking about some problems.


+1 for Ruby, if only just to try. It might really stick with you.


So amazingly written with simple yet powerful points that every developer can follow. Loved it so much, Just shared it on Reddit too:)


Thanks for sharing! Wow are the comments toxic over there -- I haven't done much on Reddit but I wanted to see the discussion since its doing well. The attitudes are insane!


I agree with a lot of points in your post, but the top comment on r/programming for this article, though bearing a toxic undertone, is a really good advice

Tip #0: Don't take anyone else's advice too seriously. Most people give advice to validate their own choices and do not really take into account others' experiences, values, and struggles.

... with a huge emphasis on too seriously!


Yes, take a look. Your thread that I shared is the top trending thread on Programming subreddit. Almost 90k views and 350 comments. Insane. I lobe both Dev.to and Reddit.


Hey Ali thanks for that list! Despite i am an experienced developer, I spotted some of the points that I need to take more seriously from time to time.

The Set game from the NYTimes was new to me, thanks for the hint!


Some people tend to jump into learning a framework cause that's what all the job listings say. Building a strong foundation, as you mentioned in the post, and knowing your fundamentals is really valuable.


I agree with the "pattern recognition" tip the most, especially when it comes to learning a language's different design patterns. My coworkers have told me its the area they felt was most important when starting out since it affects so much of their work. Knowing a few good design patterns is great for refactoring and improving code by having different sets of proven, usable designs to measure it against.


Build a toolkit/cheat sheets:

Can't remember how to convert an array to a hash map? Do it once and write a routine that does that (in one or more languages) and save it in your toolkit. Don't forget to give it a descriptive name and comment the bugger.

I have a bin folder of bash shell scripts I drag around on a thumb drive with me. All I have to do to get them to work is symlink /bin/bash to wherever bash lives on the system.

I also have text files with common Git commands, etc. I know I can google them, but why waste time when I've already figured it out once?


It really helps. I too note the problem and solution in pseudo form.. saves a lot of time.


A little thought:

  1. Avoid hype, don't turn yourself in circles trying to understand something because it's "in" right now, understand the fundamental basics of your language, then learn the tools around it. You should be able to build an application without needing the framework. Take for example, I've seen some Angular developers who tell me they're "experts" at Javascript, when given a non-angular project they don't know how to react, as they've only ever used Angular and not vanilla ES6 with Babel.

react pun intended


So true, flavor of the month frameworks will only serve to distract and overwhelm you.


Thanks for sharing this, so much of it very much resonated with my experience as well. #13 (getting comfortable with failure) was something I really struggled with early in my career and paid for it.

I wonder about depth over breadth early on though, my experience early in my learning was while learning "a little about a lot" was helpful for finding the connections between otherwise disparate parts of software development which (for me at least) helped to reinforce ideas and concepts. It also helped me find my niche as it helped me identify the areas that were of most interest to me.

Great post all around though!

  1. Read other people's code... You may not understand a thing now, but it will help your understanding in the future.

  2. Read code line by line. Understand one line before moving to another. When I just started, I read many books without having deep knowledge because I scanned through most code but I am happy I did so instead of doing nothing.


Just starting out learning how to code, so this was really helpful. Thank you Ali.


I love points:

  • "Find your niche"
  • "Depth over Breadth"
  • "Get good at researching"

When I was starting out my first junior position I was really good at Regex. I ended up becoming the go-to guy for complex database migrations since I could convert a huge C# "script" into a really simple SQL script that used Regex to find certain patterns and convert them into the required formats, etc.

These SQL scripts would do the job in a fraction of time (like days down to hours or hours down to minutes).

Eventually, I became the go-to for front-end stuff.

Then other stuff after that.

One of the main things I've gleaned from my career is that you need to be the "go-to" for something in order to stick out.

Sometimes is just a matter of discovering a gap in knowledge on your team - and filling it!

As you said Ali, get the fundamentals down.

I'd add "...then find what gap exists in your team's knowledge and learn learn learn learn!"


“16. You don't need to know everything”

I wish employers understood this. I struggle with trying to learn both React and Vue almost simultaneously because jobs always ask for one or the other or in some cases both! It’s tough to know which one to stick with.


Awesome post, 22 is my favourite!

Another great resource for learning a new language is exercism.io -- they have lots of code challenges, and mentors who can help you out if you get stuck.


Wow this was an absolutely incredible post. Thank you so much for sharing so much wisdom in one place! 22... wow that one hit deep.


"or (like me) write it on your mirror with a dry erase marker" ... Apparently I'm not the only one <3


Nice. Problem-solving and researching are two things that I'm working on improving. Nice tips.


I feel good that I've been doing most of your tips!


I think you mean "regex" or "RegEx" when typing "ReGex".


Ah good catch -- things that Grammarly doesn't catch!


Revist math. My brain took a for loop to my head and I stopped reading. :(


How to get motivated : Read this article .
Great one clap clap


Ali, I also want to publish my content piece here, but i got stuck at a point, that whenever I hit save post button after lay-outing my post, it shows 2 errors always i.e.
(): could not find expected ':' while scanning a simple key at line 5 column 1
Title can't be blank

I have tried a lot and clear all the issue from my end but as it is still shows error there. Please suggest advice.

Oh -- this sounds like an issue with the frontmatter on your post -- that's the part with metadata for dev.to. For example, mine for this post looks like:

title: 25 Tips for New Developers: Advice from a (Mostly) Self-Taught Software Engineer
published: true
description: The most common question I get from blog readers is "What is your advice for new programmers?" So, I thought it was time to write up my thoughts.
tags: beginners, career, learning, tips
canonical_url: https://zen-of-programming.com/start-programming
cover_image: https://thepracticaldev.s3.amazonaws.com/i/iv7xgbbdz48i016zrgvb.png

If there's a colon in your title you will need to put that title in quotes!

@ben and @jess may have even better advice too!

code of conduct - report abuse