Code Monkey home page Code Monkey logo

programmers-guide's Introduction

Programmers-Guide

How to choose a Programming Language?

It does not matter which first programming language you learn. It may be C if you are a college student or C++, Java maybe.

It depends on what aspire you to become a coder?, Building websites?, Apps?, Games?, Machine Learning?, AI? and so on.

If you want to build websites then choose JavaScript, For Android Apps choose Kotlin or Java or Swift for IOS, For Machine Learning go with python.

If somebody come up to me and say - "Hey, I want to learn a programming language. I am not sure what to start with"

Then I will only ask I follow up question - What you want to build? - Websites or Apps ?

For Website - JavaScript, For Apps - Kotlin.

Once you have learn one programming language. It doesn't take even a week to learn other. OfCourse mastery will take some time.

How to learn a Programming Language

Learn about Data types, Input and Output format, Syntax Style, Functions, Arrays, Multidimensional Arrays, Rotation in arrays, Lists, Vectors.

Selection Sort, Bubble Sort, Quick Sort, Merge Sort, Count Sort, Binary Search, LinearSearch.

Time Complexity and Space Complexity.

Do interview questions on Arrays, Number theory and Bit masking, Check advantages of bit masking and cost effectiveness, Strings.

Learn about Stack and heap memory, Static and dynamic memory allocation Recursion, Backtracking, Problems on recursion and backtracking like maze problem,suduko, N Queue Problem,Dynamic Arrays And it's Interview Question.

String + Recursion Problem

Now learn about OOP i.e Object Oriented Programming.

Fast and slow pointers, Cycle detection problem, Binary trees, DFS and BFS, AVL trees, Red black trees then Tries.

Heaps and Hash maps, Dynamic Programming.

Do not give more than 30 minutes to a problem or at Max 40 minutes.

If you are not able to solve in the first attempt don't be dishearten, go for the hint and try. Still can't make it ? No Problem. See the Solution, Then Come back to same problem after a Week.

In solution, first try to came up with the easy solution. Don't worry about time complexity. Once you are confident of the naive solution then think can you make it faster, more efficient ? Then look for optimization.

This you could achieve in three months after this do Regular Practice.

Doing just leetcode is enough.

Moving ahead build projects, explore more things into the computer science world.

Don't fall into the hell of Development v/s Competetive Programming questions. In the industry as an software engineer you will be involve in development. So learn about the tech stacks use in the industry. Learn about system design. Take MOOC Courses by MIT, Stanford, UC Berkley and so on. As far as interview is concerned there competetive programming is often recommended as a form of time bound practice. I have seen many students including my classmates get into Competetive Programming only to have a good rating as they think this will make the interviewer happy. They don't really enjoy it. They do it only for the sake of validation. Also there are genuine candidates out there who love Competetive Programming and make it to ICPC. So don't just follow the herd, think whether you like it or not then choose what you want to do? But If you ask me then I'll always prefer development as I love development.

Tutorial Hell

People have limited capacity to process information. There’s a mountain of information in the world and you constantly have to choose what you pay attention to. It’s cognitive overload. This leads to tutorial hell,you feel like wanting to go through each resource and never feel ready for the job. The only to get out of it is building projects and testing things which you have learn.Consequences of tutorial hell are like studying on last day for exam.You know 20 chapters are there to be covered and have already prepared few chapters earlier,still you will end up opening the first page of first chapter. Do not always start from chapter 1.

"If you work for 10 years, do you get 10 years of experience or do you get 1 year of experience 10 times? You have to reflect on your activities to get true experience. If you make learning a continuous commitment, you’ll get experience. If you don’t, you won’t, no matter how many years you have under your belt." – Steve McConnell, Software Engineer.

Multitasking

Multitasking is like shooting two target with one bullet you will end up missing both targets. Instead of multitasking,switch between the tasks,do one thing at a time.

The Only Skill you need to learn

Source - Educative.io Newsletter

The only skill you need to learn as a Programmer is knowing how to solve a problem. Becoming a great problem solver will enable you to become a great programmer. When experienced software engineers are designing a streaming service (think Spotify or YouTube), one of the biggest hurdles they are confronted with is how to design for low latency. As a user, it is extremely annoying whenever you encounter a laggy stream. So, part of a good user experience is making sure that users can stream multimedia content even when their connection drops to 3G speeds (~3-5 megabits/second). When a user presses play, the media should ideally start to play within 200ms.

There are multiple ways that engineers can address this problem, some more elegant than others, but they are the most effective when implemented in tandem.

  1. Reduce streaming quality: This may be the first thing to come to mind. If you reduce the quality, you reduce the file size, but this may not be the most user-centric solution.

  2. Chunk and buffer downloads: If you can break a file into pieces, the system can work on downloading one piece at a time. By downloading the first second or two of a file, you buy the system more time to buffer the subsequent chunks while the media streams.

  3. Cache queued material: After the media that is currently streaming has finished downloading, the system can cache the next few files in the queue. This is particularly useful when it comes to streaming music in a system like Spotify or Apple Music. If a user skips a song or the internet connection drops, the next track is already cached and ready to play.

When we talk about how software engineers are paid to solve problems rather than write code, this is what we mean. Writing the code to put these solutions into practice takes technical skill, but improving a system given tight computational requirements takes ingenuity, creativity, and even artistry.

So, what should a learner do when embarking on a software engineering journey? In reality, it doesn’t start with writing simple programs. It starts by honing the problem-solving skills that you're already using every day. Then you can learn a programming language to translate those solutions into a format that computers can understand.

How to learn to Code and Get a Developer Job in 2023

Quincy Larson

  • You can find work in just about any industry. About two thirds of developer jobs are outside of what we traditionally call "tech" – in agriculture, manufacturing, government, and service industries like banking and healthcare.

  • Go to tech meetups and conferences. Travel if you have to. (Most of your "learn to code" budget should go toward travel and event tickets – not books and courses.)

  • Build your reputation.

  • Share short video demos of your projects.

  • Keep applying to speak at bigger and bigger conferences.

  • Hang out at hackerspaces and help people who are even newer to coding than you.

  • Contribute to open source. The work is similar to professional software development.

  • Build all 3 of these at the same time. Don't let yourself procrastinate the scariest parts.

  • It's like for years doctors thought that it would be impossible for someone to run a mile in 4 minutes. They thought your heart would explode from running so fast. But then somebody managed to do it. And his heart did not explode. Once Roger Bannister – a 25-year old Oxford student – broke that psychological barrier – a ton of other people did it, too. To date, more than 1,000 people have run a sub-4 minute mile.

  • And it's not like I was doing something bold and unprecedented as running a 4 minute mile here. Plenty of famous developers have managed to teach themselves coding over the years. Heck, Ada Lovelace taught herself programming in the 1840s. And she didn't even have a working computer. She just had an understanding of how her friend Charles Babbage's computer would work in theory.

  • She wrote several of the first computer algorithms. And she's widely regarded as the world's first computer programmer. Nobody taught her. Because there was nobody to teach her. Whatever self doubt she may have had, she clearly overcame it.

Networking Idea

  • I recommend using a Kanban board tool like Trello, which is free.

  • You're going to create 5 columns: "to evaluate", "to contact", "waiting for reply", "recently in contact", and "don't contact yet".

  • Then you're going to want to create labels, so you can classify people by how you know them. Here are some label ideas for you: "Childhood friend", "Friend of the family", "Former colleague", "Classmate", "Friends from Tech Events".

  • As you add people to your board, you can label them. Take a moment to research each of these people. What are they up to these days? Do they have a job? Run a company?

  • You can add notes to each card, as you discover new facts about them. Did they recently run a fundraiser 5K run? Did their grandma recently celebrate her 90th birthday? These facts may seem extraneous. But if the person is sharing them on social media, it means these facts are important to them.

  • Make an effort to be interested in people. Their daily lives. Their aspirations. By understanding their motivations and goals, you will have deeper insight into how you can help them.

  • The best way to forge alliances is to help people.

How to Build Your Reputation as a Developer

There are at least six time-tested ways you can build your reputation as a developer.

These are:

  1. Contributing to open source
  2. Creating Developer-focused content
  3. Rising in the ranks working at companies who have a "household name"
  4. Building a portfolio of freelance clients
  5. Starting your own open source project, company, or charity
  6. Hackathons

Resume Tips

  • Utilize the space well,avoid cluttered resume. Avoid quotes, summaries, and hobbies.

  • Educational Qualifications should be on top if you are a student.

  • Keep one liners short bullet points.

  • Write about your projects, What technology and architecture you used to make it. Try to be more technical and metric-focused.

  • Write stats like stars on GitHub and how many people are using your project. Write about things you learn and what challenges you overcame.

  • Add workable links to your projects.

  • For applying for internships you don't have to be an expert in anything just be open-minded and willing to learn something new.

  • For certificates - Don't write participated. Write what you learned. Write what projects you made and what things you worked on. This will be more beneficial.

  • When you apply for big tech companies your application goes through an Application Tracking System (ATS) and it is evaluated by a computer. So write Action words in your resume like Established, developed, designed, created, enabled, achieved, launched, enhanced, produced, accomplished, completed, delivered, increased, implemented, debugged, and doubled.

  • For interpersonal work (Community work) - Presented, mentored, promoted, demonstrated, recommended, instructed, led, advised, supervised, guided, managed, negotiated.

  • For research work - Launched, determined, surveyed, experimented, classified, analyzed, observed, explored, identified, documented, and diagnosed.

  • Check Out this playlist on youtube - How Google Hires

programmers-guide's People

Contributors

vinaymayavanshi13 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.