No matter of experience you have, I'm sure you will find something applicable to you. I wish I read it 8 years ago when I finished university.
Instead of FOMO (fear of missing out), we should practice JOMO (the joy of missing out), which is mostly about being happy and content with what you already know.
That’s why self-awareness is so important, you need to be able to identify what is the signal and what is just noise.
Accept the fact that you simply can’t learn everything. Remember, desires are endless; needs are limited. Accept the fact that newer is not always better. There are people working with ancient programming languages and still making a lot of money. Practice daily the subtle art of saying ‘no’. No to that newest library. No to that fancier platform. Say more ‘noes’ so you can say ‘yes’ to what really matters to you.
"Accept that you can’t learn everything, but you can learn enough to be effective. — Andy Osmani
“You can practice shooting eight hours a day, but if your technique is wrong, then all you become is very good at shooting the wrong way. Get the fundamentals down and the level of everything you do will rise.” ― Michael Jordan
If you want to become a painter, it’s essential that you learn some important fundamentals. Understanding colour theory will help you evoke different meanings, compositions, and moods. Understanding perspective will you with the placement of shadows and lightning. Understanding form will help you make objects appear three dimensional, giving them the illusion of volume. Understanding anatomy will help you draw characters with the right proportion and body structure. You don’t necessarily need all this knowledge to do your first painting, but I’m sure that you cannot become a great professional painter without knowing these topics.
“Power comes not from knowledge kept but from knowledge shared.” ― Bill Gates
One way of truly knowing a concept or technology is trying to create a practical project. Another very effective method is when you try to explain it to someone else.
Discipline. Consistency. Persistency. Those concepts are not sexy at all, but they are the key to playing infinite games.
Don’t try to be clever, try to code something to make your feel smarter, you don’t need to show off all the new tricks you learned. Just write readable code. Think about maintainability, and use meaningful names for your classes, functions, and variables. Next time you start developing, ask yourself this question: “Will the future me, understand the intention of this code?”.
“Don’t expect to be motivated every day to get out there and make things happen. You won’t be. Don’t count on motivation. Count on discipline.” — Jock Willink
Our regular jobs are probably not enough to show our full potential. What usually happens is that we are bound to the technology constraints of the company we work at. We have a determined set of languages, frameworks, and code styling we have to follow. Sometimes these technologies change and we have the opportunity to learn the new ones at work, but if you’re just starting your career, you’ll probably need to expand your horizon with other technologies free time.
Remember, a person who knows how to code is power, a person who knows how to code and knows how business works is unstoppable.
“Failure and invention are inseparable twins. To invent you have to experiment, and if you know in advance that it’s going to work, it’s not an experiment.” — Scott Galloway
Mario is always jumping from one place to the other. Mario is confident and strong, but most of the time he’s really just avoiding dangerous situations.
On the other hand, Sonic is always willing to face the biggest challenges he can encounter. If he was a programmer, he would be always looking for complex problems to solve and for the most cutting edge technologies to work with.
At the beginning of your career, it’s ok to switch jobs frequently. You probably want to work in many different places in order to have new experiences. However, there’s a side effect to this. The less time you spend on a project, the more superficial you’ll be as a professional. In contrast, the more time you spend on a project, the more opportunities you’ll have for long-term impact.
“Everyone you meet is fighting a battle you know nothing about. Be kind. Always.” ― Robin Williams
Regardless of the conversation that you’re having, practice the habit of active listening. Not just listening in order to reply, I mean truly listening, like truly trying to understand what point the other person is trying to convey.
“It’s only going to take 5 minutes.” ― Every Developer Ever
Reasons why we fail to estimate things correctly:
First, we must admit that it’s impossible to be 100% accurate with estimates. Unexpected problems will always occur, hidden bugs will always show up, team members will leave the company. We must also understand that we’ll never have the full picture in front of us. Business requirements won’t be fully documented, acceptance criteria won’t be always complete, and new information is going to appear in the middle of the development process.
“If there are so many variables to consider, and it’s impossible to provide accurate estimates, why even try?” The answer is that you will get closer and closer to it every time you do it.
Specialist — Pros
You can achieve very good compensation in that specific field. You can typically gain a lot of technical authority in a particular subject. You need to keep up to date in only one platform/language. Companies are always searching for specialist people in that specific field.
Specialist — Cons
It can be hard to find a position if your specialisation is too narrow. If the chosen technology has a risk of becoming obsolete, it will be hard to start from the bottom again. It’s possible that your knowledge may be too company-dependent, which will make it difficult to apply the same skills somewhere else. If there’s an urgent need to use another technology, there’s a chance you will take longer to complete a certain task.
Specialist — Work opportunities
Senior positions, especially at big companies. Research projects at universities. Contractor or freelancer in a specific field.
Generalist — Pros
You are used to learning new technologies fast. There’s a wide variety of opportunities that you can pursue in different industries. If you need a new job, you are flexible and easy to transition. If you need to switch context to a different type of task, there’s a chance you will find a solution faster than others.
Generalist — Cons
It’s hard to stay updated in a lot of different languages and technologies. It’s possible that you’ll take a long time to solve very complex and technology-specific problems. It’s difficult to reach a leadership position if you’re changing fields constantly. Even though it’s easier to find a new position, it may be arduous to show that you’re the best candidate.
Generalist — Work opportunities
Startups and early-stage companies. Consultancy opportunities. Start your own business.
As software engineers, we’re used to writing code, creating functions, and managing different variables. These variables can be made of different types, such as integers, strings, boolean, etc. In computing, we have the power to change these variables’ values at any time. In life, there are trillions of variables that are constantly being created and changed by others. We have absolutely zero control over these variables, but still, they affect our lives. The way we respond to those changes is what determines our character.
Variables that you can control:
Variables that you cannot control:
“We suffer more often in imagination than in reality.” — Seneca
One characteristic that is present in absolutely all human beings is the fact that we’re never satisfied with life.
The fact is, most people have the ability to recognise what bothers them, but only a few people have the courage and determination to face those challenges.
The only thing that prevents you from achieving something is yourself.
For monthly notes on software development and entrepreneurship.