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)

FIRST Mentor Ready and Volunteer Ready Training + Data Protection Event Training

FIRST (For Inspiration and Recognition in Science and Technology) release a new online training program for mentors and volunteers. I would have liked more detail on what to expect so writing it down here.

It is easy to get to the training. You go to your dashboard at firstinspires.org and there is a big “Training “FIRST Training” button on the “My Teams” page. The button is also on the volunteer Registration Tab; at least after you volunteer (I don’t remember if it was there before)

Some of the trainings expire. You can see this on your certifications tab in the training tool. I also noted which ones they are here.

Mentor Ready

The first page says you have to do 4 milestones plus the completion and that it take approximately 90 minutes. Not sure how they got 90 minutes as the modules are listed as 15, 60-90, 15, and 15 along with the quiz. Even if you don’t count the quiz, this gets you to more than 90.

It took me a little under an hour, but I’m a fast reader and already familiar with much of the material. (I’ve been mentoring and volunteering a long time). The milestones were:

  • Milestone 1 – Welcome to FIRST – this was estimated at 15 minutes and took me 8. There were 3 Youtube videos embedded that you could watch at 2x speed. (You might have been able to skip them; I didn’t try that). One of the videos you can choose between 4 different ones and pick the one you find most interesting. Two of videos had content to reader lower on the page which you could watch while listening to the videos. Since these were embedded youtube you could also go to different browser tabs and listen.
  • Milestone 2 – Youth Protection Program – This one is long. It says 75 minutes up front and then inside the video says 60-90. It took me 44 minutes. A lot of it was a series of short videos. You cannot speed them up or go to another browser tab during these videos. And since they are short, you also can’t let it play in the background and listen as you do other things. There are two optional modules at the end: one for vendors and one for parents. I skipped those and went straight to a 5-10 minute tests. You are allowed to get one question wrong and you get three attempts. I didn’t get any wrong on my only attempt. This expires August 1, 2026
  • Milestone 3 – Data Privacy – It is listed as 15 minutes, but took me 4. It was just reading and knowledge checks in each part. If the material was new to you, it would take far more than 4 minutes of course. This expires August 1, 2027.
  • Milestone 4 – Role of a Mentor – Also listed as 15 minutes; this one took me 5. It was also just reading and a single knowledge check.
  • Milestone 5 – Mentor Ready Completion – This took maybe a minute. It just clicking. There’s no content in here. The first time I clicked it, I got an error message “This page can only be accessed after you have completed the prerequisites. Welcome to FIRST, Youth Protection, Data Privacy for Mentors, and Role of a Mentor”. I was puzzled because I did take all four modules. The problem was that I hadn’t first clicked on the Mentor Ready training path to start it. I went back and did that. Everything was reflected that I took. Phew.

Volunteer Ready

Volunteer Ready consists of two of the four Mentor Ready milestones – Welcome to FIRST and YPP. You don’t take them again. I just had to enroll in the path and immediately complete it.

Dat Protection for Event Volunteers for the 25/26 season

This course was in my list. I don’t know if it is from signing up as a volunteer (I judge FLL and FTC) or if I’m already in the system as Volunteer Coordinator. I suspect the former is what triggered it because I submitted my volunteer application today.

It didn’t say how long it took but I spent about 35 minutes on it.

This uses a player that pops up in a new window. You control playback speed in the bottom left corner. It mostly videos (you press next 22 times). The right nav shows what will be covered on each one including the knowledge check quiz. And you can go to other browser tabs/windows and listen.

For the six question quiz, you must get a perfect score but have unlimited attempts.

The material was similar to the mentor one so felt redundant doing it again. Some info was different like the mention of VMS, engineering notebooks, etc though. Also this one has a specific year in the title suggesting it has to be done each year.

jetbrains junie

I had a coupon code for JetBrains Junie AI Ultimate for a year. I set it up last month and have been using it a good bit.

How setup went

First I installed the Junie plugin. After accepting the license, I went to:

help > register – click disabled paid plugins > click JetBrains AI Assistant > Enable and restart

Then I clicked the three dots and license info which took me to the website. I had to click buy on AI ultimate and enter the code. I’m guessing I could have started on that page.

My first test

As a simple use case, I asked JUnie to create a package with two examples. Junie gave me a plan and the two examples:

Create com.jeanneboyarsky.scoped package with immutability examples.

Explore repository to confirm coding style and package naming conventions.

  1. Create new package directory src/com/jeanneboyarsky/scoped with two classes:
  2. Ensure examples are self-contained with main methods printing illustrative output.
  3. Note compilation requirements: document that JDK 21 needs –enable-preview, while JDK 22+ compiles normally.
  4. Provide summary and submit changes.

then listed summary for each class

A new Java class has been created to demonstrate that ScopedValue bindings are immutable within their scope. The implementation highlights that reassignment attempts are not permitted due to ScopedValue being a preview API.

A new Java file has been created to demonstrate that while a ScopedValue’s binding is immutable, the underlying object can be mutable. The code successfully illustrates mutating a Map within scoped values, while also handling scope boundaries.

Finally listed two two classes it created with a link to rollback if i don’t like
A new package com.jeanneboyarsky.scoped was created with two classes: ScopedImmutable1 demonstrates the immutability of ScopedValue bindings, and ScopedMapMutable1 shows that the contents of a mutable Map inside a ScopedValue can be changed. The code compiles for JDK 21+ but lacks automated tests.

In PyCharm

The license is good for all JetBrains products so I tried it in PyCharm as well.

Create a file named junie.py that plays tic tac toe. However instead of X and O, use Unicode symbols for unicorn and wolf. Also have the computer player use a strategy with a low win rate.

The generated code was concise and clear. It used Python idioms. It was well commented. Junie decided to implement my request for a low win rate with this strategy:

# Strategy intentionally weak:
# 1) 60% of the time: choose random move outright.
# 2) 40% of the time: attempt some light heuristics but also sometimes skip blocks/wins.
# Light heuristics section (still weak)
# a) occasionally avoid taking a direct win to stay weak
# b) occasionally block human, but not always
# c) mild preference for center, but not strong
# d) otherwise random corner or side

I ran the code and it works. And won’t frustrate a small child.

Generating Docs

I’m presenting an updated version of “Java Does What Now.” I created an IntelliJ project with packages for each of the examples in my presentation. After I was done, I asked Junie to create a readme to document the unexpected behaviors exhibited by the code.

It didn’t always get it right, for example telling me the module import was invalid. But that’s a new feature so not one it’s been trained on. But overall it did a good job.