More important skills/traits in becoming a computer programmer

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)

re the interview question “what did you do with your extra time during the pandemic”

I turned on the television and heard a sentence about expecting a question during an interview – “what did you do with your extra time during the pandemic”. I don’t know the context or if this is a common question. I certainly hope is isn’t!

Is this an illegal question?

I’m not a lawyer, so I don’t know. It feels dangerously close to illegal questions though. You aren’t allowed to ask someone at an interview if they have kids. And guess what group of people did not have extra time during the pandemic? People with young children.

Similarly, you aren’t allowed to ask if someone had COVID-19. Guess what other group of people did not have extra time during the pandemic? People with long haul COVID-19.

Is this an insensitive question?

Absolutely. Some people had less time during the pandemic. Some were upset. Some found it hard to concentrate. Some lost an immediate family member. Also, it’s none of your damn business.

Why are you asking in the first place?

I’ll assume you aren’t being nosy or trying to cleverly find out information that would be illegal to ask. And how does it help you find out that your prospective hire is now an expert in making sourdough bread. The only answer I can think of that is relevant to the job is what skills the person has learned that are RELEVANT to the job. In which case…

What could you ask instead to accomplish the same result?

“What is the last thing you learned about technology?” – this is an appropriate question to ask. I’ve asked it before the pandemic. This question doesn’t have assumptions in it about how recently you learned something. It doesn’t suggest something is wrong with you if you haven’t had time or energy during a pandemic to learn something new, you can still list something you learned in 2019.

What would be my answer

It’s hard to answer this hypothetically because it depends on how much one needs the job. Let’s assume I do and decided to answer the question in some form.

Side note: When I was interviewing for entry level jobs, I was asked “how would you handle being treated differently because you are female.” My answer was “why? is that a problem here?” (with some attitude in my tone.) I still got an offer. I declined.

“I finished writing the OCP 11 Practice Tests book with Scott, read some technical books, passed the AWS associate architect exam and served on the planning committee for the first ever JChampions conference.”

What is my honest answer

While my answer is factually true, none of that was what I did with my extra time for several reasons.

  • I would have done those things anyway.
  • I read less books in 2020 than in any of the past years I can remember. (I read tech books during my commute.) Trying to read at home, I get distracted. Most of the tech books I managed to read were when it was warm enough to sit outside.
  • I was unable to do my annual CodeRanch “JForum Day” feature for the first time in 11 years. I really wanted to do this. But I spent the finite amount of energy I had in the winter for coding/thinking on work. It wasn’t available for my extra time. So I objectively did and learned less in 2020 than in a normal year.
  • Studying for and taking the AWS exam was a mistake. I wasn’t able to retain information even in the short term. I cried numerous times trying to force myself to do so. I’ve already forgotten what I ‘learned’ and will have to re-learn it when things are better. I wish I had noticed what was going on earlier and stopped trying.
  • I spent most of my “extra time” trying to be physically and mentally ok.
  • All but one of the people I know who is comfortable physically getting together are two train rides (and over 90 minutes) away. This means it takes pretty much a whole weekend day to have any human interaction.
  • Having video/virtual contact is more tiring than real human contact. So the energy I put into trying to keep myself ok came out of my ability to do other things.

And none of this is bad. I believe expecting people to have learned and accomplished more during a pandemic is inconsiderate. Unless you believe we are going to be under stay at home orders for another year and learning during it is a requirement for your job, ask a different question!

Java for new Programmers

Today was a great session about Java in education

From Oracle

Resources from Ken Fogel’s talk

  • Sample code showing Java brevity
  • Single File Source Code Execution (I really like being able to write java MyProgram.java). Way less explanation for new programmers!
  • Type /edit in JShell to open in an external editor (I didn’t know about this – cool)

Other resources I like

  • Online IDEs
    • https://repl.it/languages/java10
    • https://www.jdoodle.com/online-java-compiler/