5 Tips for a Beginning Programmer (plus two bonus tips)
Computer programming is difficult for some, but today's 5 tips (plus two bonus tips) give beginners some direction in advancing their career.
Disclosure:
I get commissions for purchases made through links in this post.
Today's post is geared more towards the beginning programmers in my audience. It's not a post on how to learn to code, but more of where to go once you've learned the basics.
I know I just got through with a post on how to improve your programming skills, but I've had a couple people ask me, "What if you have the basics and are just starting out?"
If you've just completed a computer programming course (maybe through high school or college), you may be asking yourself, "what are my next steps?"
It may be intimidating, but rest assured, we've all been there. You need to start somewhere.
Hacking away at a computer for an hour only to have it yell back at you Syntax Error or display a blank page after you keyed 13 pages of code only to realize you have an error...somewhere is hardly something I would consider a fun time.
When I first started writing code, my parents would hear me yelling at my computer. Looking back, I guarantee they thought I needed to see a therapist, but I put their minds at ease saying "this is what all programmers do."
When they got used to the idea of me having a "Wilson" in my room, they understood you need to talk things through in your mind.
Along with "talking to my computer," I had four things against me growing up:
- Using a computer, I was automatically considered a "geek/nerd." (High school was soooo enjoyable). :-|
- In the country, I had a disconnected computer. Attention Millennials...that meant no Internet.
- I didn't have anyone close by to ask questions. I had to learn everything on my own.
- Brown-outs where the electric would go out. I would then continue to write code by hand on paper...with a candle. OMG, now I'm starting to sound like my parents..."Went to school in 6 feet of snow...uphill." :-p
I had to learn to code the hard way. To give you an idea, when I wanted to learn about code, I went to the supermarket with my parents and they would leave me (by my request) in the magazine aisle with the comics and computer magazines like Compute!'s Gazette! and Compute! Each magazine would have the latest utilities and games you could type in and play. So I would buy the magazines, take them home, and play with the code in each magazine learning as I typed.
At that point, I knew what I was going to be doing for the rest of my life.
Maybe it was the knowledge of knowing how to solve problems with a computer, or maybe it was knowing just a little bit more than someone so you could help others with computer issues, or maybe it was just building something out of nothing using your brain and fingers to write systems.
Whatever the case, I don't regret any of it.
Fast forward to 2017 and things are a little different.
Nowadays, it's a whole hell of a lot easier to get started with programming because all you need is a laptop to learn to code. If you run into problems, you have (drumroll, please) The Internet with websites containing code, videos, and courses. Sprinkle in real-time hangouts and hand-holding as needed.
But when you're a new programmer, whether in or out of school, how do you continue to learn how to code?
1. Understand (and master) the basics
This reminds me of a comment from an older fellow colleague whose uncle used to say, "I've forgotten more than you'll ever know."
Even today, I see a topic and go, "Hmmm, I vaguely know how to do that, but I need a refresher on it." I start reading over it again. It's always good to master the basics. You may have missed something the first time around.
As a beginning programmer, you'll experience "new roads" to head down. For example, most developers know about C#, Arrays, and Lists, but do they know about serialization and deserialization? How about graphics programming? Web development? How about threading?
It's one thing to know the basics of a language. It's another thing to specialize (and master) numerous types of programming in that language.
2. Find a mentor (or user group)
Based on one of my four factors from above, I didn't have anyone around to teach me best practices. I had to learn from the "school of hard knocks." Write the code and see if it ran ("Unit Tests? In BASIC? HA!").
Now, you can easily find a mentor using the Internet or even in your place of work.
Head to monthly user group meetings (like CONDG) or coding Meetups.
The more you attend, the more you network and learn about other coding techniques.
3. Read code examples
I have never seen so much code in my life as I've seen at GitHub.com. Even Microsoft moved ALL of their code from codeplex to GitHub.com.
If you are looking how to execute a loop efficiently in JavaScript, there are more than enough libraries out there to help form your own opinion.
If you work as an intern, you'll most definitely see the difference between good code and bad code where you work. Some code examples are blatantly wrong and some will be subtle and hard to detect.
But if you are writing code in a company, I'm pretty sure your peers will ask you to rewrite your code if it's deemed unacceptable in a code review meeting.
Whatever the situation, the more experience you have, the more keen your eye will be in finding good and bad examples.
4. Open source your small project.
As Scott Hanselman has mentioned in the past, write a small project and push it out there.
Most developers aren't (THAT) critical of your code and will offer support to make it better. At least most developers will.
This will provide you with various ways to learn about proper design patterns and how to make your code better by receiving feedback from your peers on the Internet.
It's a win-win...provided you don't break down crying after someone rips your code apart. ;-)
5. Always be learning
"So what have you been reading lately?"
"Uhh...Design Patterns in C#?"
I was asked that by one of my friends. What he expected to hear was a science-fiction novel or some fantasy book. Instead, I'm reading a book on Design Patterns. Man, I lead a sick life. ;-)
I'm constantly reading and taking courses online through PluralSight (affiliate link) or Udemy.com (affiliate link)
As a beginner developer, you should be doing the same. Learn to code as much as you can and soak this stuff up like a sponge!
Once you have that knowledge, apply that knowledge by writing something YOU could use personally.
If you need a To-Do list, write a To-Do list. DO NOT worry about what other people already wrote. This is strictly meant to be an exercise for you to write code and understand all of the working mechanisms. You say it could even be a...code kata? <pinky finger to lips>
(Bonus Tip) 6. Create a Project for someone
When I was younger, the owner of a snow plowing company was in a tough situation and needed a contact management tool. While he didn't ask me to write it, I took it upon myself to write a quick and dirty application...
...in a weekend.
Monday morning came around, I delivered the program to him and he was overjoyed and ecstatic with my efforts. Got a bonus as well.
This type of mentality always gave me a rush and it lead me down a path of coding competitions way back in the 90's.
When you give yourself a deadline, the knowledge and mastery of a language, the clear direction of what a program should be, and the passion to work those fingers to the bone, the only thing missing is the starting gun of building said-program.
Of course, if someone asks you to write something simple, if you can't achieve it, don't bite off more than you can chew. This was a simple CRUD application meant to hold a list of names and addresses which I knew I could write.
But if there's a way for you to write something fast and someone needs it immediately, even if it takes a week, as one of my friends used to say, "It's time to dig, groundhog!"
It also teaches you how to write code under a certain amount of pressure when (and if) that time comes.
(Bonus Tip) 7. Be Persistent
It's one thing to say you will start a career as a programmer. It's another thing to give up when you get your first error.
My problem with computers now is that my brain doesn't shut off. I've been doing this for so long, I analyze the crap out of it and beat it into submission. My persistence has earned me a title among my peers as someone who will always find the answer no matter where it's hiding.
Persistence can also be a bad thing, though. There are times when you need to let it go. Timebox it to 30 minutes to an hour before asking somebody for help. Usually, the funny thing about asking somebody is that the minute you let it go is the moment you realize the answer.
My advice is always continue to "work the problem" to it's conclusion. Finish what you started, but within reason.
Conclusion
As a beginning programmer, you may experience some bumps in the road, but as I mentioned before, you are NOT the only one who has experienced this before.
Intermediate and veteran developers alike have all experienced these issues. A lot of developers and architects continue to learn (including me), but don't think you need to know everything.
Find a specialization (like a web developer for example) and learn it, master it, then learn it again.
Always Be Coding (as opposed to Always Be Closing).
Did I miss a tip? How about you veterans out there? Got any tips for beginners? Post your comments below and let's discuss.