8

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?

  • 3
    Most software projects are not rewritten, and none are ever perfect or finished unless they are decommissioned. The most likely outcome is that you move on to some new project and provide maintenance fixes on the original project. – Robert Harvey Sep 21 '16 at 14:18
  • 4
    @gnat This question clearly fits into our notional image of the site scope. This is a "disposition" or "post-mortem" activity. – Thomas Owens Sep 21 '16 at 14:30
  • 1
    @ThomasOwens per my reading, the problem here is not topicality (it fits here by topic) but lack of the answerable question. "What to do..." – gnat Sep 21 '16 at 14:32
  • 2
    @gnat It's asking for a process or methodology. I'm reading this as asking for a post-mortem process for a single developer. All of my experiences have been in a team, so I can't really provide a useful answer. – Thomas Owens Sep 21 '16 at 14:35
  • 3
    @ThomasOwens: This is a bit broad. Normally we require questions to be a bit more specific than "do you have any tips for me?" – Robert Harvey Sep 21 '16 at 16:13
1

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?"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.