1. Focus on fundamentals
Focus in structure, architectural point of view, abstract thought instead of specific language implementation. Spec is half development, to have a clear vision before you code everything is half the work. Think in paper, get use to the whiteboard, develop a solid process of thought with the focus in solving the problem.
2. Code every day.
Every day, at least in paper, code something. Really, every day. Code for fun, code for progress, code for learning, not just for work. Setup a personal project, It could be some repository for algorithm solution exercises or a personal website, but work in it as your own pace, no pressure, all enjoyment, all reward.
3. Tune your ride.
Introduce your favorite tools and make them available for you in a easy way. Customize your editor, IDE, compiler, automate some scripts, include your favorite plugins, make it portable, automatic, pimp your ride, honey your axe every day, pimp your ride, get ready your tools, they’l become a part of you as a professional coder.
4. Learn management.
It will be more useful than you think. Basic management is as follows: Plan, Organize, Execute. Plan, Organize, Execute. And it’s repeated over and over in project, program, risk, time and every other kind of management. Always plan first, organize and then and only then execute. Get used to do this and your life, in every aspect, will be much more pleasant.
5. Fail soon, fail quickly, fail once.
Make mistakes. A lot, as sooner as possible, and make every mistake just once, learn from every mistake and make a system so you won’t make the same mistake once. For example, a very commonly fatal mistake is to forget the where in an update/delete query. So make a system to write the where first, then the command. Soon you’ll never forget the where, even if you write the sentence from top to bottom.
6. Pay no attention to critics. Specially from yourself.
Internet is full of resources to learn to code, but also full of trolls. If you make a “dumb question” to a group or forum, many people will just criticize you instead of help you. Those people have a problem, an emotional problem, they need to made someone else feel bad because they feel bad themselves. Made your part though, made your research, take some tutorial, have a background and make specific questions, don’t ask to a group something that you can ask google (or duckduckgo :)). But if some people try to bully you, just ignore them. Many will try to induce you the “real programmer syndrome”, that you’re not a “real programmer” unless you code free, just for fun, you know linux and do “all-nighters” all the time. The moment you make your first program you are a “real programmer”. The moment you get paid for a piece of software you code you are a “professional programmer”. Those people have the “atlas syndrome” and want you to feel like them.
Avoid criticize yourself. You learning and will improve everyday, if you code everyday. Avoid fall for the “imposter syndrome”, you’re you, just be honest about what you can’t do. If someone ask you something you don’t know, just plainly tell them, “I don’t know. But I will find out”.
7. Fear is your worst enemy.
You may think what you know enough to make a living, not updated, that you’re not learning “the right language”, that you have to learn what the trend is, or even try to predict the future. This is plain insecurity. What you’re saying is that you feel insecure, that you value stability over progress, that you are more worried about yourself than about deliver the best of you to others, and that’s what is all about in any job, in any field, in any industry.
Economics is no more than an exchange of values, if you want money, you have to deliver something valuable to your client, to your company or to your boss. So focus in solving problems and provide value, focus in systems not in technologies, improve yourself, become proactive and sharpen your abstract thought, in order to learn things and solve problems will be easy for you.
You know, the fundamentals are the same in every language and platform, develop an architectural point of view instead about worrying that if the trend change language you’ll be out of job. If you become good in solving problems and delivering value, you’ll never be out of job, I assure you.
8. Innovation and creativity must be your mantra
How can I make this faster? How can I make this more efficient? How can I improve this? Develop the habit to ask yourself these questions every time you finish coding a piece of software and soon you’ll be progressing exponentially.
Learn, apply, improve. Learn, apply, improve. It doesn’t need to be a major breakout improvement, the sum of all small changes makes wonders, what is important is to develop the habit of continuous improvement, to build a system, to grow a sense of awareness and promptness.
Some days you’ll be on fire, some days will be lame, but do it anyway. Do it every time you apply something, and brick by brick, soon you’ll build a rock solid wall of knowledge, a set of skill, a profitable attitude. That alone counts for itself.
9. Give. Give frequently. Give more.
Give the most you can to the most possible people. Write some blog articles, make a video tutorial, code a plugin or a library and share it with the community, engage in groups, forums, open source projects. The more you give, the most value you return to the community, the more relationships you build, the more experiences you get the more you’ll open your mind and heart the more passion you’ll have, it’s unavoidable.
The more people you help the wider your vision, the bigger your world. You’ll get to know fantastic people, and the community will acknowledge you, you’ll get to participate in bigger and important projects, you’ll build a kick-ass resume and an amazing project portfolio before you even realize.
10. Trust your gut
Following this path will get you to a wiser, kinder version of you. Unavoidable you’ll be a mature coder, so trust your instincts, you’ll get a kind of sixth sense in your field, and awareness, super conscious mindset. It’s not magic, it’s the expertise of the craftsman. This is a system to get you there, expertise is no genius, or prodigy, it’s something you build by yourself and nothing can take from you, so trust yourself.
11. Keep going.
One more try, one more line of code, one more unit test, one more project, until you reach the top. Top-notch is achievable. Code every day. Give every day. Have fun, in a daily basis.
12. The Bonus: If you have no patience…
This approach takes time. Lots of it. Specially the young ones may have not the patience and are looking for a faster way to achieve success. My advice is to develop patience, but if you’re decied to find a quicker way, here you have it: Focus in give. Give more. Then give more to more people. Work like hell the way you want. If stress you choose, if your strategy is to try shortcuts and do a lots of all-nighters like crazy, and nothing I say will change your mind, then go ahead but never ever forget to focus in give. Avoid to close yourself, lock yourself in your ivory tower, focus in winning big by give the most value you can, and the most value you can give always is something that solves a problem to others.
Matter very little the technology you’re using or the complexity of your code, you can’t deposit pride in the bank, only money. Focus in helping your client, your boss, your company in a way than can be automated, repeated or that your solution will permanently solve a big problem. This way you can not be mistaken. If only one thing you take from this article let it be this: Focus in winning big by giving big.