So, I recently got a question from an individual participating in #100daysofcode on Twitter. I follow this hashtag to cheer on newer developers and support their efforts.
The question went like this ...
(What) do you think can help me think like a programmer apart from (working on various examples over time)?
I had to take some time and gather my thoughts. This isn't an easy question.
First, I started as a programmer when I was 10-years-old; no college education at that time. I did get a Bachelor of Science, Computer Science (CS) later in life. The Internet didn't exist when I graduated so I guess I am a self-taught frontend developer.
I have worked on small and large teams, developing internal one-off applications and enterprise-level customer-facing applications.
I have used Waterfall, Kanban, Scrum and Agile. Some of these teams had loose requirements, others had to go strictly by the books.
Let me start by saying that self-taught programmers can learn these things. There are excellent books, college courses online, and other online resources and communities to learn from.
However, they do not have the benefit of being as structured, or in many cases as in-depth as actually going to college for a CS degree so there is much more self-directed learning that need to occur.
A large part of what I got out of college was communication. I still remember learning about the various techniques that teams would use and these skills have been invaluable over the years.
On teams today, forty to sixty percent of my day is in meetings:
The job is almost half communication.
Let’s address the original question!
They need to ...
Part of this process includes Refactoring.
Communication is also a learned skill. This is not simply being open and able to carry a conversation. This communication includes:
Working with "customers" to determine their needs.
Working with designers and developers (on the team, or otherwise) to refine needs and plan the development process.
Working with Quality Assurance to assist them in testing the application.
Presenting work in meetings (Review or Knowledge Transfers).
Working with Senior or Junior Developers.
Participating in Code Reviews and Pull Requests.
Reaching out to teammates when stuck on an issue.
Communication can also include things like ...
Most developers know that StackOverflow can be a great resource when you are stuck on an issue.
This comes down to ...
Taking breaks in this sense is not just about getting lunch or a 15-minute break every hour. What I am talking about here is knowing when you are so deep into a problem that you can't see your way out. A break is often needed to get away from the code ... to let your subconscious work on the issue.
The original question was ...
(What) do you think can help me think like a programmer apart from (working on various examples over time)?
Here are the core areas I feel are important to get that "programmer brain."