Reputation: 96897
I tend to finish my work related tasks pretty quickly, and I get to have some free time on my hands. What should I write in order to become a better developer ? I'm familiar with c++/java/perl/python/ruby.
I wrote the following stuff on my own:
I would like some suggestions about some software that would be both challenging and fun to write.
Upvotes: 6
Views: 809
Reputation: 151
Writing more code doesn't magically make you a better developer. Some suggestions I have are:
Learn to write better code. What do you know about design patterns, refactoring, unit/automated testing and continuous integration, for example?
Learn about software engineering. Do you know Scrum, Lean, XP and other agile practices? What about use cases and user stories, and project estimation and management? Managing (and choosing) a team is a whole other skill too. Do you want that to be part of your future?
Learn to talk to users (an essential part of Agile techniques, actually). Your customers are almost always wrong about what they need. How do you cross the divide between what they think/say they want, and what they actually need you to build for them? There's usually a communications problem in both directions :-)
UI design. This is a lot tougher than lining text boxes up and setting the tab order. This is a difficult discipline to master for most of us, and has branches for fat clients, web apps, small devices (phones, PDAs etc) and so on.
I'm sure others can think of things I've forgotten, but my point is that writing code is not all we do as developers. A lot of the time, writing code is the least that we do.
Upvotes: 1
Reputation: 9163
You've already got a lot of great responses to your question, but I feel there's a suggestion that has been missed: Learn AS3/Flex!
My background is quite similar to yours, but I recently learned AS3 for a project, and have loved it thus far. It has the same 'feeling' as other languages that you've worked in (e.g. Java), but it allows for powerful visual/aural applications without the bloat of an annoying framework. AS3/Flex have both been through several iterations of fine-tuning and lend themselves well to fairly rapid development.
Another reason to learn AS3/Flex is that it seems like you have interest in technologies that either run standalone, or as the server in a networked environment. Experimenting with AS3/Flex might give you a chance to play with the client side of the client/server duo.
Anyway, have fun! :)
Upvotes: 2
Reputation: 487
Pick up any open source application that needs help with component, enhancement or for bug fixing. Your skill can make difference in open source world. Other than that i suggest you to use your skills for developing these :
Upvotes: 4
Reputation: 9040
A book. A tutorial. Anything that teaches. Teaching is a great way to learn.
Trying to explain new concepts to people typically forces you to go into more depth than you would normally go. That act of trying to turn your knowledge into a set of cohesive sentences reinforces it in your own mind and reveals any weaknesses or gaps you may have.
And you can always learn something from your students or readers.
Upvotes: 2
Reputation: 406
You don't seem to have done much graphics. How about a game as already suggested, a 2D simple physics/shooting such as asteroids game is fairly easy to start off with and fun to test.
Even better and probably more useful how about an image editor?
Upvotes: 1
Reputation: 19769
you could go for implementing a version control system of your own...
It will require a lot of coding and cover different aspects like algorithms,protocols, os etc..
But it is always better to contribute to opensource projects than coding something which is already built
you can also try developing an expert system that uses AI to do some interesting stuff :)
Upvotes: 1
Reputation: 23623
I've found that rewriting a prior project in a radically different environment is a great way to learn about both the new and old environments.
Back in school I wrote a baccarat game in C (we had to pick a card game and I wanted to pick one I never played). The next year I rewrote it in scheme. And then smalltalk the following year.
In both cases, I walked away greater understanding of C.
Upvotes: 1
Reputation: 37133
G'day,
What abut start writing some fragments for reuse in other pieces of software? That way you can:
Off the top of my head, some of the things I'm thinking of are things like:
All of which, if you had them already written, would make your turnaround time on other projects where you'd used them much faster. The functionality would also be consistent across multiple projects.
HTH
cheers,
Upvotes: 1
Reputation: 36987
A game, probably a simple one like Pacman or SpaceInvaders. It's not only fun, but you will also enter a completely new realm.
Upvotes: 3
Reputation: 1873
Write a binary search tree and implement insertion, deletion, search, etc. When that's done write a splay tree. If that's not to your liking, pick something out of Introduction to Algorithms and write that instead.
Upvotes: 2
Reputation: 5456
Participate in an open source project which helps you to learn about some software development practices like using version control system and bug tracking system.
Write an AI game such as checkers which I think is pretty challenging and fun.
Upvotes: 2
Reputation: 6177
Something with actual users involved. As funny as it may sound, in my perspective it's a totally different story, if others are using your work and depend on it!
Upvotes: 8
Reputation:
I agree with the compiler idea. That would a challenging and fun project. Pick a language that's easy enough. Maybe even design your own :)
Upvotes: 1
Reputation: 37905
Something that relies on knowledge you don't currently possess, which means you will have to educate yourself in the process of creating it.
Upvotes: 6
Reputation: 4810
I would identify a real problem and create a solution for it. It could be an algorithm or a complete project: web project or client application.
The important thing is that you solve real problems.
That's what programming is all about.
Upvotes: 3
Reputation: 135111
what about a code generator, this will also be of use for you after you are done
Upvotes: 4