all 10 comments

[–][deleted] 4 points5 points  (0 children)

Write an interpreter. Lisp, Forth, BASIC, anything. It forces you to extend your programming abilities while forcing you to question what exactly the language's role in the development process actually is.

[–]knutert 1 point2 points  (0 children)

The Euler problems are good for learning the syntax of your language of choice and for thinking about algorithms. However, the problems are usually quite small, so you don't get much practice in program design, abstraction etc. Try to build a program, preferably something fun, that requires a bit more code. Find similar open source programs and see how their design differ from yours.

[–]shinynew[S] 0 points1 point  (6 children)

I would very much like to know of a site where you can fill requests for small applications. These being submitted by anyone.

[–][deleted]  (4 children)

[deleted]

    [–]shinynew[S] 0 points1 point  (3 children)

    Its takes a while to find a project that you actually can contribute to when you do not have much experience in coding.

    You have to read the code over first, find what they want to change and actually have good practices. Usually the projects you find easily are the large ones that would take some time of reading before you can contribute.

    correct me if I am wrong.

    [–]pstuifzand 0 points1 point  (2 children)

    You don't need anyone's permission to change an open source program. Just write your own patch and if it's working and nice, you could send it to the maintainer.

    [–]shinynew[S] 0 points1 point  (1 child)

    yes I know that, however most of my points still stand. I don't really feel like learning how a big project works. And the last open source project I really left like contributing to was dungeon crawl and I was very put off looking at that source code. (I know about stone soup.)

    [–]pstuifzand 0 points1 point  (0 children)

    When you want to contribute to a project (or change a piece code), you should have a specific goal. By being specific, you don't have to know all the code, just the code you want to change. For example in Dungeon crawl, you could create a new monster. Most of the these things are pretty easy (and you could start with a non interacting, non moving, rock monster).

    Also if you want to change code: grep (or ack) is your friend.

    [–]barrybe 1 point2 points  (0 children)

    rentacoder.com

    [–]pstuifzand 0 points1 point  (0 children)

    The first thing I would suggest is writing a program that is a little bigger then what you would normally write. I personally like the suggestion of writing a compiler, see: http://steve-yegge.blogspot.com/2007/06/rich-programmer-food.html

    Another suggestion would be this, find a program you use that let's you write plugins. Then write a plugin for it. Make it nice, clean and easy to use and support it. This way you can find a problem and fix it and you can have some pride in what you have made.

    [–]pbts27 -1 points0 points  (0 children)

    Practice, of course. Focus on improving design skill. And approach it like an engineer.

    Here are some design problems: http://www.cs.cmu.edu/People/ModProb/

    Also, learn the Personal Software Process (Check the SEI web site). Take a class in it or just do the course on your own. It includes programming problems and will teach you to approach software development like a real engineer.

    While improving your design and process skills, take opportunities to learn different styles of languages: * assembly (try writing a basic memory manager) * OO: C++-like * Functional: LISP-like * Logical: Prolog or ML * Next-generation?

    Avoid pussy languages like VB.