Professional Documents
Culture Documents
Software engineering has become one of the most competitive fields in the job
market. What's remarkable is that becoming a developer has never been easier and
landing a job in the most notorious companies worldwide no longer requires a
degree.
In this book, I will share with you the lessons and insights that have allowed me to
stand out as a software engineer, from my early days as a college student to my
current position as part of a the leader security company in the web 3 space, a
French unicorn, at only 24.
By following these tips and strategies, you too can elevate your skills, build a strong
network, and increase your chances of landing your dream job in the tech industry.
Whether you are just starting out or looking to take your career to the next level, this
book will provide you with valuable insights and actionable advice to help you stand
out from the crowd.
It's okay if you don't find the perfect mentor right away - you might have several
mentors throughout your career, and that's totally normal. Don't worry too much
about finding someone with an impressive job title right away. Don’t expect the CTO
of Amazon to be your first mentor as a junior developer. What's more important is
finding someone you admire and can learn from. It could be a colleague or a
One of the best things about having a mentor is that they can introduce you to new
people in the industry. Your mentor might know other engineers, managers, or
industry leaders who can help you land a job, learn new skills, or even start your own
business someday. By expanding your network, you'll have more opportunities to
grow and succeed.
If you don’t know anyone around you, start looking on Linkedin and connect with the
people that you think can be beneficial to you. This is important to not take advise
from anybody as we all have different stories, different goals, different lifestyles.
Found a mentor that lives a life similar to the one you want to live.
Once you've found a potential mentor, it's important to build a strong relationship with
them.
This means being open and honest about your goals, asking lots of questions, and
being willing to listen to their advice. Remember that your mentor is there to help
you, so don't be afraid to ask for guidance when you need it.
A mentor will invest their time and energy in you, not only challenging you to grow
but also creating an environment where they expect you to challenge them in return.
This mutual exchange of ideas and perspectives allows for meaningful discussions
to happen. By being prepared, open-minded, offering alternative solutions and ready
to receive feedback you can create a dynamic of continuous growth.
Finally, don't forget that your mentor can teach you just as much from their
successes as from their failures. Be sure to ask them about both, so you can learn
from their experiences and avoid making the same mistakes they did.
In summary, either you are just starting learning coding or have several years of
experience, finding a mentor is one of the most critical action you can take to bring
your career to the next level. Having a mentor can also expand your network and
introduce you to new opportunities. Building a strong relationship with your mentor is
key, so be open, ask questions, and listen to their advice. Remember to learn from
both their successes and failures. Take your time to find the right mentor who
matches your needs and goals, and you'll be on your way to achieving your full
potential as a software engineer.
Don't be afraid of making mistakes or not knowing everything. This is never the
“perfect time” to start. The goal is to be put in situations where you have to solve
problems you've never encountered before and improve the way you organise and
lead a project. Mistakes will happen, and that's a natural part of the learning process.
One important note: Do not work for free at all costs. I made this mistake in the past,
and it was never worth it. Your time is valuable, and even if you don't have a lot of
experience, you should never undersell the value you bring to others.
Overall, working as a freelance can be a valuable way to gain experience, develop a
product mindset, and cultivate an entrepreneurial mindset. By taking on challenging
projects and making mistakes along the way, you can grow as a software engineer
and build a strong foundation for your career. With these considerations in mind,
freelancing can be a powerful tool for taking your career to the next level.
There are various websites available to practice coding exercises, but the most
popular ones are HackerRank (https://www.hackerrank.com) and LeetCode
(https://leetcode.com).
Take the time to really think about how you solve each problem, and even try several
solutions to the same problem to develop your skills further.
There’s a ton of resources online on how to Google effectively, for a start keep this in
mind:
Not need for connecting words (how, to, is, …): “How to write a file in nodejs” →
”write file nodejs”
Use google operators for more targeted search (site:, intitle:, intitle:, filetype:)
The world is full of talented individuals who remain invisible to employers and clients
simply because they lack the ability to showcase their skills. Don’t be one of them. A
strong portfolio is essential for standing out from the crowd and proving your worth
as a top-notch engineer.
So, how do you get there? It’s simple: you need to invest in yourself and your
creativity by building personal projects and developing a strong portfolio. Here are
four steps to guide you:
Build personal projects: Building your own projects is a great way to develop
your skills and demonstrate your creativity. Choose a project that challenges you
and allows you to showcase your expertise. Don’t force yourself to finish every
single side project but I’d recommend you finish most of them. Once you take the
habit of not finishing projects, it’s hard to unlearn.
The more projects you make the faster it’ll be so don’t get discouraged. Always
go the extra mile on your side projects, you have no deadline and you are the
one defining your own specs. Take the time to dive on topics like UX, speed
optimisation, security.
One of my first side project was to write a CLI personal diary in C. You could
could add new entries that were timestamped, consult older entries per day and
delete them. Pretty simple specs at first sight. That’s when you have to go the
extra mile: What if there are more than one person using this ? How do they
login ? How do I secure the content of the diary ? How do I make sure the
content is encrypted in the hard drive and only accessible by the application ?
Should I allow user to edit the previous entries ? How would this impact the UX
of my app ?
Train yourself to start working on a project and then deep dive different subject to
learn as much as you can from each project.
If you lack inspiration on how to get started you can found a lot of fun side
Create your website: A website is the perfect way to showcase your personal
projects and work samples. Don’t hesitate to publish your projects and highlight
your skills on your website. Make it visually appealing and easy to navigate, so
potential employers and clients can easily find what they're looking for.
Write articles: Teaching others is the best way to learn. Writing an articles on a
topic you master not only shows that you have a strong knowledge on the
subject but also that you are capable of communicating your though in a
structured understandable way which is a invaluable skill for an engineer. I’d
recommend you use a platform like Substack for this.
By following these advise, you can unleash your creativity and build a strong portfolio
that will get you noticed by employers and clients alike. Don’t let your skills go to
waste; invest in yourself, your creativity, and your future. The world is waiting for you
to make your mark.
Good First Issue (https://goodfirstissue.dev) which lists all the issues that were
tagged as beginner-friendly by the projects team members.
Community engagement on Twitter and Discord: This is where you can follow
the trends and discussions surrounding the project you are interested in. These
conversations are a goldmine of in-depth knowledge and can help you build
connections with other like-minded individuals in the field.
So either it’s a large open-source project or just you and your friends, get out there,
and start collaborating.
As a software engineer, you might think that your work speaks for itself. After all,
your code is your portfolio, right? Unfortunately, that's not always the case. In today's
job market, networking is just as important as technical skills. As an introvert myself, I
know how daunting networking can be. But I also know that it's crucial for career
growth.
First of all make sure that your profile has a good looking profile picture and that all
the information are up to date. Add your professional experiences and include a
description explaining what projects you’ve worked on and what was the impact. Also
your educational background with details of any noteworthy highlights and projects
you’ve participated in during that time. Finally add your skills and ask for
I was able to connect with incredible people through Linkedin. One exemple is when
I was obsessed with Netflix and wanted to join the company. I went on Linkedin to
look for all Netflix employees and used advanced search filters to only select
employees that graduated from my college. I messaged them and a few days later
had a call with them. Meeting these engineers was pivotal for my career as it showed
that it was possible for me too to reach such levels but also I was able to receive
amazing advise that totally changed the way I think about software to this day.
Twitter and Discord: Twitter and Discord are platform where the cool kids hang out.
Twitter is like a giant digital playground where you can connect with other developers
from around the world. You can easily find folks by searching for hashtags like
#techtwitter, #100daysofcode, #programming, #<your_fav_progamming_language>.
It's a high-energy environment where you can learn, share, and make meaningful
connections with people who share your interests.
Discord is all about building communities and fostering connections in a more
intimate setting. You can find Discord servers for just about any topic, from web
development to machine learning to game development. Just head over to Disboard
(https://disboard.org), search by keyword, and you'll be able to find a community
that shares your interest.
Get out there and start interacting! Comment on posts, share your own knowledge,
and don't be afraid to ask for help. You never know where your next big opportunity
might come from.
Remember, networking is not just about connecting with people for potential job
opportunities, it's about building genuine relationships with peers, mentors, and
industry leaders. These connections can provide you with valuable insights, advice,
and support throughout your career.
Whether you choose to network through online platforms like LinkedIn, Twitter, and
Discord or attend in-person tech conferences and events, the most important thing is
to be intentional and authentic in your interactions.
Don't forget that networking is just as important as technical skills when it comes to
advancing your career in software engineering. So, invest time and effort into
building relationships and nurturing your network. Who knows, your next job
opportunity or valuable career advice may come from someone you meet through
networking. Keep an open mind, be proactive, and happy networking!
As a software engineer, you are like a kid with access to a virtual candy store filled
with an endless supply of new technologies, frameworks, and inventions.
But let's face it, trying to indulge in every new flavor, although tempting, can be a
waste of time and brain power. That's why I recommend focusing on a few areas that
you're truly passionate about. By building a strong foundations, you'll be able to keep
up with new trends and emerging technologies.
Sure, it's important to have a vision of what’s going on in the industry. But don't get
distracted by skills that won't directly benefit you. Instead, focus on one or two skills
that you're passionate about and dive deep.
With time you can pivot and go explore other fields but don’t make the mistake of
With focus and clear goals you can build the skills to make a great impact in any
company.
The more I learn, the more I realise how much I don't know." - Albert Einstein
Here are some areas where my curiosity has led me on my programming journey:
Learn about all the components of your job: for exemple you can’t be a web
developer and know nothing about networking, HTTP, caching systems,
distributed systems. Take time to explore and learn about the interconnected
elements that shape your work.
Most big companies have engineering blogs. They are amazing ways to have an
insight on the problem-solving process in these companies. Even if you may not
encounter the same problems at this scale, you could get inspired by how they
organised, the tools they used and apply some of these solutions to your needs.
Exemple of companies that have engineering blogs: Meta, Amazon (Amazon
Prime, AWS, Twitch), Netflix, Uber, Discord, Spotify, Github, Shopify, Dropbox.
Listen to conference talks on youtube: Just like blog articles, tech conferences
offer great insights from people in the industry about problems they solved and
how.
Learn more than one language (1 low level, 1 high level): I recommend to all
developers to explore at least 1 “low level” language like Rust or C and 1 high
level language like Javascript or Python. Learning lower level languages allow
you to understand what is going under the hood when using higher level
languages. You learn about memory allocation, compilation, syscalls, inner
working of the operating system. If you're just starting your programming journey,
I recommend beginning with a lower-level language (Rust). Though it may be
challenging initially, once you master it, you'll possess a broad knowledge
foundation to propel your progress forward.
Customise Your Learning: Everyone has their preferred learning style. Some
prefer such YouTube tutorials, while others prefer in-depth articles or hands-on
experimentation. Identify the resources that resonate with you the most and align
with your learning preferences. This could be official documentation, real-life
examples on GitHub, online courses, podcasts, or mentorship programs.
Chapter 10 - Deep work: Learn focus and deep work to achieve peak
performance
Learning to concentrate deeply can be a game changer. Many developers take pride
in having dedicated "focus time" during their day, and for good reason. Just one hour
of undistracted, focused work can be as productive as 2-3 hours of scattered effort
amidst distractions like Slack messages and social media. When you go “in the
zone”, you tap into the full potential of your brain and unlock remarkable results.
If you're not used to working this way yet, don't worry. It's a habit that can be
developed fairly quickly. One simple and effective technique to get started is the
Pomodoro Method. Set a timer for 30 minutes and commit to working on a specific
task without any distractions. You can use a browser extension to block access to
social media sites. Once the 30 minutes are up, reward yourself with a short break of
10 to 15 minutes. Gradually increase the length of your work sessions as you
become more comfortable.
Remember, it's normal to take a little time to warm up and fully focus when you start
each work session. Just keep working on your task, and soon your concentration will
sharpen.
Chapter 11 - Maximising efficiency: Boost your productivity with the right tools
Time is the only luxury we have. It's essential to avoid reinventing the wheel each
time we approach a new task. If you find yourself performing the same task
repeatedly throughout the day, it's time to optimise your work environment and
automise it.
Personally, I've found great value in mastering the CLI (Command Line Interface).
Becoming proficient in the terminal allows you to create custom scripts and
shortcuts, providing immense convenience and time-saving benefits.
IDE extensions can save some time as well. Linters and formatters save you time
and ensure code consistency by automatically identify and correct coding style
issues.
Familiarise yourself with the keyboard shortcuts offered by your preferred software
development tools, as they enable you to navigate and execute commands swiftly.
There are hundreds of productivity apps and web extensions that can boost your
work environment. These tools can enhance your work environment and amplify your
efficiency. Whether it's project management tools, desktop configuration, or task
automation utilities, there's a wealth of options to explore and integrate into your
workflow.
Never stop exploring what your next opportunity could be. New companies are
always emerging, keep your eyes on the innovators of this world and be part of
it. Code can positively impact the lives of millions, as a programmer you are very
powerful. I really encourage you to take part of a project you feel aligned with
Look at skills demanded in job descriptions: Either you’re looking for a job or not,
I recommend you sometimes take a look at job description from companies you
like and see what kind of profiles they are looking for. Make sure you stay ahead
of the game by keeping your skills up to date with the needs of companies you’d
like to join.
Do not shy away from negotiating your salary. You are one the most important
component in your company. You’re skills matters and it’s normal to be
compensated for it. Learn how to effectively negotiate before your next
interviews.
Enrol in certification programs that validate your expertise and demonstrate your
commitment to professional growth. These certifications not only enhance your
knowledge and skills but also provide a tangible proof of your qualifications to
potential employers.
Conclusion
Thank you for embarking on this journey towards standing out from the crowd as a
software engineer. Throughout this book, we have explored a multitude of strategies
and insights to help you excel in a competitive industry. As someone who has
personally applied these principles, I am grateful to share that they have elevated my
own career and have even benefitted others that I could share these with.
I encourage you to continue implementing these principles in your own career
journey. Grow with your mentors, build strong foundations, and create a compelling
portfolio showcasing your personal projects. Collaborate with the community, master
the art of networking, and pursue your passions wholeheartedly. Embrace curiosity,
and cultivate a focus on deep work while utilising productivity tools.
If you have any further inquiries or would like to connect, please feel free to reach
out to me on LinkedIn. It would be my pleasure to connect with you and offer support
on your journey.
Your potential knows no bounds, and I have full confidence that you will make a
profound impact in the world of software engineering.