Is most of the time spent learning or working as a programmer devoted to reading code, documentation, books, and specifications? I've heard that beginners should type examples themselves to build muscle memory, while professional programmers can use AI tools to work more efficiently. I understand the argument for avoiding AI while learning, but I'm less convinced that manually typing every code example is always worthwhile. Reading seems faster and may let me absorb more information from documentation. How important is hands-on typing compared with reading, experimenting, debugging, and thinking through problems?
4 Answers
Typing is not valuable because fast typing makes someone a good programmer. It is valuable because active practice reinforces what you read. Beginners should spend less time copying large snippets and more time writing small programs, changing the requirements, and debugging unexpected behavior. Once the basics are comfortable, looking up syntax or generating boilerplate is perfectly normal; the important skill is knowing what should be written and how to validate it.
AI can be useful as a tutor or assistant, but accepting generated code without understanding it will mostly teach you how to request code. A good learning workflow is to try the problem yourself first, consult documentation, use AI when you are stuck, then explain, test, and modify the result. You do not need to type every character forever, but you should personally implement enough projects that the concepts become familiar.
On a real project, there is a lot of reading: source code, requirements, documentation, tests, error messages, and code reviews. There are also meetings and plenty of time spent planning before a line is written. Still, the job is not just reading. You need enough hands-on practice to develop the ability to turn a requirement into working code, investigate failures, and maintain what you wrote.
Exactly. Reading existing code is a major part of maintaining software, but creating or changing it still requires implementation and debugging. The balance depends heavily on the role and the project.
Programming is usually more about thinking than either reading or typing. You have to understand the problem, choose an approach, fit it into an existing system, and verify that the result is correct. Typing examples yourself can help you become familiar with syntax and notice details you might skip when reading, but copying code mechanically is not the same as learning. Write things, change them, break them, and debug them so you know what they actually do.
Reading helps me understand how code is organized, but I retain it much better when I recreate the idea and experiment with variations. Otherwise it’s easy to overlook a small assumption and make the wrong change later.

Using AI to explain an error or compare approaches is very different from pasting a complete solution and moving on. The learning comes from checking whether the answer is correct and seeing what changes when you experiment.