I turned 30, a few days ago. An interesting decade, where I did and learned a lot of things came to an end. I tend to keep track of such "life lessons", so I thought it would be a good idea to publicize the most related to our work life as software engineers.
Here we go:
1. Work really hard
No one will grant you a promotion, salary increase or a better position for nothing. And plain hard work is not enough; you need to be efficient as well.
Working hard and delivering no value is useful for no one, bar people who count productivity by the number of hours you sit on your chair.
And by the way you need to avoid those people, the companies they work for, are usually super-toxic and will make you miserable. Thankfully, those are becoming extinct in our field.
2. Don't stick to programming languages
There is no point in giving too many fucks about a language. Most of them work around the same principles and just do certain things better than others (which is of course important). That's why we have a lot, because no language is perfect.
Make sure though you know at least one language from each paradigm. For example functional, object-oriented, etc.
3. Learn a new language of technology every year
Try to learn one new language (ideally a language that is popular and pushes you out of comfort zone) every year to keep your brain sharp and keep up with the trends of the market.
Also, if you find value on the language you learned, you can propose it as a tool to a certain problem to your company.
4. Take full responsibility for your career
You had a tough childhood, your ex-manager (or the current one) was a jerk, you had 5 divorces in 3 different marriages and the web framework you invested 2 years to master is not popular anymore. Things are a mess in your life. There is no positivity around.
But you are an adult and you should fight this battle yourself. Having a tough past is not an excuse for not being your best self now. Focus on what you can do to make things better and make sure that you... =>
5. Don't worry about things that are out of your own control
Only worry about having the proper response to them. As mentioned before, the web framework you invested about 3 years to master is not popular anymore. So what? Learn another one. Maybe pick a framework that looks to have better prospects. And you will need to do this quite a few times in your career life.
Maybe your (beloved) friend-tech lead has left the company. It is very sad (happened to me in the past too), but it is also time to gear up and impress the new one.
If you cant handle it, you can leave the company as well. But please, please, please, don't nag about things out of your control. Rather, adjust your response, as the show must go on.
6. Avoid hatred
If someone is better than you on something don't hate them, learn from them. We consider people that are better than us, as threats. I choose to treat them as potential sources of improvement and you should do the same.
I remember a couple of colleagues from past employers who were extremely good to handle pressure and come up with solutions on thin-ice-problems. I have learned a lot from them, I never felt envy, because I knew I could acquire that skill as well.
Beware, if for any reason there are no better people (technically) than you around, it's time to find a better place for you and your career. Trust me you don't want to be the best unless you are the CTO or something similar. But even then as the common saying goes, you need to hire people better than you.
Hatred can ruin your personal life too, in terms of mood and reduce positivity in your life. You have nothing to gain by hating people.
7. Chase responsibility and money will follow
I'm sad that too many people are focused solely on money and not to build a strong skill set and brand for themselves
.
When do you think you will have better monetary prospects in the future: If you are an underpaid CTO or an overpaid Junior engineer. Choose your jobs wisely.
8. If you neglect to sharpen your skills, they will eventually abandon you
Too many people think that a computer science degree made them some kind of prince/princess, where the companies will beg them to join them and everything will be handed over easily, just because they have a piece of paper on their walls.
Don't get me wrong, I believe a good degree can give you loads of useful knowledge (I have an undergraduate and soon an MSc in informatics) but too many people stop there.
This is where I admire self-taught programmers. They may lack knowledge on various theoretical things of computer science, but they know the hard way, no one will give them any piece of success for free.
Also, if you don't know (at the bare minimum) some basic things about the most popular trends, you are doing something wrong. You don't need to be an expert to have a grasp of the world around you.
9. Cheap Hardware is cheap on quality, price and ruins your health as well
Invest in an above-average keyboard, pointing device and monitor. Your career depends a lot on your hands and eyes.
Having noise cancellation headphones is great, but don't buy them because everyone has them, if you don't have high-quality hardware of the previously mentioned components.
Unless you are working in an extremely noisy environment you can probably do without noise-canceling headphones.
10. Take a walk and the problem will be solved
Okay I am exaggerating a bit, but I want to emphasize the necessity of diffuse mode, Barbara Oakley explains in her course Learning how to learn (which I highly recommend).
Nowadays people don't put much value in the diffuse mode of thinking. At least I know only a few companies that approve sleeping (or other diffuse friendly activities) during working hours, but the thing is that we need both. Actually the very famous expression "sleep on it" is implying the importance of diffuse mode.
11. Invest a fair amount of your income professional education
If your company can pay that money, that's even better.
YouTube is a fantastic resource of learning but if you are really serious for your craft and of course, your income allows you so, you should have a subscription to a high-quality training service like O'Reilly / Pluralsight.
Find the learning method you like better and learn more by using it. Speaking of professional education =>
12. Avoid companies which have no training policy
I might be very hard and biased here. You may allow exceptions where the company is fairly new to the market or have low funding.
Given that the field requires constantly updating your knowledge and being up-to-date, I tend to not take companies that don't have a proper training/education policy, seriously into consideration.
The bare minimum of proper education policy for me is, each employee to have a dedicated budget, which can at least cover (annually)
- Attending a conference
- Buying a couple of books
- Buying a subscription to a high-quality training service like O'Reilly learning
- Do a certification
Of course, most people will not do all those in a year, for many reasons; maybe because they have settled or because they have a family and they cannot dedicate much of their free time, but the thing is that the company should not be an obstacle if the employee wants to do so.
I am more demanding for big companies, where I would expect (additionally) some invited lectures on-premises, especially on domain critical things. For example, if the company is migrating to Scrum it is good to bring an Agile coach around to set the stage.
13. Use the best tools money can buy
For example your IDE. In the same logic as in hardware; don't go cheap on your IDE. As it is said in the pragmatic programmer book, pick an editor and learn it very very well. High-quality tooling can literally save you hours.
Don't forget that money are pretty much compressed time. You pay a higher monetary price now and you save time later.
14. Ignore motivation
People tend to rely heavily on motivation towards their important life goals.
Motivation is great but it is still a sentiment. And as all sentiments, they come and go.
You 'd better have a more optimal way to guide yourself (like your dream life or a vision as discussed in the next point), on what needs to be done, at least on the important things of life.
It is easy to put on your smiley face when everything is going well, but what do you do, when nothing can motivate you and you are approaching a burndown state when nothing is fascinating anymore?
15. Keep the fire in you, alive, at all costs
While I do not recommend hanging on your motivation to progress your career and your life in general, I would insist on having a vision for your career.
You should totally have a vision of where you want to go so that you know if every decision you make (not only career-wise) will make your ship move faster and safer. As the famous British row-men medalists in 2000 used to say, will it make the boat go faster?
16. Understanding which type of company fits you better and focus there on getting similar jobs
Startups, mid-sized companies, and big corporations are way too different in terms of benefits and negatives.
The fact that you did a good job in the big corp, doesn't mean you will handle everyday fires at startups.
Do the research and make sure you understand what you have now, what you get and what you lose, in each choice. Unfortunately, there is no silver bullet.
17. Having a great manager is the best denominator to having a healthy work-life
You probably already know that; if you have a supportive manager with whom you can communicate effectively and you like the tasks you have in your job it would be a blessing.
People don't leave companies, people leave their managers. Make sure your manager will try to make you enjoy your stay. Ideally, do so before accepting an offer.
18. The only way to make sure you know something is to teach it
That is the reason I initially started blogging.
If I learn about something interesting (even as part of my personal training plan or on the job), I try to explain via my blog (even though my Msc has led me to reduce the posting frequency).
I think it works very nice. At least for me, I have never asked my readers :)
19. If you stop learning you are already obsolete
The relatively high salaries that are connected with the software sector are correlated (among others) with the level of change that occurs in this field. The sector is moving so fast that if you stop learning you are already obsolete.
That doesn't mean you should spend every waking hour reading and coding, but don't go on the other extreme where you have settled and neglected the changes that are happening.
20. Consistency is better than intensity
Connected to your learning mentality above, reading about your craft 30-40 minutes per day is better than spending the whole Sunday in front of the monitor to cram unreasonable studying workloads.
You knew that from college, didnt you? Stress levels were way better when you did were doing your homework, bite by bite and not in the last evening.
21. First, make it work then make it right then make it fast
That famous expression from Kent Beck is one of my (and Unix's) favorite mottos. I am shocked by the lack of pragmatic thinking in the industry.
People giving too many fucks about spaces vs. tabs, about snake case vs camel case, about how to name an interface, etc.
No one (?) disagrees that those are important things but they are important only if we have something that works.
My favorite, is watching people, putting extensive documentation to code that is not even compiling. Be pragmatic, friends.
22. If you want to spend time on your social media make sure it's worth it
Follow great people who are worth your time. I follow many great people on Twitter including many co-authors from dev.to.
Even though I'm not extremely active on tweeting, I'm always happy to read their opinions even if I disagree,
as they give a great perspective to me.
23. Don't be afraid of asking questions
Regardless of your position in the company, maybe you're the owner or the CTO, no sane human-being expects you to know everything. On the contrary, research shows that people tend to like you more when you ask them for their help.
Also, the field of computer science is so huge, that YOU CANNOT know everything. Just like in every other profession with huge levels of bibliography.
24. Theorems and brainstorming don't pay the bills
Results do. Happy customers and successful products do. You are not in school anymore. No one cares about your romantic approach to coding, theories that are not anymore applicable to industry problems or your what-ifs. I am not saying they are not important but the corporate world favors results and not abstract discussions.
It is a sad truth. If you don't like that, maybe the corporate life is not for you. Prefer to find your shelter to an R&D oriented place or a university.
25. Try to have hobbies outside of software
I am a bit guilty about not following that advice lately.
Between a full-time job, fitness training and a master's degree I can't say I am proud of myself here. I am trying to fix it though.
It will help you avoiding burnout and get a different perspective on things.
For example, I have seen various articles around connecting enhanced diffuse mode (see above) of thinking with playing an instrument.
26. Do not be opinionated on tech
I don't think this needs an explanation. There are various alternatives in software technologies, for a reason. Stop preaching a particular programming ideology or technology, by considering it the one and only solution. At the best, you look annoying, at worst ignorant.
27. Never accept socially unacceptable behavior in your workplace
Sexism, racism, bullying, favorability against your career, being unpaid while the boss is on vacations (I have experienced this personally). There are companies with serious, mature and professional people who will respect you. Go out and find them. Let the rest, enjoy their micro-universe where they feel superior and unique.
28. Unit testing is boring but...
It can be life-saving when things are going tough like the product is growing big very fast or a big scale refactoring is coming.
As with all things in life, first, you sow and then you reap.
29. Effective time/task management is more important than you think
Effective time/task management is equally or more important than learning the newest and hottest tech.
Why? Because if you cannot use your skills to provide value on time, no one cares. If you feel you are not good in that area, start with GTD theory and 15 secrets of time management
30. Don't forget your soft skills
Unless you are a freelancer accepting faceless bids or someone who delegates the sales and customer handling stuff to others, you need this.
We work with people all day and we need to know how to communicate effectively and speak a business acceptable language, with respect to people not being identical to us.
It might not be a problem if all people had low soft skills competency, but as this is a bit dystopian and I asked you to be pragmatic above, you need to become better in this field too.
I would recommend three books on that matter, for starters:
Soft skills
How to win Friends & Influence People
The charisma myth
Conclusion
Thank you for making it this far, I hope you enjoyed the above tips. If you have any tips that would be helpful to other readers, I would love to read them.
Top comments (54)
I would be worried if you likee them at first contact.🙂 We have learned to use flat keyboards from a very young age and thus split and curved keyboards look difficult to deal with. If you have one around you give it some time. It has some learning curve but it's worth it in my opinion
I have stopped gaming a few years now (at least on PC/consoles, my mobile can carry on the struggle fine for now), so I am mostly focusing on anatomic peripherals that make my life easier. My top ones are Microsoft sculpt keyboard and Wacom tablet instead of a mouse. I am usually using two screens > 20 each
My next one would be a curved screen.
MAC machines are very nice but every time I weight the cost I pass. :) Committed to Linux for 13 years now :)
Hope it helps
amazon.com/Microsoft-Ergonomic-Wir...
amazon.com/Wacom-Graphic-Drawing-T...
Thank you for the article, lots of gold nuggets in it. Can I ask you, why are you going back to school to so a MSc? Im doing my Bsc in software eng. atm and will continue on a MSc as you afterwards, but would still love to hear your reasoning
Cheers!
Hello Jakob, thank you for your kind words.
Actually I had a gap of 6 years between my BSc and MSc and that was on purpose.
I wanted to first work in the industry to see what I like more. Otherwise I see MSc as a good revision any BSc concepts that I have not managed to internalize yet. I also wanted to find the money to fund it.
Another unintentional benefit was that the field has progressed so I had the chance to learn about concepts that I might have not worked with otherwise, at least hands-on. For example, IoT was very futuristic when I joined my BSc, but we now have core lessons around it in my MSc.
Hope it helps.
Thank you for the answer, it is very helpful ✌️
Thanks for this - and especially #14 - ignore motivation.
My 20s, I kept chasing after things that inspired me in hopes I will get motivated to do it. I found in my 30s, all of my achievements I've gained was not because of motivation, but because just being present and just pushing through.
I find it difficult to explain this to young people, who often ask me how I stay motivated as a programmer. My answer: "I don't." I go through the suck and keep pushing through it. The end result of my code pushes me, but that's about it. And then they get annoyed by my non-answer.
I can totally relate. It is indeed something you learn the hard way, if at all.
I can remember a quote from 7 habits of highly effective people that is totally related with your story (it is about love, not career but you will get the point :) )
goodreads.com/quotes/410169-my-wif...
Im also 30 years in and I want to say again on this post, that while I was unemployed last year, I sat down, learned React and Vue (from paid services no less, I've got 15+ years of JS under my belt already) and built 2-3 projects in each. Not one company wanted to hear that I knew React/Vue unless I had a minimum 8 years of working/production experience in them. Given the age of these lib's, that would mean I had to start working a real-world job in them on day one of their release. Im not at all saying dont keep learning. I am saying even if you do continually learn, even with 30 years of production experience under your belt in other languages, dont go nuts trying to cram things in that employers wont hire you for, or even worse, that recruiters wont even talk to you about because your MSSQL and MySQL line items on your resume mean you're a backend engineer and that you have no idea how to do frontend because even though React is on your resume, the position 'frontend engineer' isnt. When i started, there was no app/website unless you built both the back and front ends, ...and also did the devops! Tech moves so fast, it lends too much credence to buzz words that cost decent engineers jobs. And yes, find a hobby, Im super guilty of this myself! Good article sir.
I am sorry to hear that. This looks like a crystal clear discrimination.
Looks like you fell into a case of an incompetent recruitment team. And I am saying because, as you already mentioned, 5-6 years before, there was no thing as a full-stack engineer, because we were all fullstack engineers. So saying you have no frontend experience is funny. Especially if you have (in disguise, but you have)
Please dont get discouraged, keep applying to serious companies that have a track record of respect and seriousness. Glassdoor.com is my friend in those cases
Merry Christmas :)
It is very laughable indeed and yes, I had met many incompetent recruitment teams during that period of my job search. When I did get in the door, theyd always ask me to prove my skill by writing a todo app in Vue/React, something I have/had on my git already, but they won't accept that either, it had to be written again.
There, in general, seems a massive distrust between companies and programmers that is rarely spoken about. Some coders dont know what theyre doing, but the employers punish those of us who do because of it, or prior experiences with them. Right now, Im counting blessings, working for a great company, who appreciates its devs and Im very happy to have found them.
Happy holidays to all:)
I would love to see an article about
There, in general, seems a massive distrust between companies and programmers that is rarely spoken about. Some coders dont know what theyre doing, but the employers punish those of us who do because of it, or prior experiences with them.
It is indeed something that is not mentioned often
The advice given is awesome and holistic in perspective,and , the aspect of envy is very fundamental as I have discovered that there are people who are threatened by someone's abilities, talents, etc. so they treat that colleague with contempt,withholding technical assistance in relation to work assignments, projects, the person may even engage in gossiping dramas in an attempt to destroy their colleague reputation as they are fundamentally intimidated by someone's intelligence, but, their fears, intimidation, etc. are fueled by their inadequacies as they lack the necessary self love inclusive poor self esteem resulting in their debilitating unprofessional tactics, which, can only be fixed by those actors adjusting their mindset to a healthy robust through enhanced and upgraded emotional intelligence. The ability to manage one's' emotional intelligence is a key skill in any workspace environment.
Exactly thath
That's so true. I think it goes to the soft skills category. When you communicate with business people for example, they have no idea what streaming is or what a DDOS causes.
Hi, your article is inspiring, you listed many points that sometimes we forget and or left for another moment, but it’s not be denied all that time. Be sure, I will leave your article in short of hand and sometimes review it’s content to sharp my axe.
Brilliant list, thanks for the post! :)
Very thorough article. Thank you for sharing your thoughts Περικλή.
thanks Παυλο :)