These are no ordinary tips that I’m about to share with you. Doing these things will definitely change your life for the better. You’ll have more confidence, be better prepared, improve your working relationships with coworkers, and of course, become a better programmer.
You can use these tips for things other than programming. Just remember that the examples I’ll give you here relate to programming.
What’s your favorite tip? Or do you have something you think should be included here? Let me know in the comments below.
The full list of tips is:
- Take responsibility for your own future.
- Set yourself up for success.
- Be ready for short learning opportunities.
- Do something useful right before going to sleep.
- Explore your platforms.
- Expand your skills.
- Understand instead of memorizing.
- Learn how to solve problems.
- Seek advice and talk with other developers.
Ready? Here we go!
#1 Take responsibility for your own future.
I see a lot of people who say they want to improve but then they wait around for something to happen to them.
You have to first make a choice to get better.
You have to want to improve.
And then you have to start it yourself.
I list this as the first tip because it really is the starting point for becomming a better coder.
You don’t have to wait for your job to send you to training. That might never happen. The following tips will show you ways you might not have thought of to begin your training.
It has to start with your decision to improve and a commitment to see it through. Pick something that interests you and start doing something with it.
When you show that you can take responsibility of your own future, then other people will start to trust you more too. Once you begin, you might find that job training coming your way after all.
#2 Set yourself up for success.
You’ll hear me talk a lot about how failure is okay. That doesn’t mean you should actively seek out failure though. I’ll show you some easy things that will help you stick with the commitment you just made.
Deep down, we’re all the same. When we’re short on time and in a hurry, we skip things or forget things. This tip will help you set yourself up so you can find success. And it will help even if you tend to start something only to stop after a few days or weeks.
How can you convince yourself to keep going?
Simple, by recognizing our typical behavior and doing things ahead of time. When the time comes to take action, you know you’re going to choose the quickest and easiest path. Make sure that path is the one you planned for.
Let me give you a quick example. This has nothing to do with coding but should help explain what I mean. Sometimes, I need to remember to do something. I know myself and know for a fact I’m likely to forget. So what do I do?
Instead of ignoring this, I might setup an alarm on my phone right away. If I need to bring something with me, I’ll put my car keys on top of it or put it in my backpack. I do this right away. That’s the key.
Take the time now to put in place something that will help you improve your coding. One good idea is to pick a time each night to learn and practice.
Actually schedule it. Put an alarm in your phone. Or maybe instead of watching the 7 o’clock news, you decide to spend that hour coding instead.
The key to sticking with this is to track yourself.
This can be as simple as putting a line through your calendar every day. Just like how you might count down the days until some special event. This is counting up the days you stick to your schedule.
Make your progress visible. And then choose goals that are within your ability to control. So instead of tracking your coding progress which is hard to measure, track your time spent instead.
It’s okay to take a break sometimes, but by having a visible reminder of your progress, you’ll be more likely to get back in there and continue.
Plan to do a little bit each day.
Even if you can only squeeze in a half hour, that little bit over time will let you see big improvements. The point is to avoid cramming. Take it slow and steady and put in place a system that will make it easy for you to make progress.
#3 Be ready for short learning opportunities.
This tip builds on the previous tip. Only instead of your main scheduled time, there are things you can do that will let you take advantage of short learning opportunities.
You have to get ready for these ahead of time though. You might only have 5 minutes when you find yourself in a long line at a store checkout.
Instead of getting upset over waiting, make use of it instead!
I recommend that you subscribe to various programming YouTube channels, podcasts, and even have some books loaded into your reading app on your phone.
When you do this ahead of time, it’s very convenient to turn downtime into positive uptime.
If you have a 10 minute bus ride or something that’s predictable, then this tip is golden for you. Plan ahead to use the time.
I used to listen to music when driving. Back when I was growing up there were no MP3 players so my car was the only audio device that was portable. Audio books are so much better and I enjoy them a lot more.
When I was learning how to program, I lived in a city and had to take the bus and train to work each day. I would bring a book with me and even a battery powered head light because the bus would dim the lights while driving.
You’ll be surprised how many small opportunities there are each day once you’re ready to take advantage of them.
#4 Do something useful right before going to sleep.
Sleep is the ultimate downtime and often overlooked. Now, none of us can control what we dream about. But we can influence it.
Here’s how to improve your learning while sleeping.
How many times have you had a bad nightmare after watching a scary movie? Did you go to sleep right after the movie? If you’re anything like me, then your sleep will be most affected by what happens right before.
So why not nudge yourself in a better direction? And let your mind absorb something that will help you instead of make you scared?
All it takes is a routine where you read about 10 minutes right before going to sleep. Or maybe you watch a quick YouTube tutorial as you’re relaxing and adjusting. Even a quick mental review will help.
Doing this will let your subconscious mind build on what you learn about. You’ll gain new insights. It won’t happen every night. And you might not even remember thinking about coding when it does. But it will help.
This is the best time to bring failure into the picture. If you want to improve anything, you need to be trying out new things. How do you know if they’re new? Just look at how many times you fail.
If you only try things that are guaranteed to work, then you’re not experimenting.
You should expect an experiment to fail. Learn from it. And try again.
When you install a new software tool, go into the settings and preferences and change things around. Customize everything. That’s how you learn. Don’t be afraid of breaking something.
#6 Explore your platforms.
I thought about including this one with the previous tip to experiment. But this is more about learning than trying out new things. Here’s what I mean.
Learn how computers work.
A lot of programmers focus so much on learning the language that they forget to learn about the computer itself.
Let’s say you wanted to learn woodworking to build furniture. Following this tip, I’d recommend that you spend some time to learn about the trees. Because that’s where the wood comes from.
Do you really understand all the hardware inside your computer? Do you know what logic gates are and how they work? How about the kernel and how it manages processes?
Taking the time to understand your platform will make you a better programmer.
Maybe go get an inexpensive computer and install Linux on it. Or go in a completely different direction and spend $20 on an Arduino or Raspberry Pi and learn how they work. This is actually more in line with the previous tip on experimenting.
You can also research older computers and learn how they used to work. What was it like to write a program for DOS? Or early versions of Windows?
#7 Expand your skills.
I know, you might be thinking, “Isn’t that the whole point of this?” Yes, but I suggest you take this to a new level.
There’s so much to learn! I’ve been coding for 28 years and I’m still learning. It really is a lifetime commitment to continuous improvement. when I suggest that you expand your skills, I’m talking about things like these:
- Learn your tools. Your editor, compiler, debugger, profiler, and git. Have you ever tried writing your own editor? I guarantee you’ll be in for a surprise if you do.
- Learn a completely different programming language. If you’re tryng to learn C++, then spend some time to learn Perl too. You’ll see things in a new light.
- Learn how to read and create design diagrams. These will help you to better understand and communicate your ideas for larger projects.
- Investigate different ways to store and describe data. Do you really understand XML? How about JSON? Care for some Protocol Buffers?
- Study security best practices and hacking. Learn how people break into computers so you can write better software that’s more secure. I just read about a case where 7-Eleven in Japan created a new smartphone app to let customers buy food and snacks in the store. They built in a password reset feature but let users supply any email address for the reset email. The app was shutdown within a couple days after 900 people were locked out of their accounts by thieves who stole about half a million dollars.
- Learn how famous viruses work. How did they infect computers? What vulnerability let them in?
- Learn coding design patterns. I can’t stress this one enough. This is something I recommend to everybody who’s just getting started with coding. Patterns are common solutions that work. Learning about them will let you use them in your code.
- Learn data structures and their uses. This is the type of subject you would learn about in college. You’ll probably never need to write your own linked list but who knows? Maybe you will.
- Learn common algorithms. An algorithm is just the steps you follow to accomplish something. Programmers usually refer to more interesting algorithms that solve common problems. Since the problems are common, you’ll likely need to do something similar. Why not be aware of the algorithms that will help you?
- Learn how device drivers work. Not that you’ll need to write one anytime soon. Just understanding the basics will help you understand how your computer works and make you a better programmer.
This list is nowhere to being complete. It’s mainly to give you some ideas of things you might not have thought about learning. You can find some helpful books on the Resources page that I recommend.
#8 Understand instead of memorizing.
Sometimes, memorizing things can increase your speed. I’m not suggesting you never memorize anything. Make sure you really understand the concepts.
For me, I forget things all the time.
It’s almost impossible to forget an understanding.
Once I get the basic idea, I can always review it and get back the things I forgot. That should be your goal too.
You’ll know when you really understand something. Some people say it clicks into place. For me, it’s when I can answer questions about something. If there’s even a single nagging question in my mind that I don’t immediately have an answer to, then that means I don’t yet fully understand.
So ask questions and keep asking until you run out of questions.
When you can answer them yourself, then that’s a good sign you’ve made it to a level where you understand.
Now let’s take this to a new level. Just because you understand doesn’t mean you should stop questioning. One of the greatest joys I look forward to is when I learn something so new and different that it changes my understanding.
Yes, your understanding can change.
It’s not some absolute and permanent structure. Some people make the mistake of getting too attached to their understanding. I get it. Maybe because we work so hard to reach understanding, we don’t want to go back to the questioning stage again.
This is an illusion. Once you realize your understanding can no longer explain a new question, you have to go back to searching for a new understanding. If you don’t, you’ll only be fooling yourself.
All this is especially important with coding. Because there’s so many different ways to write code, you can’t rely on a memorized way. You have to be able to adapt your understanding to the specific solution you’re working on.
One of the best advice I remember was during an interview for a job that I didn’t get. The interviewer suggested that I avoid books with the word “recipe” in the title. I’m not talking about cookbooks. I’m talking about books that show you specific code examples for how to solve coding challenges.
My advice to you isn’t to avoid recipes and shortcuts completely. But to avoid relying on them. Seek to build up your level of understanding so that you can write your own coding recipe or how-to books.
#9 Learn how to solve problems.
Once you start looking for real understanding like the previous tip recommends, you’ll want to learn how to solve problems. Think of this as learning how to apply your understanding.
Understanding by itself doesn’t get you anywhere.
You have to apply it and practice it. Only then will you get better.
How do you learn how to solve problems?
The first thing that comes to mind is to solve some coding challenges. There’s websites you can search for that have coding competitions or promise to prepare you for job interviews. I’m not a big fan of these.
The types of problems you’ll solve at a coding challenge site always seem so artificial to me. It’s like they’re designed with some trick solution in mind. If they teach the solution to you and explain it so you can build up your understanding, then it’s okay. You’ll learn.
My experience with sites like this though is they tend to keep the best solution hidden. They’re more of a test than a way to learn. That’s not what you need.
What I recommend instead is to pay attention to how things are done in real life.
Nature has had millions of years to experiment and has come up with some really good solutions. Our own common sense is also a great guide to solving problems.
Let’s say you need to sit at your desk and work on something and also want to drink some tea. Do you keep your cup of tea in the kitchen or dining room while your desk is somewhere else? That would mean you have to get up and walk to the other room every time you wanted to take a drink. Why not bring your cup next to you?
You’ll want to take care not to spill it, sure. As long as you’re careful, it’s a lot better to have you cup within reach. It’s easy to forget when programming that the computer processor sometimes needs to go out to memory to get information. How far away does it need to go to get the information it needs?
This is what I mean by paying attention to how we naturally solve problems.
Think about how you know when you’re done with a task. How do you know when it needs to start?
And a big one.
How do you save yourself from doing unneeded work?
If you’re solving math problems on paper and find that you often need to know the answer to 7 times 7, that’s when you’ll want to memorize it.
For coding, memorizing something is like caching the result. Or creating a lookup table if it never changes. Let’s look at caching for a moment. This is always a difficult problem to solve in programming.
Why is caching so hard?
Because of cache invalidation. It’s one thing to remember the answer to something so you don’t have to spend time figuring it out again. But what do you do when that answer can sometimes change?
Let’s say you call your friend a few times each day. You don’t want to look up the phone number each time, right? so what do you do? You cache the number someplace. This used to mean you had to memorize the number. Now days, you can store the number in your phone contact list.
This works well until one day when your friend moves and gets a new phone number. What happens when you try to call your friend now? You get no answer. Or if you’re lucky, you get an answer from somebody who tells you that you have the wrong number.
Once you know the number has changed, you can remove the old number from your cache and figure out the new number. The hard part of dealing with caches is knowing when the saved result is no longer good and needs to be thrown away.
Just thinking about how you might solve this problem in real life can give you clues for how to solve it in code.
You should still study problem solving. Books about algorithm design will be helpful. Many of these are a bit heavy on theory though and might be hard to read. I have some recommendations on the Resources page that should help.
#10 Seek advice and talk with other developers.
Talking with other developers will not only encourage you to continue, it’ll give you ideas to explore and opportunities to explain your own solutions. Offer your services to help others. Just seeing how others solve problems will be well worth your time.
Then you can ask others to review your code too. Don’t be afraid to show your work. That’s how you’ll learn and get better. A lot of code is open source and the companies and organizations behind this code are doing great even with their code widely available.
This is especially important when you’re learning how to code.
You’ll get a lot more benefit from feedback and code reviews than you will by keeping your code to yourself in secret.
Once you build a good working relationship with other developers, keep it going by sharing interesting information and new things you discover. Sometimes your friends will already be aware of what you’re sharing. And other times, it’ll lead to you providing value to them and reinforcing your own skills by explaining it.
I also recommend that you register for conferences and watch past conference videos.
The best conference I like to go to is CppCon. You can watch all the presentations on the CppCon YouTube channel from past years. Videos from 2 or 3 years ago and sometimes longer is still perfectly valid and will help you. Attending the actual conference takes your learning to a whole new level. You can find more including schedules and event descriptions at cppcon.org.
The most important guidance I can give you is to take action right away and stick with it.
This is a lot of tips and advice, I know. I hope you get value from this and improve your ability to code and solve problems. If you have any feedback or suggestions, please leave a comment below. Thank you.
And if you like this, please share it with your friends. You can use the links below. It will help you too by sharing.