In the highschool programming was interesting. We learned linked lists, backtracking, and other algorithms. I made little programs with rotating things in Turbo Pascal (i.e. planets moving on a leaned ellipse path), tried to imitate GUIs (start menu, windows), made a snake game.
At the university we learned other algorithms and design patterns. It was also interesting.
But all the above had too little to do with what a programming job is about. Programming for a living mostly means arranging list views in tabs and showing data gotten from some server. It's hard because of lacking a real spec (not just screenshots, but actually knowing what the program should do in the background), not being able to test it (i.e. no access to the server from which the data is gotten), no up-front design (not defining the api between the layers; not assigning features clearly to developers), a technology switch every year, complicated UIs; not because of the algorithms involved. All this is the same in every program. And after doing this, you start to ask what the heck are you doing. Where's the fun in coloring and arranging list boxes and buttons, and filling them from a database table or from a service? Why were computers invented, if they don't compute anything, just show the contents of some tables, in a zillion ways (each program in its own way)?