betterscientificsoftware / bssw.io

Better Scientific Software Homepage
https://bssw.io
Other
134 stars 85 forks source link

Are older programmers competitive with younger programmers? #1438

Open bartlettroscoe opened 1 year ago

bartlettroscoe commented 1 year ago

This may not be a blog article. It might be an original summary article ...

Given that I will be turning 50 years old at the end of this year, and given that I have 25+ years of serious programming experience (by CSE standards), and that I am constantly getting recruiting attempts by major companies that know my age, I am interested if there a real problem of ageism with programming-intensive jobs and if such a bias is supported by data. And I would like to discuss my own person experience over the last 25+ years.

Mark Zuckerberg once said in 2007, "Young people are just smarter."

Here are some of the articles that I have browsed recently on this topic:

This is a topic I would be interested in writing a review article about and see what the research (if any) suggests. (And could be an inclusive minute as well.)

rinkug commented 1 year ago

Linking this to #1375

rinkug commented 1 year ago

I think some of the links above are interesting and offer different perspectives but at the same time are subjective and based on authors perceptions.

Personally, I know a lot of experienced software developers and I dont think age plays any role, but that is my perspective based on my experiences and I may very well be wrong. I think for such a subjective topic such as ageism, we cannot prove whether the problem is real or not without being biased.

I think readers would find the above links interesting, as long as we can showcase them as what they are without being biased in either direction.

bartlettroscoe commented 1 year ago

For myself personally, I don't think I write software as fast as I did 20 years ago. Some of that is due to having more distractions and task switching such as @markcmiller86 mentioned in https://github.com/betterscientificsoftware/bssw.io/issues/1341#issuecomment-1272381402. I used to be able to spend several days in a row just working on coding with no interruptions. Some other reasons for the slowdown is also be due to the fact that I plan more before I start writing software, I write way more tests, and I write a lot of documentation.

But even with accounting for more disruptions, task switching, more planning, more testing, and more documentation, I don't feel that I am writing code as fast. But I think the software that I write now has way less technical debt and is much closer to production quality at the start.

So what is the tradeoff between software quality (from an older more experienced developer) and software quantity (from a younger, faster but inexperienced developer)?

It seems like the best case scenario is that my present self would go back 20 years and coach and supervise my younger self who was very fast at writing software but a bit of a loose gun. Then, together, we would write higher quality software faster than either of us could do by ourselves. .... And that makes the case for a senior software developer supervising younger developers.

The above is some of the text I might add to such an article.

rinkug commented 1 year ago

@bartlettroscoe and @bernhold : any interest in this or shall we close this?

bartlettroscoe commented 1 year ago

I am still interested.

bartlettroscoe commented 1 year ago

FYI: @markcmiller86 noted at the last IDEAS-ECP meeting yesterday that he is interested in this topic. We should pull the trigger on looking at some more references and write up a draft for an original/blog article on this topic.

bartlettroscoe commented 1 year ago

I just asked Google Bard the following question:

Are there any studies that support the idea that young software developers (i.e. late 20s and early 30s) are more productive and valuable that older software developers (i.e. 50s and 60s)?

and it responded with:

There is no clear consensus on whether young or older software developers are more productive and valuable. Some studies have found that young developers are more productive, while others have found that older developers are more experienced and valuable.

One study by the University of California, Berkeley found that young developers were more likely to be productive because they were more likely to be up-to-date on the latest technologies and trends. The study also found that young developers were more likely to be creative and innovative.

Another study by the University of Toronto found that older developers were more experienced and valuable because they had more knowledge and expertise. The study also found that older developers were more likely to be reliable and dependable.

Ultimately, the productivity and value of a software developer depends on a variety of factors, including their age, experience, skills, and knowledge. There is no one-size-fits-all answer to the question of whether young or older software developers are more productive and valuable.

It is important to note that the studies cited above are just a few examples of the research that has been done on this topic. There are many other studies that have been conducted, and the results of these studies have been mixed. Some studies have found that young developers are more productive, while others have found that older developers are more experienced and valuable.

It is also important to note that the results of these studies may not be generalizable to all software development teams. The productivity and value of a software developer may depend on the specific team that they are working on, the technologies that they are using, and the tasks that they are assigned.

Therefore, it is important to consider all of the factors involved when making a decision about whether to hire a young or older software developer.

And when I asked for the exact references it gave:

Study by the University of California, Berkeley:

DOI: 10.1145/2818344.2818347

Title: The Relationship Between Age and Productivity in Software Development

Authors: James Whittaker, Dawn Isabel, and Brian Neil Levine

Affiliations: University of California, Berkeley

Study by the University of Toronto:

DOI: 10.1109/TSE.2015.2464802

Title: The Impact of Age on Software Developers' Productivity and Value

Authors: Xuesong Chen, Alok Gupta, and Arie van Deursen

Affiliations: University of Toronto
markcmiller86 commented 1 year ago

Interesting result from Bard. I haven't used that yet. I am using ChatGPT somewhat frequently. I see many similarities in their response tenor such as the "...depends on a vareity of factors..." qualification and the "...it is important to note..." statements.

I have also found ChatGPT is often very, very wrong...even when asked to give references, it sometimes makes stuff up out of thin air. I wind up having to go check almost everything it says for accuracy. Thats problematic. Even when I've asked it to give me a URL for something it cited, it produced a bogus URL...

Do you know how to make VisIt us a specific image as a background image in the visualization window and/or which are the relevant parts of the VisIt documentation that explain this?

ChatGPT Yes, it is possible to use a specific image as a background in the VisIt visualization window. Here are the steps you can follow:

  1. Load your data into VisIt and create a plot as you normally would.
  2. Open the "Plot Attributes" window by double-clicking on your plot in the "Plots" window.
  3. In the "Plot Attributes" window, click on the "Appearance" tab.
  4. Under the "Background" section, select "Image" from the "Type" drop-down menu.
  5. Click the "Select Image" button to choose the image you want to use as your background. This will open a file selection dialog box.
  6. Navigate to the location of your image and select it.
  7. Adjust the other settings in the "Background" section as desired, such as the scale and opacity of the image.
  8. Click "Apply" to see the changes in the visualization window.

The relevant parts of the VisIt documentation that explain this feature are in the "Plot Attributes" section of the User's Manual. Specifically, you can find more information about using images as backgrounds in the "Background" subsection of the "Appearance" tab.

User Do you have a URL for that part of the manual?

ChatGPT Yes, you can find the relevant section of the VisIt User's Manual that explains how to use images as background in the following URL:

https://visit-sphinx-github-user-manual.readthedocs.io/en/develop/UsingVisIt/Plots.html#plot-attributes

In this section of the manual, you will find detailed information on how to customize the appearance of your plots in VisIt, including how to use images as backgrounds. The "Background" subsection of the "Appearance" tab provides step-by-step instructions on how to select and adjust an image for use as the background of your plot.

bartlettroscoe commented 1 year ago

I have also found ChatGPT is often very, very wrong...even when asked to give references, it sometimes makes stuff up out of thin air.

@markcmiller86, wow, it seems you are correct. The references given above seem to be completely made up. I can't find them at all. Seems about as reliable as "many people say ..." :-)

So it seems these tools are currently worthless for doing research. Back to Google searches ...

markcmiller86 commented 1 year ago

The references given above seem to be completely made up

I think this is due to the predict the most likely next word kind of algorithm that is going on underneath the covers in this technology. That may make some sense in conversational dialog. But, it makes absolutely no sense when constructing (or quoting) actual references. Then, the responses need to be precise sometimes repeating verbatim something else already out there.

Another issue is apparently that these AI tools do not operate with current web data. I think the data that is used in their creation is as much as 1-2+ years old now. So, anything new or changed since then, they won't know about. Finally, they are not designed to actually perform search tasks in tandem with their responses.

You can potentially engage in some sophisticated prompt engineering to try to see if you can get the technology to do a better job. But, they don't seam to have a simple feature to run a search on anything that they report as verbatim (e.g. URLs, quotes, citations, etc.) and confirm that what they claim to be valid actually has wide-spread search matches on the web.

No matter how hard I tried, I couldn't get ChatGPT to stop giving me URLs to VisIt documentation that were completely bogus. I have been trying to see if we could use this technology as a user interface to our software documentation. There are apparently ways to prime the tool by feeding it an importance vector for a particular corpus of docs and then have it return results more specific to that corpus (kinda sorta like site: would do for a Google search). But, I don't yet understand the process and there is an upper-count on tokens you can send to ChatGPT as part of a query which is much smaller than most software documentation.

bartlettroscoe commented 1 year ago

A related webinar:

markcmiller86 commented 1 year ago

A related webinar:

FYI...this seminar seemed to focus a bit more on the question of how old is too old to start a career (or maybe even a hobby) in programming. They do get into a range of attributes youth and age bring to programming jobs though too.