10 Programming Lessons For New Developers
What one piece of advice would you give to a new developer learning to code? Today, I list 10 important lessons for new developers.
With 2018 behind us, it's time to turn over a new leaf. A Clean slate. Try something new.
In 2018, I had some developers ask what does it takes (and how long does it take) to become a great developer?
Along with that question, I've also had some veteran developers who work with new developers ask me "what is the best piece of advice you would give to a new developer?"
A number of thoughts ran through my head at the time and one thought was to write this post.
Here are my top suggestions for developers just starting out.
1. Don't get upset after failed attempts.
When I first started writing code, I always had hard crashes and would always talk to my computer asking Wilson "what am I doing wrong?"
If every developer quit after running their first program, there wouldn't be too many developers around.
Of course, if it's something simple, you may get a little upset (<raising my hand> Guilty!).
The good news is most modern IDEs provide the best help whether it's at design-time or runtime. Intellisense, debugging, and Intellitrace in Visual Studio gives developers the best tools to figure out how to solve problems if you run into design-time, compiler, or runtime issues.
Veteran Tip: Two websites I visit often for solutions are GitHub and StackOverflow. These two websites have enough code and solutions to almost every technology issue out there. If you can't find it on either site, you're either doing something "against the grain" (translation: wrong) or on the bleeding edge of something exciting.
2. Be observant
One of the skills of an experienced developer is the ability to see issues with bad code and recommend better algorithms.
Every time I experience a bug, I try to walk through the code like I'm actually the computer running it. But there are times when the bug is sitting right in front of me and I have no idea where the issue is.
I. Just. Cannot. See. The. Bug.
Veteran Tip: Timebox the issue to 15-to-30 minutes and go grab a peer to look at your code. Having another developer look at the code provides "fresh eyes" looking at the code.
3. Be persistent
I would consider this to be one of the best characteristics of an experienced developer.
Never say die. Never give up. Continue until you can get it functional. MAKE IT WORK! Period.
Once it's functional, then "make it pretty" (translation: refactor) to make it readable for other developers.
Veteran Tip: If you are looking for an example on how to code something, dig into Google and search for examples. I've spent hours, if not days, looking for specific examples on the web for a particular topic.
In your research, you may come across a new keyword in Google to use in your Google-Fu that produces even more related content to your problem. As a result, I've come across older (historic?) programming techniques on how to do something. Update the algorithm and it's ready for use in your own library.
4. Stoke the Fire (have passion)
If you've made it this far through the list, then this characteristic will confirm whether you are a passe or career developer.
Most career developers I know finish up their 9-to-5 jobs, go home, and continue to write code.
Your craft is important and keeping up on the latest language updates distinguishes one developer from another.
Your will and discipline are the driving factors here.
So the question you have to ask yourself is how much do you love to code and what's your commitment level?
Veteran Tip: To keep up with the latest technologies, create a personal project that only you can work on. Back in the 90's, I wrote a website to create dynamic content on a page and maintain that code without updating any pages. The iterations went from Classic ASP (1999), then .NET (WebForms in 2005), then ASP.NET MVC (2008), and now, I'm converting my CMS to ASP.NET Core 2.1. This allows me to refactor my CMS into new directions using .NET.
And it's a project I love working on. ;-)
5. Take the time to learn
Every developer starts learning sometime.
Whether it's the latest Angular or Vue release this week, C# language updates, or SQL optimization techniques, in our field, we are constantly learning about new technologies.
If you don't take the time to learn, you may be left in the dust.
Veteran Tip: Take the time to go to user groups (like CONDG). These events give new perspectives on writing code and allow you to learn more at an accelerated rate with real-life usage of problems and solutions.
6. Believe in yourself
At one job, I worked with a team of developers to finish a project. The project went into production and we were proud of the project.
However, one day, we experienced the application wasn't working and it was code I was responsible for writing and testing.
It became an all-hands-on-deck issue because it was production. The team, including me, began to look for the error.
All of the sudden, we noticed the code started working again. The issue was the drive ran out of disk space.
The code worked perfectly, but it wasn't the code...it was the environment surrounding the code. We (yes, WE), thought it was our code, but it wasn't.
When code is written, you can only "crystal ball" so many errors. In this case, imagine putting storage checks everywhere in your code before you execute something. Sounds silly, doesn't it?
With this new knowledge, we talked to networking and they removed some old (and I mean OLD and LARGE) log files and the code began to ran optimally again.
The environment was the problem, not the code.
Veteran Tip: If you have unit tests and integration tests in place, trust in the unit tests and implementation of the code you wrote.
However, it could always be you're out of storage or the network went down. ;-)
7. You can't cheat experience
I understand we're in the digital age where everything is given immediately or close to instantly, but experience is something you can't receive overnight.
It must be earned. You have to put in your dues.
And you will. If you are a passionate developer, it will come to you.
So Please Adjust Your Personal Expectation Meter.
Veteran Tip: I've seen developers wish for the higher title, wish for more money, and wish, wish, wish. However, once they've received it, they realized they didn't want it or didn't like their new responsibilities/title.
So be careful what you wish for and be aware of what's included when you achieve your goal.
8. Don't be Afraid to Ask For Help
On the surface, it may feel like asking questions will make you look like an idiot, but it actually makes you look smarter because it's worse when you sit there and don't do anything.
Everyone can't know everything. One of the problems in our industry is The Curse of Knowledge.
For veteran developers, it's hard to put yourself in the shoes of a new developer. The veteran developers have all of this knowledge and sometimes don't know how to transfer it to the new developer. If you ask questions, this helps the seasoned developer realize they may have to explain a little more for a new developer to comprehend the situation and what's being asked of them.
Veteran Tip: Look for the developers who aren't jack-wagons and those humble enough and willing to help. You'll know who they are. ;-)
9. Buy a Laptop
You'd be surprised. Some developers I know have desktops at home, but do not own a laptop.
Your laptop should be an "away model" of your desktop. I mean, it doesn't have to be tricked out with flames coming out the side, but something to get the job done.
It's also good to have a backup machine in case your primary machine dies on you one day (hence, the laptop).
Veteran Tip: I had a desktop computer for a while, but later in my career, switched to a fully-loaded laptop and haven't looked back. If you run a business, a laptop is useful when showing demos to a client, using it at a conference, or even playing a game remotely while on a lunch break.
Find the right laptop for you that's within your budget and maximize your time like a digital nomad.
10. Go to at least one conference!
If you can swing it, by all means, go to one or two conferences this year (like Codemash...[latest review]). Conferences provide three benefits:
- The ability to network with other professionals which leads to more opportunities
- It allows you to gauge your skill level
- Find out what companies are looking for in possible candidates (as in years of experience and title)
I remember my first conference and my eyes were opened wide. Depending on the conference venue, it can possibly be the best investment you can make in yourself.
Remember, you'll only get out of it what you put into it.
Veteran Tip: I've always considered conferences like tuition for a college class. You pay for the "classes" up-front and attend accelerated, compact sessions to bring your skills up to speed in a short amount of time. Code Bootcamps are also a great way to level up your skills.
Again, it shows you are investing in yourself.
Conclusion
I'm sure everyone remembers their first time writing code and how it crashed spectacularly. These were some of my thoughts while working with developers over the years.
While they've definitely grown with their coding skills, they've also grown in experience and soft skills as well (you know who you are).
What advice would you give to a person who wants to learn coding this year? Did I miss some important advice? Post your comments below and let's discuss.