tags:

views:

412

answers:

18

Given the recent and continued chaos with grounded flights and folks stuck in airports, and what not, I'm wondering if anyone has any suggestions for activities that would help sharpen and develop a progammer's mind.

The constraints are:

  1. Laptop is out of battery and there are no free sockets.
  2. You're bored of the book you're reading or you have none with you.

Reasonable resources such as a pen and pad of paper are available. Rules can be bent within reason.

As daft examples, things I have thought about are:

  1. How I might optimise the boarding of a plane.
  2. How I might improve the UI of a departure board.
+2  A: 

Listen to programming related podcasts on your fully powered ipod or mobile device.

Bermo
That's cheating! ;-)
Joachim Sauer
+1  A: 

Depends on what "programming skills" means ;), for example I like solving algorithm problems. You can try to solve a problem without actually coding the solution, it can be still quite challenging. For some good problems you can look at for example at

http://acm.tju.edu.cn/toj/problem.html

or many other pages.

Bus
+7  A: 

If you've got pen and paper, dive into a nice math or geometry problem.

For some things to think about check out mathpuzzle.com

phkahler
using which laptop?
Tobias Kienzler
@Tobias - same one he's reading SO with. Oh, in the future one should always have some interesting unsolved problems in their brain.
phkahler
+5  A: 

When I was a child it was very hard for me to get a hold of proper reading material about programming. Uninterrupted time at my fathers 486 was also in short supply. What you learn in such conditions is to think everything through before you write it. Unfortunately you can also develop a lot of bad habits if you never have access to good books.

Writing programs on paper has taught me a lot. You can start by thinking the algorithm through, writing pseudo-code and then real code. Finally, you can simulate the algorithm on small inputs by hand. The goal is to write a program which does not have to be changed at all when you type it into a computer.

Jørgen Fogh
When I was 13, at summer camp, I programmed my own snake like game in QBasic on paper, was so proud when I got home and it all worked.
Moak
@Moak: That's quite impressive. I would usually only write small parts of programs without trying them on the computer.
Jørgen Fogh
+1  A: 

Devise a booking site dedicated to finding alternative means of travel when the next volcano erupts. Buses, carshares, trains, rental cars, smugglers' boats, you name it. Create an UI for it and the first cornerstones of a database/MVC structure. Can be easily done on paper.

Pekka
+4  A: 

It isn't something that I do intentionally, but I often find myself analyzing real-world processes that usually involve little or no IT.

I usually ask myself questions like these:

  • what is being done?
  • why is each step done as it is?
  • can steps be optimized/removed? is each step necessary?
  • why is each step necessary?
  • how many failure points are there in this process?
  • how much worse would this be if (more) IT would be involved?

Usually that happens when I wait for said processes to finish.

Joachim Sauer
+2  A: 

Create a simple programming language, but only use key words from a movie of your choice. It could be quite funny. Maybe only funny for you though, since it'd be some kind of warped idioglossia.

Cameron
+1  A: 

Generate rows 0..15 of Pascal's triangle on pen and paper. Skip row 13 (get it?).

Hint: it's actually pretty easy to generate a row without having generated the previous row. Work the math.

Fun AND educational.

polygenelubricants
+2  A: 

Check out Project Euler http://projecteuler.net. It has some fantastic mathematical/programming challenges most of which you have to figure out how to solve on paper first.

Nicolas
A: 

Imagine you're an x86 and go wild.

stusmith
+2  A: 

Do some logic problems.

Or observe user interfaces in the wild.

  • Is there a better way to flush a toilet that's the relatively the same cost to implement, but would encourage people to use it every time? Is there a better way for an electronic sensor to automatically flush a toilet?
  • Is there a way to design an automated walkway so that people stand on the right, and always walk on the left?
Dean J
+1  A: 

If you mean "only coding", try to think step by step...

If you mean software architecture, than read books about it or take pen and paper to draw your architecture and criticaly review on it.

poeschlorn
+1  A: 

When I travel I usually pick up a logic puzzles book, you can get them at any place that sells magazines. It's not programming per-se but the logic puzzles keep the brain fresh. I also find it fun to write my own logic puzzles.

-Jay

Jay
A: 

Try thinking of interview questions you'd ask a recent college grad-then make sure you can answer them yourself...sometimes it's good to remind yourself how you'd reverse a linked list and put it down in pseudocode.

ForeignCat
A: 

Try remembering some basic algorithms (for instance binary search and quicksort), and write them down in pseudocode (or real code). Then, when you get your laptop, see if they work. Good practice for reasoning about code correctness before testing.

eman
A: 

Here's an approach that's orthogonal to the others presented so far:

The mind is not independent of the body. I always do my best work when I'm feeling well, and I've heard the same from most of my friends.

If you have time where you know you won't have a computer, bring a yoga mat and do some stretching or meditation. You might be surprised how much this helps your programming.

Ken
A: 

If I am free and don't have computer then I start thinking that what should I develop a project that attract the people. If I get an idea then I start designing database on paper.

NAVEED
A: 

Expense the client for a second battery and then (after you get possession of second battery) say "Oh, I found the old one! ". Or get a solar battery charger.

user279521