Geo
Geo

Reputation: 96897

What should I write in order to become a better developer?

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

Answers (19)

Jim Cooper
Jim Cooper

Reputation: 151

Writing more code doesn't magically make you a better developer. Some suggestions I have are:

  1. Learn to write better code. What do you know about design patterns, refactoring, unit/automated testing and continuous integration, for example?

  2. 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?

  3. 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 :-)

  4. 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

rinogo
rinogo

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

Mahesh
Mahesh

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 :

  1. IDE for Game development(as you're already familiar with IDE developement)
  2. Improve existing libraries
  3. Develop emulator/Virtual machine software
  4. Develop folder and drive protection software (or better encryption related software)

Upvotes: 4

Terry Wilcox
Terry Wilcox

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

Captain Lepton
Captain Lepton

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

sud03r
sud03r

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

sal
sal

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

ignorantslut
ignorantslut

Reputation: 467

Contribute to an open source project

edit: start here

Upvotes: 9

Rob Wells
Rob Wells

Reputation: 37133

G'day,

What abut start writing some fragments for reuse in other pieces of software? That way you can:

  • optimise the particular pieces of functionality by revisting them every now and then,
  • not have to re-invent the wheel everytime you need to have this functionality incorporated into your main pieces of software,
  • start spreading them around and make a bit of a name for yourself.

Off the top of my head, some of the things I'm thinking of are things like:

  • logging
  • reading config from a file
  • setting up a common environment

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

Erich Kitzmueller
Erich Kitzmueller

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

BenB
BenB

Reputation: 10630

A compiler.

Edit: Or an emulator. Both very challenging.

Upvotes: 11

Andrew
Andrew

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

David
David

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

merkuro
merkuro

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

Sergey
Sergey

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

TheTXI
TheTXI

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

Nelson Reis
Nelson Reis

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

SQLMenace
SQLMenace

Reputation: 135111

what about a code generator, this will also be of use for you after you are done

Upvotes: 4

Macarse
Macarse

Reputation: 93163

Something in a distributed environment.

Upvotes: 3

Related Questions