Published using Google Docs
Programming Jobs FAQ
Updated automatically every 5 minutes

How are programming job interviews normally conducted?

Normally it is 1 of 2 ways

60 min phone screen

90 min coding interview

60 min architecture interview

60 min culture interview

45 min final interview

3hr/ 3 day take home project

60 min coding interview (may not be included)

60 min architecture interview

60 min culture interview

45 min placement interview

How well do they pay for those jobs?

It ranges a lot but in America, if you are just self taught, going into a 500+ person company, you would probably start at 65-85k right now if you could pass the interview. It's not uncommon to start at 100k now out of college if your coding skills are good.

What is this architecture interview?

Once you write enough code, you’ll start to see that you need to have certain guidelines to give it structure. It’s like how if you build a tower of dice straight up, it will be unstable. That’s why it’s called architecture, because it prevents the whole system from falling over under the weight of its own complexity.

Generally in the arch interview you will need to describe a standardized architecture in detail, and you may have to design an API.

You should know a little bit about MVC, MVVM and Reactive, regardless of your discipline.There are a bunch of other ones that are only applicable to certain fields, like Mobile development, which also has MVI/Viper.

This is an example of an MVC architecture with layering.

How would having a chem e degree vs cs degree affect my opportunities for switching and growth?

The only thing your degree will affect is whether you get that first screen or not, the rest is performance based

Interestingly you may be ignored based on recent relevant experience. If you have worked at a bank or in the government in the past you are really in a different field - they move very deliberately and slowly which is not great for profits.

Are these coding take home projects about 3hrs or 3 days? Do these tend to be difficult or more of a basic skills check?

Take-homes are more difficult than phone screens. They usually expect 3 hour take homes to take 1.5 hours to complete, and they usually expect 3 day take homes to take 4-6 hours to complete. The structure of the take home depends on which discipline you are applying for, eg data science will be far different from Android.

3 hour take homes have the clock start when you download the project - the longer ones are just an agreed upon time when you need to have returned it by. It can actually be longer than 3 days - usually they recommend you start it on the weekend.

Best to apply to places in groups if 3-4 so you’re not working on too many take homes at once

How fast can one progress in that line of work?

It is usually broken down into levels.

Level

Title

Scope

Duration

L0

Interns and contractors

Self

Improvement expected within 0.5-1 year

L1

Junior Software Engineer

Self

Improvement expected within 1 year

L2

Software Engineer

Team

Improvement expected within 3 years

L3

Senior Software Engineer

Team

Indefinite

L4

Staff Software Engineer

Pod

Indefinite

L5

Senior Staff Engineer

Superpod

Indefinite

L6

Principal Engineer

Department

Indefinite

 

What are the growth opportunities like?

Generally as you get more senior you get more specialized. You are expected to be continuously learning to stay up to date with the field - this is harder in some disciplines than others. Most places will have development training and a “league” type initiative, where people from the same role meet to discuss new technologies and techniques.

How about relocation possibilities?

With the pandemic, most places are now open to fully remote. The major hubs are San Francisco, Boston and Austin.

Would codecademy certificates be worth anything?

I think it would be a good idea to have a certificate of some kind, because it shows that you’ve had at least a little formal training in the field. Unfortunately you need to impress HR first - engineers will be able to level you effectively regardless of your certificates. Boot camps are effective, so they are no longer looking just for degrees.

Will I need a resume with projects I’ve done that show I’m capable of coding?

Yes. You can also list github projects on your resume. Most jobs will require a Linkedin and Github link. You don’t need to go overboard, but there should be at least 1-2 projects in there with a Readme. Some places check it out in depth, but most just check that it’s there and you’ve actually put code in it

What kinds of disciplines are there in computer science?

Discipline

Languages

Web development - UI/UX/Front end

JS, Typescript, HTML, CSS, SASS, SCSS, React

Web development - Back end

Python, Ruby, Java, Node(JS), cloud technologies (AWS/google cloud/Azure)

Web development - FullStack

Backend + Frontend

✨Android Engineer ✨

Kotlin, gradle, Jetpack, XML

iOS Engineer

Swift, Xcode

Hybrid Mobile Engineer

React Native (JS) OR Flutter(Dart)

Data Science

R, Python, Julia, Jupyter Notebooks, Tensorflow / Pytorch. Focuses on either data exploration / data mining, or model creation (like the AI that does visual search)

Database Administrator (DBA)

MySQL, Postgres, MySQLServer

Game Development

C++, C#, Rust

Information Security (Infosec)

C, Bash/sh/zsh, nmap, linux, curl, JS

System Admin / Network engineer

((Windows/Powershell) or (linux/sh/bash)), perl, python, package managers.
Halfway between Infosec and Platform engineer.

Platform Engineer

Bash, gradle, package managers, CI/CD providers

Writes the stuff that allows code to run

Quality Engineer

Focuses on testing frameworks within one of the other disciplines

Developer Relations

Focuses on FAQ / tutorial content on one of the other disciplines

Financial Technology (FinTech)

Focuses on payment systems for one of the other disciplines. Usually a combination of security / fullstack.

Search Engine Optimization (SEO)

JS, HTML, XML. Focuses on getting web pages onto the front page of google

Analytics and Intelligence (AAI)

SQL, python. Focuses on writing dashboards / graphs that inform business decisions. Close to data science.

Should I go into game development?

rust, c and c++ are "systems level" programming languages, which means they have no training wheels and sometimes very strange syntax. It is easier to move up than down when it comes to languages, so starting from python and moving down will be tricky.

C# is a good alternative because it is used in engines like Unity, and it is somewhat high level.

The other things to think about are pay and crunch time. Game developers are paid very little comparatively, are frequently laid off after they finish releasing a product and have to work up to 60 hours per week right before launch.

Seems like starting pay for a junior dev would be somewhere between 35-65k

What are the different language levels?

Compilation = taking source code and translating it into a lower level language

        Ex Java -> JVM ByteCode

Ex C++ -> X86 -> Binary

Transpilation = taking source code and translating it into a same-level language

        Ex Typescript -> Javascript

Types of compilation

        Ahead of time - embedded or binary code gets saved into a file, then that file is run, ex C

Just in time - code is compiled as it is run, ex Java

Interpretation - the code is directly interpreted without being compiled, ex Bash

Level

Examples

Why

Top

Scratch, drag and drop editors, Excel

Sometimes writing actual code is too much setup work, say you want to do arithmetic on a list of values for a single report - do that in excel instead

High

Python, Ruby, Bash, R, JS, Typescript

Applications that need to be changed frequently / highest safety

Mid-High

Kotlin, C#, Java, Julia, Swift, Dart

Business applications that require more safety than speed. Things are less likely to crash but they run slower.

Mid

C++

Compatibility with microsoft products / C with more features

Low/System

C, Rust

C = Speed over safety. The fastest language, but crashes a lot unless you know exactly what you’re doing. Used for writing operating systems

Rust = Safety and speed at the expense of developer productivity. Every change creates a lot of errors

Embedded

X86, ARM, WASM, ASM, JVM ByteCode

Ultimate speed - used when writing operating systems. 1:1 translation to binary

Machine

Binary

The thing the computer actually sees