Ten years ago, when I learned programming, there was this one place to hang out. If you wanted to learn best practices, get latest news and meet the people, you went to the wiki. Everyone gathered there and exchanged their knowledge. A great place for learning.
Today, the internet is different. The original wiki is abandoned, and everyone—even my nice and my grandmother—knows the wiki, the other wiki. Not that I dislike Wikipedia, but is not the premium place for learning how to programming.
Today, you need an RSS reader to get to the source. There are few things more valuable than a well selected choice of news feeds. I always keep my blog roll at a size that there are about 300–400 new posts each morning. With the space bar, I can quickly skim through the headlines and open those dozen of post for further reading, that catch my interest. The news reader has became what the wiki’s recent changes page used to be.
Good starting point is for example progit.
To raise your voice and take part in discussions, best get your own blog. Commenting is nice, but real discussion only starts when answering post with post. Blogging is also the best exercise in writing, which is—that might surprise you—one of the most important skills as a software developer.
Also, this will be good exercise for the Bachelor’s and later Master’s thesis. I have seen too many students, including me, that failed writing their thesis in time. Often students postpone their work for months if not years … usegstüdelet … just to avoid writing.
Hoping to receive your pingbacks soon!
All the best,
Adrian
akuhn P2, Read this!
It was no less than Adele Goldberg, one of the invetors of Smalltalk, who said that any computer science library should contain a selection of science-fiction books. As computer scientists we should know what the visions of our field are. We should know what we are striving for. We should know which dreams of mankind we are about to realize. And these visions are written down in science-fictions.
This is, by the way, the same for physics and other science. Studies have shown that the Star Trek series had an impact on career choices in science, and on todays technology in general.
akuhn Read this!
I just stumbled upon this nice matrix of programmer competence by Sijin Joseph.
The matrix ranks a programmer’s skills by topic. I am in most topics somewhere between the 2nd level and 3rd level. Where are you currently? Where do you plan to be at the end of your studies? Can you get there by just doing the exercises? If you can answer the last question with yes, maybe your goals are set to low.
NB: Personally, I would extend this matrix with an “Entrepreneurship” section. It is my sincere belief that any programmer should know how to found and run his own company. A start-up company that scales up to the internet. There is not reason why monetizing our work should be left to business men…
akuhn Geek, Hack, Read this!
While programs have a main flow, some situations require deviations from the
main flow. The guard clause is a way to express simple and local exceptional
situations with purely local consequences. Compare the following:
void initialize() {
if (!isInitialized()) {
...
}
}
with:
void initialize() {
if (!isInitialized()) return;
...
}
When I read the first version, I make a note to look for an else clause while I
am reading the then clause. I mentally put the condition on a stack. All of this is
a distraction while I am reading the body of the then clause. The first two lines
of the second version simply give me a fact to note: the receiver hasn’t been
initialized.
If-then-else expresses alternative, equally important control flows. Guard
clause is appropriate for expressing a different situation, one in which one of
the control flows is more important than the other.
(via Sample chapter of Kent’s book, Implementation Patterns)
akuhn Java, Patterns, Read this!, Readability
Open Source is software where the sources are delivered together with the software itself. Imagine you could go and read the sources of your favorite games, web browser or operating system! You could go, read the sources and learn how things are done. You could even go and change the software yourself, for example by removing annoying bugs or by adding new extensions.
It can be done (unless you are locked up in a Windows or Apple nightmare) with Linux, Firefox, and other free software.
Joining an Open Source project is a great opportunity to not only improve your coding skills but also to make yourself a name. The drawback is typically that you dont get payed for your hard work …
… unless you participate in Google Summer of Code. Each summer, Google sponsors students (such as you and you and you) to participate in Open Source project.
Goto Google Summer of Code 2009.
akuhn Read this!

The book that started it all. The original design patterns catalog. Commonly known as the Gang of Four (GoF) book.
Available here (Univ of Bern access only).
akuhn Patterns, Read this!
An incomplete list of links regarding unit testing. Note, some of these links go beyond the subject of P2 and are thus provided in addition to the lecture.
And for those among you that use PHP, another two links
akuhn Read this!
JExample has been implemented by Lea as her Bachelor’s thesis.
admin Java, Read this!