Question

I have studied computer science and am now working in a company as a single developer on a pretty agile Java-project for almost a year. The project will soon be successfully (at least I hope so!) finished.

The core functionality ... is functioning and even some other stuff that was not in the start-requirements. I even have a lot of ideas for new features that are not necessary, but would help with the usability and functionality of the program.

Some parts of the program work very well, while other parts have code I am not very proud of...

Since the start of the project I have learned a lot and therefore know now how to theoretically write better code in those parts - which makes you realize the mistakes you did that you did not notice before!

The problem: There won't be much time after the project to do anything, re-writing from scratch is simply not possible. And re-writing only the bad parts would require to go deep into the core functionality -> takes a lot of time!

Are there methods / strategies how to learn from my mistakes and make the next project even better?

Is there anything else I should do after completing the project, but before I move on to the next one?

Was it helpful?

Solution

Good code like good science demonstrates its ability to work/do what it intends in a way that is approved by a group of your peers. If this app works, you're part of the way there, but you probably can't expose this code to the public and you're working alone.

Start a personal project. The sooner the better. This accomplishes a few things:

  1. Code is an excellent form of documentation for code. We learn from examples and although we can get more insights when discussing or documenting code, we still like the code.
  2. Get others to look at your code. Ask specific questions on Stackoverflow. Create or contribute to an open source project. Join a local developers group and get them to look at it.
  3. Practice Refactoring - Take a part of your project and mimic the way you did it in your previous project and then refactor it. Have source control to show the before an after. Again, code is important.
  4. Test your newfound coding knowledge. Build other parts in the way you now think you should do it. Does it work? Is it really better than the old way? What' s your criteria? Faster, easier to write, maintain?
  5. Add an extreme feature. Now we'll see if your code is really maintainable. Write parts of it for an RDBMS and a Nosql database. Build your web app to run in a command line as well. Create a log file that tracks every time someone doesn't shutdown the app properly (I said it was crazy.).

There's probably a lot of notes and other documentation you could put together, but any time you can accomplish things in code, do it. You get better at programming just like most things with practice and hopefully some measures for improvement. Peer reviews can help if you're getting better. If you have an app that gets exposed to a group of users who can provide feedback, even better. They won't know the details, but will recognize improvements in speed, better design and your ability to make changes/fixes faster. This doesn't have to be some extensive project. Just ask, "Is this better or not?"

Licensed under: CC-BY-SA with attribution
scroll top