I have been working as a software developer for ten years now. I was happy working in my past company for four years, but the dark side is that I had three projects dead at the very end of the job because the user reported that they were happy with the old system and didn't like the new system, which imposes more restrictions and has an inferior UI...
Then I moved to a new company but was fired after two months because they complained that I had just directly copied the logic from the old system being migrated, without studying the physical mechanism, and the meaning of the program, behind it.
After three months of unemployment, I have found a new job and I really fear to repeat those mistakes. Therefore, I am asking for suggestions and books that can help improve my problem analyst skills.