Programming / Software Development / Computer Science

Related pages

News sites


Getting a job

'Using a hash map is [u]so common in coding challenge solutions, it should always be your firstthought. Always ask yourself, right from the start: "Can I save time by using a hash map?"[/u] '


You might have heard of binary search before, but that doesn't help you much unless you've learned the lessons binary search teaches us. 

Binary search teaches us that when an array is sorted or mostly sorted:
1. The value at a given index tells us a lot about what's to the left and what's to the right.
2. We don't have to look at every item in the array. By inspecting the middle item, we can "rule out" half the array.
3. We can use this approach over and over, cutting the problem in half until we have the answer. This is sometimes called "divide and conquer."

So whenever you know an array is sorted or almost sorted, think about these lessons from binary search and see if they apply.


I was hired not by replying to every email and answering the phone for every recruiter that called, but by getting lost in the wrong building and bumping into Kalimar Maia who was also in the wrong building =)

Yes, that's it no secret technique, I was lost and introduced myself to Kalimar and asked if he was going to the Ruby Meetup group as well, and he said yes. We talked a little and hit it off well. We found the right building and I happened to give a short 5 minute presentation that night. Kalimar said I did a good job and that we should get coffee some time.

Kalimar emailed me the next day and I said I'd love to meet for coffee and get some advice on how to get hired or just about development in general. Anyway long story short I had no idea that ZipList was thinking of bringing somebody new onto their team. We met for coffee and towards the end of the conversation mentioned the idea of applying to ZipList. Just over 1 month later I started my first day at ZipList on August 1st! 2 weeks later I completely finished up with all of my shoeing practice and have not touched a horse since!

The moral of the story is: BE NICE TO EVERYONE!….especially when on an elevator =) Seriously though the "secret" to getting hired as a junior developer is to simply go religiously to local Meetup groups, give short 5 - 10 presentations as often as possible without being obnoxious, and finally after the meetup has finished, go to the local "hangout" afterwards.

Source: ... final.html

How Can I Get Experience Without a Job? If you're in college, and your school offers programming lab courses where you work on something seriously difficult for an entire term, take those courses.

Along with your resume, please include:
A) Links to any projects (we really like these). We especially like live projects; please do NOT send your code.
B) A cover letter that includes why you want to join Khan Academy
C) A copy of your unofficial transcript
D) (Optional) While not required, it is favorably looked upon to build an exercise of your choosing using our open-source framework


I suggest finding a shop (or two or three) and try to contact the programmers that work there (or the administrative assistants). Ingratiate yourself, use the internship angle, offer to sweep the floors and clean the windows and anything that gets you in the door. Then, when you get in the door, shut your mouth and absorb as much as you can, including the hierarchy (such as, what's considered an entry level position). Shake hands, smile often, be honest and respectful, and find an advocate.
I lived for a short period of time in Mountain View/Santa Clara back in the early noughts (00's), and the above was consistently the gist of what they had to say (plus some film set wisdom).How do you get a job at Cisco/Oracle/Google/etc.? Go have lunch on their campus. Often. Talk to people. Find out what they're working on. Research, be interested, ask thoughtful questions. BE NICE. Stick around. Don't be a pain, don't sulk; congratulate the more fortunate. Be persistent. Observe hierarchy.

Finding a remote job



Job boards


Is going back for a BS in CS worth it?

In software at least (I speak from the perspective of someone working in the private sector in Silicon Valley) experience is king. It will be very hard to get a job with a master's in Software Engineering and a BS in history unless you have some work experience that makes it look like you've actually built some software.

If all other things were equal, we'd pick a guy with a BS and two years experience writing software at a company we'd heard of over a guy with an MS and no experience. There is a fairly widely held (but not universal) belief that the reason people get master's degrees in this field is either A) they would let you into the US to go to school and you could start your job search much easier that way, or B) you weren't good enough to find a job with just your BS.

I'm not saying you definitely shouldn't do this, but in software at least, you're going to want internships and published papers (we will read them if we're considering you) and real work for real companies if you want to compete. We've turned down lots of job applicants who's work experience amounted to building "simulated networks" for proof-of-concept stuff in advanced degree programs. Only one person on my team has a masters degree, and he also worked for Microsoft Research and had a strong recommendation from a faculty member who happened to be connected with the company.

posted by tylerkaraszewski


I'd take the engineering degrees off the table, if I were you. If you aren't totally and completely into them, in love with problem solving (and math), you're not going to do very well. These are programs designed to wash out the unenthusiastic and incompetent.

I did compsci for my bachelors. There were a huge number of kids in the program only because somebody had once told them that computers were where the money is. I was in the program because programming was really easy for me, and because I spent lots of time tinkering with my computer anyway. I ran fucking rings around the computers-are-cash kids, because while they did the assignments and passed the courses, I did the assignments, then did about 30-50 hours a week of extra "work" just because I was that into it. I set the curves in every class--except for the couple where there was an even more obsessive geek in attendance. And the cash-kids would ask me what book I read to get so good. Hah.

I have similar stories from my engineering buddies.

posted by Netzapper

Source: ... -good-idea

So, let’s say that you weren’t in a position to get into a top undergraduate program. One tempting option is to try to get an MS from a top computer science school to legitimize yourself on paper. If you actually are passionate about programming, I would urge you not to do that[1]. Although you will look more legit on paper, many startups are catching on to how useless an MS degree can be. Until the market catches up, an MS will probably get you an extra $10K in your base salary. However, keep in mind that you’ve just taken two years out of your life and paid some amount of money (how much you pay depends on whether you can TA while studying). Instead of going back to school, take a few months to build something really coolTeach yourself thingsTake Udacity and Coursera classes and potentially use their career placement services. Work with a recruiter whose recommendation will help you get a first round interview even if you don’t have a pedigree. Once you start working, raises you get will quickly make the initial 10K boost pretty insignificant (especially given the opportunity cost and potential tuition expenses).

So, to answer the question: BS >>> MS (if they’re from the same school, assuming you have to choose one or the other). ... ecruiting/


This'll be a journal where I can record any thoughts I have as I learn some new programming tool.

  • I'm noticing that as I make progress on the Ruby on Rails tutorial and Elenco 130-in-1 guide, I'm becoming more excited. Seeing my progress and thinking about the future things I'll be able to accomplish is really motivating me in an incredible way. I'd known what Schwarzenegger said about the importance of keeping records, but I didn't expect it to happen in this situation.

- just as with the LSAT, it seems the #1 concern a person should have is remaining motivated:

[my friend] (9:04:17 PM): I don't try to use it to get rich because it's very boring
[my friend] (9:04:26 PM): and I'd rather be trying to self-improve than to make money
[my friend] (9:04:47 PM): any type of problem solving and learning
[my friend] (9:04:53 PM): I think is more constructive
[my friend] (9:04:59 PM): then repeatedly solving things out of my toolbox
[my friend] (9:05:06 PM): acquiring the toolbox was useful but
[my friend] (9:05:12 PM): coding @ industry standards is not
[my friend] (9:05:29 PM): unless you're very very lucky and they have you fix what no one else can figure out or something
[my friend] (9:05:33 PM): or let you do whatever you want
[my friend] (9:05:53 PM): I got very bored doing coding projects at MIT because it was very
[my friend] (9:05:57 PM): "do this design document"
[my friend] (9:06:49 PM): it's also more motivating hacking together your own project

Learning Resources



  • Undated - Peter Norvig - Teach Yourself Programming in Ten Years
  • 2011.09.20 - Signal vs. Noise - Four tips for learning how to program
    1. Learn by doing. Work on a project you find interesting. Don’t try to learn to program solely academically, by reading.
    2. Do what you can. (NW: Like when you go to the gym.) Get as much of the project done as you can.
      1. The going is usually very slow at this phase, with lots of false starts and backtracking as I learn what works and what doesn’t.
      2. Posting to mailing lists or forums or IRC and asking for help are not so useful to me.
    3. If the problem I’m tackling is large, I try to break it into small bits first.
      1. This is where TDD really shines. It forces you to take the problem apart and think of it in the most atomic pieces.
    4. Ask experienced people to review your code and let you know what you could've done better.
  • 2012.03 - Jimmy Li - Learning to Code: The Roadmap I Wish I Had Been Given
  • 2016.10.24 - Medium - Melinda Byerley - Learning To Code: For My 14 Year Old Niece
    • A comment I added:

      Hi Melinda! I’m basically self-taught and I’ve spent a few years thinking about this issue, and the recommended path I’ve arrived at is:

      Start by learning how to write simple programs that move the mouse around and send keyboard-presses; that’s the fastest/easiest way I’ve seen knowledge of programming translate into a real-world benefit for the person learning how to program (I’m a huge fan of AutoHotkey because it’s so easy to install and get started with, but it’s Windows-only). If the person is in the workforce and has a job where she uses Excel, then I would recommend she also start by getting comfortable with Excel formulas and writing simple VBA macros. If she’s into gaming, she should also try starting by learning to create mods (eg a Minecraft mod) rather than creating games from scratch. Once she’s comfortable with those I recommend learning how to automatically send emails, scrape websites, and build websites with Python and (Python is my favorite programming language but IMO it has a steeper learning curve than AutoHotkey/Excel/modding before a total newbie to programming will feel comfortable doing useful stuff with it.) And from there, if she has some kind of specific situation where she needs to pick up another language, she can learn about other languages.

      Here’s a video of me and my friend walking through how to use AutoHotkey:

Cooking analogies




Individual books
Computer Architecture
Introductions to Programming
Computer Science Ideas
  • Foundations of Computer Science by Aho and Ullman - now free online!
    • I'm on page 11 of the Chapter 3 pdf, p99 of the book itself. It's been slow-going b/c I want to understand as much of his math notation as possible.


Dev Bootcamp (dead)
Coding Dojo
Fullstack Academy
Hack Reactor
  • Praise
      • I attended MakerSquare in 2014 (it was a Ruby/Sinatra/Rails/JavaScript curriculum then). I do not have a college degree and I got my first offer five days after graduation. There is no way I would have been prepared to get a junior developer job without attending bootcamp. It absolutely changed my life. I went from making ~$30k a year before boot to making ~$70k, and now 2 years on I’m making six figures, and even more importantly, I love my work.
        I am the software engineering lead for my company (doesn’t mean I’m senior…. it means I go to meetings :p ), programming in Ruby, JavaScript, Java and Scala and still learning new things every day. I’m also getting a CS degree part-time now, which I would have never been inspired to attain if I did not attend MakerSquare.
        Maybe the bootcamp experience is different now that the market is saturated, but from what I hear, Hack Reactor is a well regarded program. MakerSquare was worth every penny and more for me.
The Recurse Center (aka Hacker School)
Turing School of Software and Design


  • Stanford - CS107 - Programming Paradigms
    • Highly recommended by Mike Krieger here
      • CS107 (Programming Paradigms) this is the class where I learned to think like a programmer, almost entirely from Jerry Cain. I still remember the assignments in this class, more so than almost any other one.

Misc Links to Sort

Misc Thoughts

  • thought: a friend had posted a link to the memoirs of a CS PhD at Stanford, and someone else had posted, "Only halfway through but it's amazing how much of his experience mirrors my own". This made me think about my zombie infection simulator and how any of those individual people could have told a story that would ring true for many of the other humans in the simulation: "I was minding my own business when suddenly everyone around me started panicking, I wasn't sure what was going on, and then a minute or two later these zombies came into view and started killing everyone". So my question is, under what circumstances does this happen in general? I'd like to have a nice clean description of the characteristics that define situations where this phenomenon may appear. For example, in the PhD example, it seems to be a result of the incentives that exist in academia among professors, journals, students, etc.