So I'm currently learning. Here's my setup. The top window is my running execution context. In Lisp we don't have to recompile between edits. We can write a function in the file buffer (bottom half) and do a key combo to (re-)evaluate the definition and clobber the old one. So, for me, programming is building small functions, evaluating them into the upper half, using them in higher-order functions, rinse/wash/repeat.
This code is taken from Land of Lisp, a book i'm working through that is far from perfect, but better than many (as a C person you know that vibe).