DEV Community

Cover image for 22 Valuable Lessons From Decade of Software Engineering
Void⚡
Void⚡

Posted on

22 Valuable Lessons From Decade of Software Engineering

Programming life lesson

Career of a software developer is a journey of life long learning. So, I took sometime off to lookback and reflect.

In this article, I have documented my learnings in 22 lessons that will guide those who are starting or early in their tech career.

Let's go! 🚀

  1. Start applying for interviews before you think you are ready.

  2. The tech world moves quickly. Make learning a habit.

  3. Consistency and patience will help your career more than any technology.

  4. Train your mind to see failure as feedback.

  5. Building in public is the cheat code to new opportunities.

  6. Getting a job with your network >>> Sending resumes.

  7. Doing tutorials hide knowledge gaps. Building projects expose them.
    coding cat

  8. Working on a project that you are passionate about will 10x your learning.

  9. Your time estimations will be way off. Underpromise and over-deliver.

  10. Be comfortable with not knowing everything. Be confident that you will figure it out.

  11. Career growth without acquiring soft skills can be hard.

  12. Learning to ask for help is an underrated skill.

  13. Learn googling. You don’t need to build what you can search for.

  14. Don’t fear mistakes. Fear not trying.we can code this

  15. Avoid over-engineering as much. It will distract you from the main task.

  16. You don’t need more courses. You need to build projects.

  17. You can only improve what you measure.

  18. Make time to unwind and recharge.

  19. A good portfolio brings contacts, clients and potential employers.

  20. Knowing how to code is not enough. You need to create something.

  21. You learn by finishing projects, not by starting them.

  22. Working on an exciting project is a form of self-care.

That's it!

That's it

I hope you found these lessons helpful.

Give me a follow for more of these. 😊

If you personally had contrary experience, I would love to know about that. Share in comments. 💬

Top comments (22)

Collapse
 
jonrandy profile image
Jon Randy 🎖️ • Edited

Almost 3 decades of professional experience broadly agrees with you, except:

2. The tech world moves quickly. Make learning a habit

...but learn to see through BS and don't blindly follow the latest trends - learn about what interests you.

9. Your time estimations will be way off. Underpromise and over-deliver

Don't do estimates, they are a total waste of time.

11. Career growth without acquiring soft skills can be hard

Be careful what you wish for, some career 'growth' can take you further and further away from what (presumably) you loved about development in the first place. There's more to growth than fancy job titles and (hopefully) more money.

13. Learn googling. You don’t need to build what you can search for

It's often better to google concepts and implement something small yourself, rather than import a whole library or blindly import some code without understanding it. Your code will be less bloated, and building it yourself will teach you more. Learning how to use Google well is very beneficial though (search modifiers etc.)

17. You can only improve what you measure

Not really true. Some improvements are subjective and impossible to measure. Totally depends on the type of project, the audience (if it has one), goals etc.

19. A good portfolio brings contacts, clients and potential employers

Possibly, but generally (unless it is really unique and exceptional - which most aren't) I've found that portfolio sites are entirely unnecessary - just focus on building cool stuff on GitHub/GitLab/whatever - this is a more honest representation of your skills and development/coding interests than any curated vanity project could ever be.

21. You learn by finishing projects, not by starting them.

Not true at all in my experience. You learn way more from all the false starts, failures, and experiments that never made the finish line (if indeed there was a such a line, which for most projects - there isn't)

Collapse
 
yet_anotherdev profile image
Lucas Barret

For 2. I feel like with my little experience I can totally relate.
I appreciate SQL even if it is not perfect, and we've seen a lot of trends trying to replace. Now it is becoming the new trend to use SQL. It's a cycle, just do what you like. :D

Collapse
 
flow_stackr profile image
aaolayiwola04

True that some things are generally immeasurable but a good thing to know from what I learned from the book, the 4 Disciplines of Execution is to measure things that will** have a significant effect in your achievements in the long run. Like the number of new connections you make or hours spent working deeply and so on as is relevant to your field.**

Collapse
 
danbailey profile image
Dan Bailey

Yeah, regarding #9 -- as someone who's been a developer and a project manager, that's not going to fly. 😀

Collapse
 
jonrandy profile image
Jon Randy 🎖️

I'm currently a team lead and have also run projects and built teams. It can, and does fly. The most productive, happiest teams I've worked on have worked without estimates.

Collapse
 
syeo66 profile image
Red Ochsenbein (he/him)

The learnings of two decades... 😊

Collapse
 
kanak22 profile image
Kanak

Very helpful tips Void! 👏🏻👏🏻

Collapse
 
codewithvoid profile image
Void⚡

Thanks Kanak 😀

Collapse
 
chainguns profile image
Daniel

So many good stuff here!
My faves:
You don’t need more courses. You need to build projects.
Doing tutorials hide knowledge gaps. Building projects expose them.
Learn googling. You don’t need to build what you can search for.

And even though I feel called out by this one I still like it
You learn by finishing projects, not by starting them.

Collapse
 
cubiclesocial profile image
cubiclesocial • Edited

Learn googling. You don’t need to build what you can search for.

Google is fine until you get back: 0 results returned and there are no suggestions.

That's when I know I've either misspelled something OR I've entered a completely esoteric area of software development that no one has ever explored. I know I am probably on my own at that point. Every 6 months or so this will happen to me. I then start measuring how many browser tabs I have open, which is a pretty good metric of topic complexity.

Oddly, Googlebot doesn't seem to search GitHub source code and also seems to miss a lot of StackExchange/StackOverflow posts. Running the same search on those search engines sometimes turns up hundreds or thousands of results when Google returns nothing. Also, starting to type up a question on SO/SE sometimes turns up results that their own search engines missed earlier. The current search engine fragmentation makes me wonder if Google employees are even able find important, authoritative information. Of course, when I get back nothing in all of the search engines, then I have some level of confidence that I've reached the current limit of human knowledge. This only happens to me once every 2-3 years. The question then becomes: Do I pursue it knowing it might be up to six months before I surface again? Running a cost-benefit/ROI analysis can be useful to avoid unnecessary pain.

Collapse
 
explorer14 profile image
Aman Agrawal

Mostly agree with Jon, except "estimates are a waste of time", precise estimation in complex endeavours is a waste of time because you just don't know at the start of a project. Unless you are doing the exact same thing over and over again (in which are you really in the right job?), your estimates will be off. And that's ok! It's an estimate, not a promise! And you need to challenge your PO/manager if they desire precision.

Which brings me to a couple of things that I'd like to add:

  • Dont just try to learn everything preemptively or speculatively, it wont stick until you actually work on a real problem that benefits from that tech

  • Get into the habit of writing your thoughts down: notes, blog posts whatever. Nothing surfaces the loop holes in your thinking faster.

  • "Learn to speak in business terns". I cannot stress enough how important this is to actually getting critical engineering work done or think about the work critically. Your super amazing tech idea is no good if it gets put on the backburner or your manager/PO wont sponsor it. This means learning to understand the economics of software engineering. What's the work? What's the cost (estimate)? What's the value/ROI (return on investment)? To the business, these numbers make more sense than "cyclomatic complexity" or "tight coupling" or what have you! So if you can adjust your message for the business audience in terms they can relate to, you become that much more valuable because you are helping put your and your team's technical vision on the product roadmap.

Be under no illusion, this is going to be HARD but after nearly 20 years working in this industry, I wish someone had told me to focus on these things or I had paid more attention to it back then.

  • "learn the business". Understand how your company makes money and how it makes decisions. Spend time learning the business domain you are working in, it's going to be infinitely more valuable than learning the fanciest new frontend framework or programming paradigm or cloud thing. Tech serves a purpose of solving real problems, don't make tech a goal in itself.
Collapse
 
clearlens profile image
Omar

I recommended creating a system around your daily life that improves goal consistency. You'll get the best of yourself through exponential growth. You'll run slow in the beginning, but faster in the end.

Collapse
 
ninjanordbo profile image
ninjanordbo

A lot of good advice

Collapse
 
athifbinu profile image
Athif binu

Thanks

Collapse
 
olanetsoft profile image
Idris Olubisi💡

Thanks for sharing @codewithvoid

Very helpful!

Collapse
 
liftoffstudios profile image
Liftoff Studios

Nice tips :)