My Answers to Questions from New Coders
Tags: beginners, career, qanda
Published: 2019-02-23 04:35:30

---
title: My Answers to Questions from New Coders
published: true
description: I answer frequent questions from beginner coders
tags: beginners, career, qanda
cover_image: https://thepracticaldev.s3.amazonaws.com/i/oibspxoqw7tattvmpnvc.png
---

As a follow up to my [blogging question and answer post](https://dev.to/aspittel/developer-blogging-qa-2c9b), I asked new coders for their questions, and I will be answering some of them here!

{% tweet 1096400956202409985 %}

## When should I start making projects?

{% tweet 1096517276445085697 %}

As soon as possible! When you know the fundamentals of a language, you can start putting those things together to build something small. And, if you have an idea in mind, that can help guide you to learn even more things. You can build a lot of small command line games after knowing just the fundamentals of a language. You can build even cooler things with the fundamentals of web development!

## What is the most important skill a dev should have?

{% tweet 1096412197939568640 %}

If I were to pick one thing, it would be the ability to teach yourself new things effectively and efficiently. You're going to be constantly growing and picking up new technologies as a developer. The ability to do that is more important than any individual tool or technology.

## How do JavaScript arguments work?

{% tweet 1096433554282762240 %}

Quick jargon breakdown before I start:

*Arguments* - passed into a function each time you call (aka invoke) it.

*Parameters* - the variables in the function definition.

In `function myFunction(x, y)`, x and y are the parameters. When we invoke that function by running `myFunction(1, 3)`, 1 and 3 are the arguments.

When I teach functions, I try to teach them in two ways in order to make sense to two different types of thinkers. The first is a reusable chunk of code that you can plug values into to make your code more versatile and allow for less repeated code. In this case, arguments are the "dynamic" pieces of information that are plugged into the chunk of code. So, when you call the function, that value may change. Pretty much a variable that is different each time you run the function.

I also like explaining functions as a series of inputs and outputs -- kind of like a little machine. You put something into the machine and something comes out based on that. The arguments are the things you are feeding into the machine, and the return value is what is outputted. This matches the algebraic definition of functions more closely -- if you remember `f(x) = 2x + 1` from school math, those are functions just written on paper instead of written programmatically.

In JavaScript, the order of the arguments being passed into the function corresponds to the order of the parameters in the function declaration. So, if my function declaration looks like `function add(x, y)` and I then call the function with `add(1, 2)`, in the function 1 will be `x` and 2 will be `y`. If I instead ran `add(100, 50)`, `x` will be 100 and `y` will be 50. Since `x` is my first parameter, the first argument I pass into the function will be `x`, and since `y` is second, the second value I pass will be `y`. Sometimes it's helpful to diagram this out.

```js
function subtract(x, y) {
  return x - y
}

add(5, 2) // 3, 5 is x, 2 is y
add(200, 50) // 150, 200 is x, 50 is y
add(20, 70) // -50, 20 is x, 70 is y
```

| x | y  | subtract(x, y) | 
|---|----|----------------|
| 5 | 2 | 3             |
| 200  | 50  |150                |
| 20  | 70   |-50                |

## Which languages do you consider important having good working knowledge of.

{% tweet 1096421851826438145 %}

I think that this is super skillset specific. I can speak most to data science and web development since that's where I've spent my career. For data science, I would say Python and R are the pillars right now, I would know at least one of these. For web development, HTML/CSS/JavaScript are the only ones you need. You can build anything in JavaScript at this point -- it's by far the most versatile language.

## How to keep going when people in tech tell you not to?

{% tweet 1097536189194735619 %}

> also hopefully helps for people asking about imposter's syndrome!

This is something I still deal with, and I don't have a perfect answer. I actually quit coding in college because I thought I wasn't good enough, and dealing with people saying rude things to me is a struggle that often makes me think about transitioning careers. But, I try to keep thinking about the things that keep me in tech. The upward mobility it allows, the awesome people I've met, the cool things I've built. Those make it worth it, despite the hard parts. I think about how much those people are hurting to be so hurtful to others, and how they must feel threatened by other people -- which doesn't come from a secure place. Both sides lack confidence, it's just expressed much more harmfully on their end.

I also keep a document tracking my wins: cool things I've built, positive feedback from people, accomplishments I've had. Then, on hard days, I can go back to that document and remind myself of the cool things I've done.

## How to get better with programming logic and solving problems?

> Quite a few tweets here!

This is a topic I could go on about forever, I am actually making a course on this exact topic. Stay tuned for more there. Sorry that I don't have a great concise answer, but it's mostly about thinking abstractly and breaking problems into smaller ones.

{% link aspittel/moving-past-tutorials-a-course-on-problem-solving-for-programmers-3oa4 %}


## How to learn to code for free?

{% tweet 1096414340499030017 %}

I got a bunch of my favorite resources for you!

{% link aspittel/my-favorite-free-resources-for-new-programmers-bia %}

## Where/who can I ask about problems? How long will it take to learn?

{% tweet 1096412997151449089 %}

You can also ask here on Dev.to, Twitter, or another question/answer site! I would also join Slack groups in your area, or the [CodeNewbie one](https://codenewbie.typeform.com/to/uwsWlZ) if you want to ask a little more privately. Or, participate in the forums for where you're learning to code.

As far as timelines, it's super different for everyone. Remember that a lot of people spend four years of fulltime work or even longer learning to get a CS degree. You can accelerate that timeline, but I think that the "I learned to code in a week and make a million dollars" success stories are the exceptions not the rules. It may take some time, and that's okay!

## How much experience do I need before learning Git and GitHub?

{% tweet 1096426056742027265 %}

You don't need any! I've taught totally non-technical people Git and GitHub for business and design use. [This](https://lab.github.com/) is a great resource for learning more about GitHub!

## Which programming language should I learn first?

{% tweet 1096401836762902528 %}

In my admittedly biased opinion, JavaScript or Python. Python's syntax is great for new programmers and is a super versatile language. JavaScript is essential for building websites and you can build tangible things with it more quickly than with other languages.

## How to remember stuff?

{% tweet 1096465463016636417 %}

I don't try and memorize syntactical or language specific things. Those can be looked up, or I can use my text editor to help me. The important concepts are the conceptual ones, and in that case I would focus on understanding more than memorization!

## What projects to build?

{% tweet 1096407892863922176 %}

I think games are always fun! I also think [this](https://medium.freecodecamp.org/every-time-you-build-a-to-do-list-app-a-puppy-dies-505b54637a5d) is a great blog post on things to build! Or try to recreate stuff you've seen online.

---

I hope this post was helpful, if you liked it, let me know or leave a question below and I can do another post like this!