One of students on the FIRST robotics team I mentor asked “what do you think is the most important skill or trait in becoming a successful computer programmer?”. I wrote a paragraph about persistence, problem solving and attention to detail commenting I’d choose problem solving if I could only pick one. I also immediately thought this would make a good blog post. So expanding on my top three and also commenting on how these are all important even as AI does more of the coding.
Persistence
Persistence because it feels like you are an hour from being done for days if work. Often when something doesn’t work, there are many possible causes. You have to do experiments to rule causes in or out. Getting frustrated is stressful and doesn’t result in the problem getting solved. Persistence lets you keep plugging away at it. This is especially important when there is a tight timeline or a production system is down. You know you have to get it done quickly even if it feels like you have no idea how close you are.
AI impact: Not taking the first answer to a question or the first code that gets created is a form of persistence. Adding details and trying new things to get what you want still matters. Similarly, I’ve gotten AI to give me leads I might not have thought of by using a variety of prompts.
Problem Solving
Problem solving because that’s essentially what we are doing. Getting a computer to do what we want. Taking a bigger problem, identifying smaller ones, coming up with alternatives on how to solve it – all of these require problem solving ability. I’ve often said that I enjoy doing software development because we get paid to solve problems and do puzzles. While they aren’t called puzzles, once you identify the constraints and rules, getting a solution that fits in them feels a lot like a puzzle.
It doesn’t have to be programming either. I am volunteer coordinator for the NYC FIRST Robotics Competition. Making as many people in their volunteer assignments is an interesting puzzle I get to do every year. I’ve used that skill a few times at work when creating teams for team building activities – creating rules to maximize networking while keeping the teams balanced according to a variety of factors.
AI impact: As you advance in your career, problem solving becomes more important. When you start out, the problems are smaller and tasks come with clearer instructions. I think AI makes problem solving a larger portion of the job earlier in one’s career. You spend less time on syntax and more time in specifying what you want and figuring out why it doesn’t work.
Attention to Detail
Attention to detail because getting one line of code or one setting wrong makes the entire thing go klaput. Whether it is reading an APIs documentation or identifying small differences or thinking of every edge case, attention detail is a key skill. Last week, I was in a rush and trying to figure out why my unit test was working on my machine but not on the build server. I suspected a typo but was tired and didn’t see it. I was also too worn out to think of case sensitivity. (If i had, I’d have done a text compare). Instead, I asked a teammate who is the most detail oriented person on the team. I wasn’t even done explaining what was wrong when he said “does the case matter.” Yup!
AI impact: In the past people used books and reference sheets. Then search engines. Now AI. With all of these, you have to deal with situations where noticing small differences can make a huge difference in your productivity.
What does ChatGPT “think”?
After writing this, I asked ChatGPT to see how my answer as an experience professional compares. ChatGPT noted the most important skills for a beginning/early career programmer are ones to help learn, build confidence and develop good habits early. ChatGPT then identified seven.
The top three were the same as the ones I picked. After that were curiosity/willingness to learn, basic technical foundations, communication/help seeking and enjoyment/playfullness.
I agree with these. I didn’t put technology in my answer because the language you learn isn’t the important thing. Technology changes quickly. I do agree that the foundations matter because it enables you to work with any technology.
Interestingly two of the items showed up in my explanations of other items showing I clearly think they are important: help seeking (asking my teammate about the casing issue) and enjoyment/playfulness (we get paid to solve problems/puzzles)