background preloader

Getting Started

Facebook Twitter

Teach Yourself Computer Science. What about AI/graphics/pet-topic-X?

Teach Yourself Computer Science

We’ve tried to limit our list to computer science topics that we feel every practicing software engineer should know, irrespective of specialty or industry. With this foundation, you’ll be in a much better position to pick up textbooks or papers and learn the core concepts without much guidance. Here are our suggested starting points for a couple of common “electives”: For artificial intelligence: do Berkeley’s intro to AI course by watching the videos and completing the excellent Pacman projects.

As a textbook, use Russell and Norvig’s Artificial Intelligence: A Modern Approach. How strict is the suggested sequencing? Realistically, all of these subjects have a significant amount of overlap, and refer to one another cyclically. The Mistakes I Made As a Beginner Programmer – Samer Buna. Let me make one thing clear first. If you are a beginner programmer, this article is not meant to make you feel bad about the mistakes that you might be making but rather to make you aware of them, teach you to spot signs of them, and remind you to avoid them.

I have made these mistakes in the past and learned from each and every one of them. I am happy to have formed coding habits to help me avoid them. You should do too. These mistakes are not presented here in any particular order. High-quality written content, in general, cannot be created easily. How Companies and Services Like Facebook Are Shaped by the Programming Languages They Use. When the Japanese computer scientist Yukihiro Matsumoto decided to create Ruby, a programming language that has helped build Twitter, Hulu, and much of the modern Web, he was chasing an idea from a 1966 science fiction novel called Babel-17 by Samuel R.

How Companies and Services Like Facebook Are Shaped by the Programming Languages They Use

Delany. At the book’s heart is an invented language of the same name that upgrades the minds of all those who speak it. “Babel-17 is such an exact analytical language, it almost assures you technical mastery of any situation you look at,” the protagonist says at one point. With Ruby, Matsumoto wanted the same thing: to reprogram and improve the way programmers think. It sounds grandiose, but Matsumoto’s isn’t a fringe view.

That can help outsiders understand the software companies that have become so powerful and valuable, and the products and services that infuse our lives. The Ten Commandments of Egoless Programming. The Ten Commandments of Egoless Programming, as originally established in Jerry Weinberg's book The Psychology of Computer Programming: Understand and accept that you will make mistakes. The point is to find them early, before they make it into production. Fortunately, except for the few of us developing rocket guidance software at JPL, mistakes are rarely fatal in our industry, so we can, and should, learn, laugh, and move on.You are not your code.

Remember that the entire point of a review is to find problems, and problems will be found. Don't take it personally when one is uncovered.No matter how much "karate" you know, someone else will always know more. How To Learn Hacking. Copyright © 2014 Eric S.

How To Learn Hacking

Raymond The “hacking” we'll be talking about in this document is exploratory programming in an open-source environment. If you think “hacking” has anything to do with computer crime or security breaking and came here to learn that, you can go away now. There's nothing for you here. Translations of this document are available in: Hungarian Hacking is primarily a style of programming, and following the recommendations in this document can be an effective way to acquire general-purpose programming skills.

Note that one can be doing hacking without being a hacker. Hacking doesn't have enough formal apparatus to be a full-fledged methodology in the way the term is used in software engineering, but it does have some characteristics that tend to set it apart from other styles of programming. Hacking is done on open source. The hacking style has been closely associated with the technical tradition of the Unix operating system. Are Programmers Headed Toward Another Bursting Bubble?

Beating the Averages. April 2001, rev.

Beating the Averages

April 2003 (This article is derived from a talk given at the 2001 Franz Developer Symposium.) In the summer of 1995, my friend Robert Morris and I started a startup called Viaweb. Our plan was to write software that would let end users build online stores. The 10x developer is NOT a myth. Update: you can find a Spanish translation of this blog post here.

The 10x developer is NOT a myth

Last night, I tweeted the following: I got tons of replies and questions, but Twitter is an awful medium for discussion, so I’m writing this blog post as a follow-up. There have been abunchofarticles that claim that 10x developer doesn’t exist. The arguments against it generally fall into 3 buckets: Holding a Program in One's Head. August 2007 A good programmer working intensively on his own code can hold it in his mind the way a mathematician holds a problem he's working on.

Holding a Program in One's Head

Mathematicians don't answer questions by working them out on paper the way schoolchildren are taught to. They do more in their heads: they try to understand a problem space well enough that they can walk around it the way you can walk around the memory of the house you grew up in. Organizational Skills Beat Algorithmic Wizardry. I've seen a number of blog entries about technical interviews at high-end companies that make me glad I'm not looking for work as a programmer.

Organizational Skills Beat Algorithmic Wizardry

The ability to implement oddball variants of heaps and trees on the spot. Puzzles with difficult constraints. Numeric problems that would take ten billion years to complete unless you can cleverly analyze and rephrase the math. Software Engineering ≠ Computer Science. DANIEL SLATER'S BLOG: How do I know if I’m good at programming? I was talking to a very junior programmer recently and he asked me a great question.

DANIEL SLATER'S BLOG: How do I know if I’m good at programming?

A question so good, it made me stop and think about my perspective on how learning happens. The question was: “How do I know if I’m good at programming?” I’ve often been asked the other side of this question “How do I get good at programming?” , or “What can I do to get good at programming”. Unconventional way of learning a new programming language. So, how do you learn good practices of the new programming language that you are trying to learn?

Unconventional way of learning a new programming language

Contribute to an open source project in that language. Surprised? ABC: Always Be Coding – Always Be Coding – Medium. Be honest.

ABC: Always Be Coding – Always Be Coding – Medium

Are you a good engineering candidate? How are you measuring yourself? How many companies have you interviewed at? Ten Rules for Good Code. Pieterh wrote on 22 Sep, 17:55 (457 days ago) It's one of my interview questions: "what is Good Code? " Surprisingly, almost no-one gets it right. It's not about speed, elegance, language, or style. Good Code is code that solves real problems for real people, in an effective way. Let me list the top 10 rules for writing good code. Don't learn to code. Learn to think. It seems like everyone is trying to learn to code: Code.org has celebrities like Bill Gates, Mark Zuckerberg, and Chris Bosh telling you anyone can code; CoderDojo's are springing up all over the country; the UK has made it part of their official curriculum for all grade school kids. I think this is slightly misguided. Don't get me wrong - I do think the world would be better off if everyone had some familiarity with coding - but coding itself should not be the goal.

Computers and programming are just tools. They are a means to an end. The real goal should be to teach people a new way to think. Computational Thinking: How To Get It, and Why It’s Important. Wednesday, August 27, 2014 A group of children on a playground, each kid clutching a slip of paper with a number on it, moves along a line drawn in chalk, comparing numbers as they go and sorting themselves into ascending order from one to ten.

Another group of children, sitting in a circle, passes pieces of fruit—an apple, an orange—from hand to hand until the color of the fruit they’re holding matches the color of the T-shirt they’re wearing. It may not look like it, but the children engaged in these exercises are learning computer science. Why Can't Programmers.. Program? What It Really Takes to Be a Professional Programmer. The 7 Rules for Writing Software That Won’t Die When You Do. Online Learning: A Bachelor's Level Computer Science Program Curriculum (Updated) In Education. Five Best Programming Languages for First-Time Learners. Larry Wall: 5 Programming Languages Everyone Should Know. The Best Programming Language For You to Learn.

4 Ways to Pick Your First Programming Language. How I Taught Myself to Code in Eight Weeks. 6 Things You Need to Learn To Build Your Own Prototype. A concrete approach to learning how to program. Why Learning to Code is So Damn Hard. 8 barriers to overcome when learning to code. Teach Yourself a New Programming Language in 21 Minutes (Or 2-3 Years, It Depends) Teach Yourself Programming in Ten Years. The Perils of JavaSchools. Revenge of the Nerds. The Downfall of Imperative Programming. What is Object Oriented Programming (OOP)? - A Basic Explanation. Introduction to Object Oriented Programming Concepts (OOP) and More.