Sunday, June 8, 2014

An Ever-Rising Tide

On a lark, I sat down today and started putting together a small application using a newly downloaded Visual Studio 2013. It has been a couple of years now since I used C# regularly for work, and even then I didn't do much user interface work. After several hours of playing around, I have encountered a new syntax construction or two (lambdas and anonymous functions), a new threading model, and of course a new UI framework. Needless to say I didn't get very far with the actual application.

I can see why the changes have been made. Anonymous functions are a quicker way to work with simple functions and function composition. The new threading model (in theory) simplifies how multiple execution paths are handled. And Windows Presentation Foundation brings a new method of creating user interfaces that is (again, in theory) simpler and provides wider platform support than WinForms. And yet, had I used the older ways, which are still available, I would have gotten much farther along the path of actually creating something that worked.

Of course, that wasn't really the point. My real purpose in diving into the new libraries was to uncover exactly the kinds of things I found. Keeping up with the ideas in programming is possible, but the ideas do not get you anywhere. Just like with products, it's the implementation that counts. Microsoft had tablet computers for years before Apple created an iPad, for example. And yet, there is no best implementation, one has to experiment to find out what works and what does not. Every attempt gives you more information, informing the next attempt, even those that lead off into the weeds.

But boy can the process be wearying. Every language has it's own way of doing things. Every library its own interface. Every code base its conventions. And they are always changing. And yet, those changes bring new viewpoints, new functionality, and new ideas with them. Without that there would not have been the amazing rate of change in the actual things the technology enables. As a programmer, I struggle to keep up with even the big picture of the constantly accruing knowledge in the field. I wonder what it will mean for my career as the years roll on. I question whether it is even worth all the bother and stress. But as someone who wants to see technology improve all our futures, I know the pace of change is the price that must be paid to continue the remarkable improvements in what software is capable of.

No comments: