That was the question raised (again) by the news of AppInventor. A visual environment to create applications for the Android.
When reading responses to a blog post I came across one that, I hope tongue in cheek, ranted about how to be a developer you need to type code.
The point is that to be a developer you need to write everything yourself, not taking from anybody else's code. Quite a funny response, but just in case someone takes it at face value, here is a summary of my thoughts:
If you are using a high level language then you are using someone else's libraries. Even if you are programming in assembler.
When coding is based on someone else's code snippets it is called progress.
Computer Programming is directing the computer to perform a task, whether you do it typing code or moving blocks is irrelevant.
A good programmer knows how to meet the requirements (make the program do what it is supposed to do), in an elegant way (Clean code that is easy to maintain) with the end user in mind (Eliminating barriers for the users to be productive) and in the most efficient manner (Using the resources judiciously).
Yes, someone will still need to write the low level code and libraries. Hopefully to be reused by other programmers that create the end user applications. The main difference between the two will be the area of expertise and who their end user is.