Edit: I felt like the original article was a little too long, and wanted to break it up and make it a little bit easier to take in, you can find part II of the series here.
A friend of mine is leaving the company this week. And among all the feelings that such an event could have sprung inside me; I really found myself wishing there was some kind of wisdom that I could bestow upon him.
Why? Well, to explain that I need to tell you a little bit about him.
You see, when I first met him he was a rookie in many different ways (this being his first job as a developer), and watching him grow into a full-fledged developer has been one of the most satisfying experiences of my career so far.
Working with him taught me a lot too because, before, I had always been the newbie at every office I was at. But now there was somebody younger and less experienced than me, who before I noticed began taking in a lot of my own technique and adding it to his own.
That experience opened my eyes to a lot of the things I had missed from my own development a few years back. And this time I was able to experience them, not through the eyes of a hot-headed kid trying desperately to become good at what I was doing (Thank you for your patience Josh.) But as a seasoned developer watching a rookie slowly come into his own.
So now that I close into the end of an era, I’d like to share with you a few of the things I learned from it. Plus a few others I wish I one day have the time to teach my friend.
Without further delay, here’s my advice to new developers:
1.- Polish your communication skills.
I put this point first because, if there’s only one thing that you get out of this list, I want it to be this one. Repeat after me:
Learning to communicate with others makes me a better developer.
Knowing how to express your ideas, both by speaking and writing, is the single most effective way of making your job… No, your life, easier.
You’ll resolve conflict, avoid misunderstandings, build stronger relationships with others, close better deals, secure opportunities, fall in love, etc. All through the magic of just being able to translate what you really think into words in an effective way.
But if you need a refreshment of the basics, or are just looking for a good read, then I can’t recommend How to Win Friends and Influence People to you enough. It’s a little dated (first edition came out in 1936) but the advice contained within its pages manages to be relevant and insightful even to this day.
2.- Don’t marry a technology.
There’s a myriad of choices young developers have to make before they even fully understand the implications brought along with each of them:
- Mobile vs Desktop vs Web (and don’t get me started on embedded)
- Front End or Back End?
- PHP vs Ruby vs Java vs C# vs Python vs … (this list really does go on quite a bit.)
And that’s just some of the most conscious ones.
It’s overwhelming. And what’s most important, it isn’t even something you should really be focusing on at this point.
The learning curve for most programming languages isn’t all that steep anyway, and there are great sites dedicated to making it easy for you to get a grasp in learning pretty much anything. I personally recommend Udemy, but I’ve heard some great things about Egghead.io and Platzi.
Don’t marry a technology. Work and life will end up directing you more towards certain ones eventually, but there’s no reason to not see all that the (coding) world has to offer.
Author’s Note: I found, after a while, that what really works wonders at first is a getting a good hang on the fundamentals. I learned this after a 4 month long experience interviewing around the world. And you can find a comprehensive list of what I consider “fundamentals” at the bottom of this post.
3.- Make Friends, lots of them.
This really should speak for itself but, as you grow older, you’re going to find out that hanging out with the right people is often times more important than being the best at doing actual work.
Who you’re friends with will sometimes be the deciding factor in between getting that job at that firm you really want to be in, or going back to the job board empty-handed.
It will sometimes land you the opportunity you’ve been waiting for to develop that app you are 100% sure is better than Facebook.
Also, having more, and better, relationships with others just so happens to result (usually) in a more fulfilling life.
4.- Learn Design Principles.
Most of us programmers are very logical human beings. We know algorithms, flow charts and pseudocode. We know science and hard numbers.
Yet its often us who have the most problems understanding the reason why something we create doesn’t get used by others. And this lack of understanding is paradoxically derived from our logical minds.
You see, our education teaches us to understand machines that behave through a specific set of rules and patterns. But these differ from the ones that humanity follows, and it is here that we (as developers) tend to get lost.
Design, on the other hand, is a discipline highly invested in appealing to the human mind in various ways. Designers follow a set of principles that have the purpose of better guiding the human mind into understanding the message that is being sent to them.
Designers know how to speak the language of humans in the same way that Developers know how to speak the language of machines. And there is a lot that each can learn from the other.
Whether you prefer Graphic, Industrial, Web or User Experience Design; one thing is certain: Understanding the principles that guide this profession is a sure way to make better products.
5.- Treat your code like a user interface.
Unless you work alone from the comfort of your own home (and even then), one thing’s a given the moment you start a career in development:
Somebody else is eventually going to have to work your code.
So whenever that happens, it is usually a good idea that this code is properly formatted in a way that it can be understood by another human being.
I won’t go into too much detail, as I’m currently working on a post dedicated to this topic, but here are some tips to get you started:
- Group related pieces of code together.
- Use descriptive names for your variables and functions.
- Indent your code.
- Add comments.
This may seem annoying at first, but it really will save you (and everyone) a lot of time when they’re able to look at what you have created and instantly understand it.
Easier to understand code makes you a better developer.
Coming up next.
I really wanted to put the entirety of the advice I have to give new developers into a single post. Alas, it ended up being over 3000 words long and spanning 15 pages. And I hadn’t even covered half of it by that point.
So I made the decision to split this post into its own series, making it 2 posts instead of one (the second one still ended up pretty lengthy anyway).
If you’re interested in learning how to handle technical debt, getting some advice in getting yourself known in your community or my opinion on the best framework for beginners (pro-tip: none); then follow me to part 2 of these series, were we’ll analyze all of these previous topics and more.