Teach Yourself Programming in Ten Years
This essay by Peter Norvig is dated back to 2001. But even now it’s worth reading.
Here’s his recipe for programming success:
- Get interested in programming, and do some because it is fun. Make sure that it keeps being enough fun so that you will be willing to put in ten years.
- Talk to other programmers; read other programs. This is more important than any book or training course.
- Program. The best kind of learning is learning by doing. To put it more technically, “the maximal level of performance for individuals in a given domain is not attained automatically as a function of extended experience, but the level of performance can be increased even by highly experienced individuals as a result of deliberate efforts to improve.” (p. 366) and “the most effective learning requires a well-defined task with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors.” (p. 20-21) The book Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life is an interesting reference for this viewpoint.
- If you want, put in four years at a college (or more at a graduate school). This will give you access to some jobs that require credentials, and it will give you a deeper understanding of the field, but if you don’t enjoy school, you can (with some dedication) get similar experience on the job. In any case, book learning alone won’t be enough. “Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter” says Eric Raymond, author of The New Hacker’s Dictionary. One of the best programmers I ever hired had only a High School degree; he’s produced a lot of great software, has his own news group, and made enough in stock options to buy his own nightclub.
- Work on projects with other programmers. Be the best programmer on some projects; be the worst on some others. When you’re the best, you get to test your abilities to lead a project, and to inspire others with your vision. When you’re the worst, you learn what the masters do, and you learn what they don’t like to do (because they make you do it for them).
- Work on projects after other programmers. Be involved in understanding a program written by someone else. See what it takes to understand and fix it when the original programmers are not around. Think about how to design your programs to make it easier for those who will maintain it after you.
- Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).
- Remember that there is a “computer” in “computer science”. Know how long it takes your computer to execute an instruction, fetch a word from memory (with and without a cache miss), read consecutive words from disk, and seek to a new location on disk. (Answers here.)
- Get involved in a language standardization effort. It could be the ANSI C++ committee, or it could be deciding if your local coding style will have 2 or 4 space indentation levels. Either way, you learn about what other people like in a language, how deeply they feel so, and perhaps even a little about why they feel so.
- Have the good sense to get off the language standardization effort as quickly as possible.
Read the full essay at http://norvig.com/21-days.html
–Happy Reading
Nubie
TiddlyWiki: A collaboration tool ??
Previous day, I was trying experimenting with TiddlyWiki, a great invention by Jeremy Ruston.
As they said, it is really a reusable non-linear personal notebook.
The advantage is that, we don’t need a database to keep information. TiddlyWiki is a single html page that grows with content. No need of setup. Save the page and use it.
As we are more focused on collaboration these days, TiddlyWiki can be used as tool for this.
Happy Programming
Nubie
Is Programming Art?
Read the O’Reilly article on “Art and Computer Programming” by John Litter.
Read the original article on http://www.onlamp.com/pub/a/onlamp/2005/06/30/artofprog.html
Excerpt from the article:
My goal here is to discover whether programming is art and whether there’s anything useful to discover by regarding it as an art. Can the concept get us out of tight corners or resolve issues? Can it help to produce killer apps?
My goal is also to find out what some accomplished programmers think. To do this, I sent out the following email:
I’m putting together an article for O’Reilly on the subject “art in programming” which was prompted by Donald Knuth’s three volume set in which “art” is pretty much defined as craft … which is pretty much not the modern definition of the word for a lot of people.
Anyway, I’m going to ask a few developers about the concept and am after short statements relating to whether it can be or is art, whether it is helpful to think that it is, and whether, in certain circumstances, thinking about it in that way (non-linearly) can be conducive to problem-solving and possible genius solutions!
OK, this does invite a skewed response, but my defense is that the people I contacted are all quite capable of recognizing a red herring when they see one. You’ll see.
Happy Reading,
Nubie
Fatherly Advice To New Programmers
Read the Fatherly advice to new programmers by Chuck Jazdzewski in his blog
…Removing All Doubt. It’s a good read for all nubies.
I like the quote that he wrote on his site that:
It is better to be silent and thought a fool, than to speak and remove all doubt.” — Silvan Engel
….Still he is removing all doubts??
Just kidding..It’s always better to share ideas for the better..
-Guru
If Loving Computers is Wrong, I Don’t Want to Be Right: Coding Horror Blog
I always love the “Recommended reading section” of Coding Horror Blog.
Read his blog: If Loving Computers is Wrong, I Don’t Want to Be Right about two good books that he says love letters to computer.
I have already read “Secret guide to computers” and I really love it. Hope to read the second book soon.
–Happy reading
Professionalism for software engineers
Philip Greenspun in 2000 defined software engineering professionalism as:
The new definition:
We define software engineering professionalism with the following objectives:
- a professional programmer picks a worthwhile problem to attack; we are engineers, not scientists, and therefore should attempt solutions that will solve real user problems
- a professional programmer has a dedication to the end-user experience; most computer applications built these days are Web applications built by small teams and hence it is now possible for an individual programmer to ensure that end users aren’t confused or frustrated (in the case of a programmer working on a tool for other programmers, the goal is defined to be “dedication to ease of use by the recipient programmer”)
- a professional programmer does high quality work; we preserve the dedication to good system design, maintainability, and documentation, that constituted pride of craftsmanship
- a professional programmer innovates; information systems are not good enough, the users are entitled to better, and it is our job to build better systems
- a professional programmer teaches by example; open-source is the one true path for a professional software engineer
- a professional programmer teaches by documentation; writing is hard but the best software documentation has always been written by programmers who were willing to make an extra effort
- a professional programmer teaches face-to-face; we’ve not found a substitute for face-to-face interaction so a software engineering professional should teach fellow workers via code review, teach short overview lectures to large audiences, and help teach multi-week courses
Read the full article on Professionalism for Software Engineers
–Happy Reading
Developers are from Magrathea, Customers are from Ursa Minor Beta
Nothing more to say about than what he has written in his blog: GOJKO.NET :: WEB LOG OF GOJKO ADZIC.
– Happy reading
SQL Server Integration Service: How-To Series
My search to find good articles on SSIS ends in articles by Marcin Policht that introduce various elements of SQL Server Integration Services (SSIS).
Each article is short, concise, clear, and contains good examples and illustrations.
The artcles inlcudes Basic Concepts, Basic Examples, SSIS Package maintenance, SSIS Exception handling, Debugging and lot others.
SQL Server Integration Services – Part 1 (Basic Concepts)
SQL Server Integration Services – Part 2 (Basic Examples)
SQL Server Integration Services – Part 3 (Package Maintenance)
SQL Server Integration Services – Part 4 (Variables and Expressions)
SQL Server Integration Services – Part 5 (Foreach Containers)
SQL Server Integration Services – Part 6 (Foreach Containers Continued)
SQL Server Integration Services – Part 7 (Foreach Nodelist Container)
SQL Server Integration Services – Part 8 (Foreach Item Container)
SQL Server Integration Services – Part 9 (WMI Data Task)
SQL Server Integration Services – Part 10 (WMI Event Task)
SQL Server Integration Services – Part 11 (SSIS Events and Event Handlers)
SQL Server Integration Services – Part 12 (Logging)
SQL Server Integration Services – Part 13 (Debugging)
SQL Server Integration Services – Part 14 (Debugging Data Flow)
SQL Server Integration Services – Part 15 (Debugging Script Component)
SQL Server Integration Services – Part 16 (Data Flow Script Component)
SQL Server Integration Services – Part 17 (Script Transformation Component)
SQL Server 2005 Integration Services – Part 18 (Destination Script Component)
–Happy Programming
Creating a Custom 404 Error Page
Have you ever noticed that some sites give you a nice looking page when you mistype a URL, as opposed to one of those nasty 404 File Not Found errors. Would you like to add one of these pages to your site?
It’s really easy with IIS4 and above.
Read the article in 4 Guys from Rolla
–Happy Programming
Emails: Tips and Tricks
As Emails become the most useful and cheap communication mechanism, Information overload due to it will also increase.
Read 99 Email tips to make you more secure and productive at:
IT@Intel Blog is also have great articles on Information overload.
–Happy Reading, Nubie