Pit-falls in a Software Developer's Career

Here are some of the best advises by software engineer, Sahil Gaba.

Bulleting Some of the Best Advice from a software engineer and also a YouTuber, named PowerCouple.

  • Learn any Object Oriented Programming language (java, c++, JS, python)

  • While starting build guided projects first, then go for personal projects.

  • Knowing programming and building side projects is not enough to get into big tech, you also need to do DSA.

  • Top 5 DSA for interview: Heap, Binary tree, hashtable/hashmap, stack queue, and graphs.

  • Top 5 Algorithms: Topk elements, sliding window, backtracking, dynamic programming, breath-first search and depth-first search.

  • Leet code tips:

    • Top 150 interview questions, then any problem after that.

    • Begin with the end in mind our goal is to solve a problem under 45mins.

    • Solve easy problems first to grab tools and clear concepts.

    • Then medium-level problems and that is sufficient.

    • Leetcode can be beneficial for interview preparation also

  • Never do multitask, a master of all is a master of none.

  • Think problem to understand it and not how to code it.

  • After thinking properly then start coding.

  • Practice enough, things will become easy and code will come in handy.

  • Don't overtime on a problem, 1hr max.

  • Do it, even if the problem seems similar.

  • Learn how to write better code from experts.

  • Embrace rejections, and learn from it, he got 527 rejections before he nailed it.

  • SystemD interview, resources are educative.io and codekarle.

  • Soft skills:

    • Ownership: pick the project and finish it till the end.

    • Scaleable projects in a resume are a good sign.

    • Ambiguity: Same problem having different solutions and you have to brainstorm on the solution.

  • Behavioural Interview: STAR METHOD.

    • Situation: introduce the situation to the employer and set a context.

    • Task: Describe the task you had to complete including expectation and challenges it would involve.

    • Action: explain what you did and how you did it.

    • End: at the end what was your result, your accomplishment and rewards.

  • Research before you start, e.g Why to learn that techstack?

  • Knowing what to work on is much more important than working hard.

  • Give it time, make long-term goals for years, don't evaluate on a daily basis give some time.

  • Focus on the Gains and improve your gaps, stop comparing yourself with others, even small contributions matter, focus on yourself.

  • Don't do it alone, find a buddy or learn in public, this way you will not fall in the trap of pseudo-achievement and depression.

  • Behave like a programmer, read docs, and be a problem solver.

  • Build your own personal projects and learn by doing.

  • Study more in less time, flowstate.

    • Brain power max when we wakeup.

    • Study at the morning, focus matters.

    • Start imp task as you wake up.

    • Write down what to do in the morning, a day before.

    • Choose the right task to work on, Task should be engaging neither overwhelming nor easy.

    • Once assigned tasks are finished you can call it for the day rather than doing more tasks, take a rest, and don't push yourself hard as the journey is very long, slowly and gradually you will make it.

    • Assign Time for mindful distractions, social media, etc and eventually reduce it over time not overnight.

    • Make an Artificial deadline, and fix the amount of time to finish a task, this way you will be more mindful and your productivity will increase.

    • Active recall, rather than making notes make questions and teach what you learnt to someone else, this way you will retain effectively.

  • HACK YOUR MIND TO CODE

    • Repetition, apply what you learnt in different projects.

    • Study less for a longer time, the journey is long dont exhaust yourself.

    • Don't push hard, slowly and gradually things will click.

    • Parkison law, time-bounded goal, as we discussed in previous point.

    • Watching other code wont take you far, Code it yourself.

    • Collective learning, collaborate with others on platforms like GitHub and do open-source contributions.

    • Utility-based learning, learn only when you need it, it will retain a longer.

    • Learn by doing, grab basics first then learn more advanced concepts as you need them.

    • Fo hands-on learning, learn advanced concepts only when you need it in the project.

    • Don't try to learn everything, hack your mind!!

  • AHEAD OF AVERAGE PROGRAMMERS

    • Learn debugging, breaking + fixing, resource: software debugging on Udacity.

    • In programming quality matters a lot over quantity, one great strong project at resume can give you an edge.

    • 10x more code reading, read code by professionals on Git Hub, Quality code.

    • Attend Meetups and conferences, e.g meetup.com

    • Open source contributions can be a game changer.

  • Think Like a Programmer

    • First principle thinking, complex problem to the most basic easy problem!!!!

    • KISS: keep it simple stupid.

    • Understand the big picture and break down things to sub-problems.

    • In programming, you dont need to know everything you just need to know how to find it. Someone has already done it, you don't need to reinvent the wheel.

    • Be formless shapeless like water, adapt to new reality by learning it, keep up with the trend, be open-minded

  • Must do projects to be a programmer.

    • Tic tac toe (object orient design, algorithmic thinking, vs computer, ui/ux)

    • Tournament runner (dividing teams into groups, different matches etc.)

    • Class scheduler (assign classes to every student, no overlapping every student attends chosen classes, how to unit test, understanding of open-ended projects, how to think like a software engineer)

    • DFS/BFS VISUALISER( ALGORITHMS), search and reach the end point, depth-first search and breath-first search.

    • Deal finder (best prices when shopping online, chrome extension or program, web scraping , etc)

  • 5 important maths skills: combination, logarthmic, factorial, exponential, and Modulus.

  • Stay inside the circle of control, and away from the circle of influence and external.

  • In the ideal world, good programming skills and projects are enough to classify yourself as a software developer, but interviewers will ask you specific types of questions, so prepare for the interview and master DSA.

  • Resume tips:

    • better follow youtube channel life at google and their videos on how to make a perfect resume.

    • LinkedIn profile is very important.

    • Hook recruiters in the first 10 seconds only, could be your projects etc.

    • 30-35 application rejections before a job is ideal.

    • Big No are: typo, bad grammar, unprofessional emails and non quantifiable. result.

    • Apply b/w 6-10am, apply within 1-4 days of job posting,

At the end i would like to say the only person who needs to believe in you is you.