Programming is a craft that improves over time.
But it’s hard to write a large body of code for its own sake.
It’s much easier to stay focused if you’re working towards an outcome.
Pick some project.
The specific project matters much less than having a project.
You could create a command line tool, contribute to an open source project, or analyze a data set.
This doesn’t need to solve a big problem, or even be all that practical.
All you need is something that you find interesting, and that you could demonstrate real progress in just a few weeks.
If you can, try to do something with a unique twist (please don’t create yet another recipe site!).
Check your code into a public Github repository.
Don’t stress about your code being perfect, but I highly recommend writing it professionally.
That means you should write your code in a way that someone else could read it.
Choose good self-descriptive function and variable names and add articulate in-code comment blocks.
Include automated tests.
Provide a well-written README file that explains what this project is for, how to use it, and instructions for installing and running.
Employers do look at Github.
They want to see code samples and evidence of enthusiasm.
If possible, make a live demo of your code available so people can see it in action.
Here’s One Idea: Create an Alexa SkillIt’s surprisingly straightforward to write code that allows back-and-forth voice interactions with the Amazon Alexa device, and it’s big on the “wow” factor.
You can start with a really simple skill, like just telling a canned joke.
From there, the sky’s the limit — just browse some skills that are out there for ideas.
You can add basic back-and-forth interactions.
If you want to store information and preferences about the user, you can dig into learning about the very big topic of storing data in AWS.
Or if you want to pull real-time information from a website, you can learn about making HTTP calls and parsing websites; or perhaps there’s an easier-to-use API endpoint you can call, which would teach you about APIs and JSON.
Or, Here’s Another Idea: A Website That Shows Civic DataYou will impress employers if you can show them you built and deployed a website yourself (beyond your bootcamp projects).
As one idea, why not expose an interesting public data set?.Governments and cities expose all sorts of interesting records.
For example, a quick glance at New York City’s Open Data gives me an idea for showing customer service and facility ratings for the city’s walk-in service centers; or another idea for a site that correlates bike ride counts with weather.
Or, The Power MoveIf you have a particular employer or specific field picked out, why not choose a project tailored to impress?.A couple of years ago when I worked at Xmarks, we interviewed a guy (Will Wagner) who came in with a demo that used some of our APIs.
That was huge: in addition to highlighting his ability, this showed that he understand our product and was truly interested in us.
Study Software FundamentalsSet aside time to study essential software fundamentals like common data structures, programming concepts like functions and OOP, and databases.
These come up in interviews, but more importantly these are the common tools that every software engineer should have in their toolkit.
It’s how you write code that stores data reliably and easily; that runs quickly because there aren’t unnecessary nested loops; and that’s easy to modify and maintain because there aren’t twisty flows or repeated blocks of copy-and-pasted code.
Data StructuresYou must be comfortable using lists and dictionaries in your preferred programming language.
For lists, you should know:Syntax to iterate through every item in a listSyntax to get nth item from a list; the concept of an index and 0 indexingHow to sort a list and an intuition that this isn’t “free” (if a list is long, this can take some time)More advanced: the differences between arrays and lists; stacks and queues.
For dictionaries, some key things are:The syntax of using a dictionary for lookup and insertionThe concept of key-value pairsThe intuition that lookup by key is fastHow would you iterate through every key?.Every (key, value) pair?Common use cases: a “bag of attributes” to describe a thing, lookup tableThe relationship between dictionaries and JSON (serialization)More advanced: what hashing functions are (and how they relate to dictionaries); and the uses of cryptographic hashes like SHA-1.
Programming ConceptsWhile there are all sorts of programming concepts and patterns you can learn, two essentials areas are knowing how and when to put repeatable actions into functions, and being familiar with object oriented programming concepts.
Functions are the core building blocks that let you avoid repeating yourself; but there’s a lot of nuance in deciding how much, exactly, each function should do, picking a good name, and making sure the inputs and outputs are clear and predictable.
This comes with experience, but being comfortable with defining functions is an absolutely core programming skill.
You’ll need to study up on object oriented programming (OOP):Instance (a thing) vs.
the class (a template for things)In your preferred language, know how to define a class with an initialization methodBe prepared to talk about encapsulation, abstraction, and polymorphismUnderstand inheritance (subclasses).
It helps to memorize some examples, like a sedan is a subclass of car which is a subclass of a vehicle.
Database (SQL)Code bootcamps often skim over database fundamentals.
ORM abstractions like ActiveRecord or SqlAlchemy are no substitute for knowing how to write SQL queries and design schemas, and such skills are useful in a wide range of jobs.
I highly recommend taking a free online class on relational databases and SQL.
Also, try setting up a PostgreSQL or MySQL database on your own computer, create a few tables, and extract some interesting insights.
Note that MongoDB is a different enough beast (it’s not SQL) that it may not be what people mean when they ask about “database experience.
”The Interview ProcessDo some research about typical interview questions, and perhaps meet with your bootcamp cohort to practice asking questions to each other.
It’s also a good idea to consider the interviewer’s perspective.
Talk with People and Network Like a ChampNetworking is the fine art of maximizing your chances that random good luck will land in your lap.
This only ever helps.
In addition to having an active Github presence, you should have an up-to-date LinkedIn account with a large number of connections.
I use LinkedIn half as resume, and half as a way to stalk people to find conversation points and serendipitous connections.
By adding a large number of people who I’ve worked with professionally, even if fleetingly, I can make myself more open to chance opportunities.
It’s important to get out of your comfort zone and meet people face-to-face.
Attend meetups, walk up to strangers and introduce yourself, and follow-through on connecting with interesting people.
It’s totally OK to reach out to people who you don’t know very well but you want to know better, even if they have intimidating-sounding titles and seem busy.
A key life lesson I’ve learned is:It never hurts to ask someone if they’re willing to meet for a few minutes to get coffee and chat about their background and give advice.
Most people will say “yes.
”You’d be surprised by how often serendipity and good-will opens doors.
It may help to prepare a one-page portfolio website as kind of “calling card.
”The First Step Down a Long PathAll this advice really boils down to this: keep learning obsessively and be engaged!.Your code bootcamp started you down this path and now it’s up to you to keep going.
You do need to be realistic about how large your skill gap is; you’ll be better off starting at a company where there is active mentorship and engineers can spend time with you.
Most smaller startups won’t have the capacity to do this well.
Finally, bear in mind that hiring managers are seeking people who won’t need much management — these are people who can prove that they are self-motivated, will teach themselves what they need to know, and generally make good decisions.
Prove that you’re that kind of person.
Have fun, keep writing code, and find your swagger!.. More details