9 comments

[ 5.0 ms ] story [ 27.8 ms ] thread
Lately I've been focusing more and more on writing code which is easy to read, and it seems to require good language skills more than anything else. Things like descriptive naming, keeping the same level of abstraction in a function, writing good commit messages or documentation all seem to require language skills rather than technical skills.

But it might just be my personal bias for what is considered good code that gives that impression.

They are both very much required. Having poor math skills is likely to indicate poor abstraction skills, which in turn results in poor models. Having poor language skills will likely result in not being able to communicate those mental models, no matter how good they are.

You can be an amazing linguist, if you had to create hundreds of classes because you couldn't abstract something better, it will still be incredibly taxing. Whether it is more, less or equally taxing with an amazingly but shoddily named model, I don't know. I've seen extremes on both sides produce garbage I didn't want to step into, though I could make a case for overly mathematical people potentially covering a bridge in lack of linguistics by sticking to equations and models.

Interesting. As a counter argument, linguistics and grammar also involves a great deal of abstraction, which seems closely related to OOP concerns.

But I will say that familiarity with equations and mathematical symbolics tends to be very useful for reading and understanding code.

To me, so much that is part of coding falls back on math. Proof by induction is a fundamental part of being able to write a loop, model recursion or determine complexity. Binary numbers require understanding bases and exponents. I don't think one can be a really good coder without knowing a lot of fundamental math. That said, math is a lot more accessible with the internet of today vs the resources available to me in school 30 years ago -- my high school teachers couldn't point me in the right direction when I was asking questions about what was ultimately related to Fourier transforms.

I was both a mathie and coder throughout school, and took multiple language courses when they were available to me in high school. The skills certainly complement each other. A mind should be flexible, and the more one learns, the more flexibility the mind has. But it all relies on having an environment that nurtures and feeds natural curiousity.

Maybe "learning to code" does, but coding isn't the major value add. The main value "coders" provide is problem solving, which requires math.
Perhaps this also depends on the type of software being built. If you are solving complex problems with original solutions then math and problem solving might be very important, but if you are building more "mundane" software for lack of a better world, then readability and maintainability might be more important. And in my own biased opinion, those aspects might rely more on good language skills instead.
As someone who did way better on his SAT Math than Verbal... language skills are important in programming. Every word in human languages has ambiguity, and the possible ways to express a single thought in a sentence are almost uncountable.

Similarly, in programming, there are many tools available, which can be combined in almost uncountable ways to get something done... then editing skills translate to refactoring skills.

It is important in both writing and programming to express thoughts in such a way as to help reduce ambiguity as much as possible for the reader. The person who reads your code will appreciate well written code that doesn't smell, as it will help her do her job.

reading this they made a group of people doing tests about "fluid reasoning and working memory as well as numeracy." and then let these people do a course in Python in Codecademy (the people did not have any programming experience before). They found out that the ones that were good with language learning were really good in (the first steps of) learning Python in Codecademy (they checked these with multiple choice tests and "Participants also had to write some basic code in a rock, paper, scissors programming exercise"). It appears like an alright study but I wouldn't go so far and say that it necessary means language learner become better programmers than those with strong math skills. Being able to program those mini programs in codecadamy (where everything is right in front of you), is very different than programming bigger programs (and I don't even mean those where you need algorithms, ML or whatever). I know from myself that I struggled a long time in programming because I couldn't keep the structure of the code in my head or think about how to come up with what to do next to reach my goal, whereas I always was a very good language learner (e.g. English as foreign language) where learning vocabulary is not complex at all. I agree regarding syntax, people who learn syntax in foreign languages fast are most probably good in learning syntax in coding languages.
I understand that this article seeks to clarify and help the learning process, but this perspective could easily be co-opted by institutionalized racism to exclude ESL students and developers.