I will be sharing the 10 guiding principles I utilized to level up from being a Junior Developer of an app with 250 users to a Senior Software Engineer powering apps with over 100 million downloads.

This comprehensive thread dives into the details 🧵
1. Be realistic about where you are.

“If you don't know where you are going any road can take you there” - Lewis Carroll, Alice in Wonderland.

Before I applied to a job or pushed a single line of code to open source I always assessed my skills.
"The less you know, the more confident you are. The more you know, the less confident you are" - the Dunning-Kruger effect.

I was the former. Assessing myself allowed me to get a real idea of the expertise the international market required so I could improve where necessary.
2. Be mindful of side projects and tutorials.

Programming is a skill that is honed through practice. Lots of it.

While doing tutorials that were applicable to a concept I was trying to learn I was always mindful of "tutorial hell".
To get the most out of side projects and tutorials in a structured and systematic manner without falling down a rabbit hole:

1. Define a scope that will keep you grounded.
2. Utilize timeboxing techniques to stay on track.
3. Leverage Just In Time Learning.
3. Build in public. Showcase your portfolio. Launch in production.

I realized quite early that my resume would only take me so far.

The proof is in the pudding.

1. I created a portfolio website.
2. I put apps on the Play Store.
3. I open-sourced my code on Github.
4. Contribute to open source.

The open-source ecosystem provides a vast environment to gain industry-leading skills because it is the cornerstone of the tech industry.

Contributing to open source can be daunting. When I began my exploration I had so many questions.
“What will I contribute?”

“Will the code I push get reviewed and merged?”

"Is now the right time to start sharing my code or should I wait until I have more skills?"
These questions and others are all warranted. Here are some tips to overcome the initial contributor barriers:

1. Start small. Before contributing to other projects create a git repository on Github and share your progress in a tutorial or personal project.
2. Tackle good first issues. Well-maintained open source projects have issues with this label for newcomers to whet their appetite with the codebase.

3. Don't be afraid to submit your PR and get feedback. You won't know what others think of your code until you share it.
5. Grasp core software engineering principles.

Eloquent programming is achieved by having a deep understanding of the design patterns that the industry utilizes to build performant software.

To achieve this I recommend that you study SOLID principles and read these books :
1. Clean Code by Robert C.Martin
2. The Pragmatic Programmer by Andrew Hunt and David Thomas
3. Head First Design by Eric Freeman
4. Cracking the Coding Interview by Gayle Laakman McDowell
5. Refactoring by Martin Fowler
6. Introduction to Algorithms by Thomas H. Cormen
6. Find a mentor.

This is never an easy feat but it can be one of the most rewarding.

Finding someone who is more senior than you; a professional who is at the level you want to be is really helpful in getting feedback and setting the right expectations.
7. Watch industry talks.

I have binge-watched tons of industry talks for Android and React engineering.

This habit changed my entire career.

You will get an idea of what it's like to work on apps developed at scale at companies like Facebook, Google, Twitter, and Netflix.
8. Follow Senior Engineers on Twitter.

I follow hundreds of engineers to keep abreast of all things tech.

The tech industry moves quite fast and it's never easy to keep up with every new framework or story therefore leveraging the insights of other experts will help.
Some recommendations:

- Android @madona_syombua @himattm @joreilly
- React @dan_abramov @kentcdodds @ryanflorence
@SimonHoiberg
- Tech Industry Content @ThePracticalDev @GergelyOrosz @DThompsonDev @SimonHoiberg
- Product @shreyas
- Data Structures @FrancoFern
9. Take care of your mental health.

Proper mental health care cannot be emphasized enough. The tech industry is really fast-paced and demanding. Programming is a complex skill to master and interviewing can be even harder.

- Exercise
- Meditate
- Journal
- Sleep

- Repeat
10. Strategize and apply to jobs.

Prepare yourself for interviews and begin applying.

I have been rejected countless times for various reasons before I landed roles.

What is even tougher is going through weeks of interviews to get a rejection with no real explanation.
In these moments your perspective will drive your performance when you aren't getting meaningful results.

Facing these unfavorable times will be the ultimate test of endurance in this field.

Use every failure as an opportunity to learn, grow and come back stronger than ever.
TLDR;

1. Be realistic about where you are.
2. Be mindful of tutorials.
3. Build in public.
4. Contribute to open source.
5. Grasp design patterns.
6. Find a mentor.
7. Watch industry talks.
8. Follow Engineers on Twitter.
9. Take care of your health.
10. Apply to jobs.
Thank you for reading!

Let me know if you have any other tips or folks you would like to share.

If you enjoyed this read:

➤ leave a like
➤ retweet the first tweet
➤ feel free to follow me ( @sirjoeldean) for more content like this in the future.
You can follow @sirjoeldean.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled: