Why I don't try the Perl Weekly Challenges
A little over a month ago I learned about the Perl Weekly Challenges. The site states the challenges are for any skill level. So, I went and took a look. After looking at the first challenge that week, I realized “any skill level” did not mean my skill level.
My skill level is pretty basic.
I can …
- open, read, and close text files and do simple manipulation of the data.
- add, subtract, multiply, and divide when it comes to math.
- tack on words or phrases to the beginnings or ends of strings okay with loops.
- write some basic regexen.
- even roll things randomly.
- do most of the above conditionally.
… that is about it.
I read the challenges and my mind is totally blank on where to start after…
#!/usr/bin/perl
use strict;
use warnings;
I wish I could grasp the concepts in the Perl Weekly Challenges, especially the math. I have not taken a math class in over 30 years, and what math I remember is, as I said, pretty basic.
Oh, and one needs to be more than a little familiar with Git and GitHub to contribute, which I am not.
Yes, those challenges, while they might be fun for whomever is participating, are really not usable for anyone other than those who have a background in CS and math. It's basically a feel-good exercise for anyone who either has this background or enjoys this type of quizzes. The state of Perl community makes it into the main event, rather than a side show.
Most programmers these days will either not encounter a situation where those concepts come into play, or, if they do, their non-clever solution will be good enough since the benefit of fancy algorithms only kicks in in large enough sets, or they use a framework that have already implemented all the clever bits.
Lady Aleena,
The latest challenge posted is, I believe, number 75. I believe all the challenges remain posted on line. Perhaps a good place to start would be at challenge #1. If I recall correctly (I am not solving the challenges, but I do read them every week), the first ones were not heavily math based and rather simple.
As for git and GitHub, if you are going to either program for a living or program for fun and learning, learning git and GitHub is definitely something you need to do. Git is one of the most, if not the most, popular source code control systems and is the means by which the vast majority of open source code on the planet is stored, updated and communicated.
Lot's of the tasks are interview like questions that don't happen in the real world.
With two tasks each week, I think there is an opportunity to aim one of those tasks at Perl enthusiasts with less of a formal computer science/math background.
Folks may learn a lot from challenges like (random ideas off the top of my head):
- download a csv, open it, find the average of all the values
- calculate Fibonacci to 100 numbers, then write it to a file in reverse
- make a prompt driven calculator for simple maths
- write tests for a simple provided module and its documents, discover the bug and fix it, add additional tests to ensure the bug doesn't return
This would be a great way to improve inclusiveness.
Yes, also, it will prove the value of Perl to the average programmer, or beginner programmer. It can also show the power of Perl to an outsider.
I do not have a math background, and most of what I write in Perl is processing data for my website. It is not that exciting. It does make me feel a little small when I look at the challenges and not know where to begin. I am not that logical a thinker, I guess.
I know how to do basic things with git. I check the status, add files, commit them, push them to GitHub, and check logs every now and again. However, everything else is a bit beyond me at this time. Sure, I can click the link to fork the PWC repository to my account; but I'd rather just open an issue and attach my solve there without having to fork/clone/whatever. It is just a bit much.
The site does not state that every challenge is achievable by every skill level. The site does state that 'if you need help just request a "mentor" and we will provide one. This will be private between you and the mentor and no-one else will know about it. This is just for the assigned challenge.'. Consider this like the various puzzles that are published daily in newspapers world wide. Nobody was born knowing how to best solve such puzzles. Given our past discussions over the years I know there are many areas of problem solving and perl which would be more beneficial (IMHO) of your attention than this.
I hope this might help solve at least some of your problems.
Learn Enough Git and Github to take part in the Perl Weekly Challenge
Don't sweat it. I've ignored the challenges.
Yes, I know. I get this "you are not smart enough" feeling as well. Maybe this is the point of those challenges.
The video of Lance solving challenge 74 from scratch with tests was ver useful for newbies I thought:
https://www.youtube.com/watch?v=uM0TTQZaZ2Q
https://lancewicks.com/2020/08/22/perl-weekly-challenge-74/
Wait? You think that the point of these challenges is to make people feel they "are not smart enough"?
The point of perl weekly challenges is quite well defined on their site. None of it is intentionally designed to make people feel bad about not being able to tackle a challenge.
The barrier for participation is what, able to use some git at a fairly basic level, understand the particular challenge (if you are unfamiliar with the topic in question this needs research on your part), figuring out an approach, applying that in perl, rinse and repeat until you have something that achieves the goal. That doesn't seem unreasonable, since that is what a great deal of programming/problem solving requires in normal conditions.
There's a fairly limited number of challenges that would be of interest to a large audience if they had to be restricted to the things Lady Aleena lists here that they can already do. Sometimes the point of a challenge is to learn something new to achieve to goal. As mentioned earlier the PWC folk offer private mentoring, which obviously people have to ask for.