I have problems understanding the code quickly whenever I need to go back to it after some time.
That is normal, and it is why code should be written as simply as possible without sacrificing functionality, and why comments that describe why you wrote something the way you did are critically important.
I started about a month ago , without planning much , and now I am struggling to understand the logic.
You should plan enough to understand how the application is supposed to work. The details can be ironed out during development, but the overall vision should not change much. Planning is even important for conversions because the target language might have better ways of designing the code. The result will probably be completely different from the original even though they both do the same thing. A straight line by line conversion of VB6 to C# is not a good idea, if you get my drift. ;)
Today I had a talk with a user and things cleared up much more .
I always make sure that clients are involved in the development process from start to finish, both to keep myself informed about their needs and to keep them informed about what I am doing. That way things do not get too far off track and everybody understands the vision of the final product.
I don't feel confident in my programming abilities because I can't predict when I'll finish a project .
Nobody can predict …