Smooth Transition from Block-based Programming to Real-World Software Design