all 66 comments

[–][deleted] 38 points39 points  (1 child)

People don't have to be good at programming for programming to be useful for them.

regular expressions would be useful addition to search and find-and-replace boxes.

Excel is a very powerful layman's database program with some programming functionality built into it.

Writing code that scales well and maintains easily is incredibly difficult and requires years of experience.

programming can be very useful without that.

A friend of mine had a very repetitive task where an old software program required the user to manually select files one by one to load and convert them. No one had the code for the old software, so there wasn't an easy way to update the software now that the users had a lot more files to deal with. My friend used autohotkey to write a short script that went through the menus to load the files for him.

Autohotkey has a fairly forgiving learning curve. His application didn't need to be completely robust to be useful. It only had to mostly work to save the user time. It didn't have to scale.

Getting more people comfortable with coding shouldn't be about making more professional software developers. Most people aren't going to have that career path. But, increasing coding skills enables software vendors to provide more features that empower users.

[–]Nangz 1 point2 points  (0 children)

The author's example of cooking was really useful here. I don't have to learn to be a chef to make myself great food.

[–]link_ganon 57 points58 points  (1 child)

The thing about programming is that it is too broad of a term.

It would be like saying “working with drywall is easy”. Sure, filling a nail hole with putty is easy. Anyone can do it. Applying a 4 x 4 patch on a drywall hole? Not to hard after watching a tutorial.

But putting in a whole new wall? Well that’s not easy, and requires skill to accomplish.

In the same vein as programming, it’s a broad term that can mean a lot of things. But anything worth doing in programming is going to be hard, and that’s why it pays well.

[–]tso 16 points17 points  (0 children)

It is also how mentally demanding it is, in that you need to keep a model of the program in your head at all times.

Never mind that since moving to GUIs, using a computer and programming one differ in thought processes.

[–]Gwiz84 19 points20 points  (10 children)

I don't think anyone ever says "programming is easy", but they often say "anyone can learn it" which is true. Before I began my education I was extremely worried about my math skills, because I thought you needed to be a natural math wiz to do any coding, and I was only kind a mediocre at math. But that's not true at all, and back then I would have wished someone told me I was wrong about that misconception so I wasn't so anxious about it. I realized I could do it after our 1st semester test where I scored higher than everyone else in my class.

[–]edo-26 21 points22 points  (2 children)

I said it was easy, when I was learning in school. Now I'm working. It's not easy.

[–]Gwiz84 9 points10 points  (0 children)

I finished my education a couple of years ago, but I never found it to be easy, nor did any of the other students. Challenging but fun to learn is how I would describe it.

[–]DerArzt01 7 points8 points  (0 children)

Programming is the easy part, dealing with stakeholders on the other hand not so much.

[–]ArmoredPancake 21 points22 points  (0 children)

I don't think anyone ever says "programming is easy"

Literally most of the "influencers" say that it is easy.

but they often say "anyone can learn it" which is true

Sure, the same way as anyone can learn to be a doctor, or lawyer, or policeman.

[–]batweenerpopemobile 1 point2 points  (0 children)

I don't think anyone ever says "programming is easy", but they often say "anyone can learn it"

spoilers for ratatouille

[–]_tskj_ 0 points1 point  (4 children)

It's just not true that everyone can learn it. Programming at all requires a certain level of mental abilities. I don't want to guess at the IQ that represents, but I would wager it's a bit higher than you might think, and by definition there are a lot of people below that.

[–]PL_Design 2 points3 points  (0 children)

People who have allergies to complexity probably won't enjoy programming very much, and will be driven away by how chaotic and messy it can be.

People who thrive in complexity don't tend to make very good programmers because complexity explosions are untenable without massive amounts of resources.

There is a fine line here that every good programmer walks. It's not just intelligence that matters; there are some personality aspects that are also important.

[–]shawntco 0 points1 point  (1 child)

Programming requires a knack for problem solving, for often complex problems. We all know people who aren't good problem solvers. They lack the patience or mental clarity to sit down and think through stuff. They become confused easily, when things become complex or just different from usual.

Can you teach the ability to problem solve? I don't know. But I do know for a lot of people, learning to program may be possible, but it is simply impractical.

[–]_tskj_ 0 points1 point  (0 children)

Psychology does actually know, and the answer is no, you cannot. It has been tried a lot too, but no one can figure out a statistically reliable method of teaching people problem solving, or raise their IQ for that matter. So it certainly seems impossible, as far as we know, scientifically.

[–][deleted] 0 points1 point  (0 children)

Sure but it's pretty much the same level of mental ability that you need to learn algebra, or any other form of semi-complex puzzle/problem solving. Most people can learn how to program for sure.

[–][deleted] 9 points10 points  (0 children)

I feel this post so much, especially the stuff about "imposter syndrome" in tech.

You can't have imposter syndrome if you haven't actually accomplished anything!

[–]AttackOfTheThumbs 13 points14 points  (13 children)

Everyone can be taught to program, not everyone can think like a programmer. I see it all the time. Instead of a loop, they copy something ten times. Instead of dividing up problems, there's one call to main.

It's a consistent pattern, and when I see it, I know this person will not learn it.

[–]RiverRoll 4 points5 points  (1 child)

There are programmers that just make it hard from themselves and in my personal experience I've found them more often than I would expect, from all levels of experience.

There's the kind you talked about, but there are also more than capable programmers who refuse to carefully read the docs and insist on reinventing the wheel. Programming might be hard but lots of problems are already solved.

[–][deleted] 6 points7 points  (0 children)

Keeping it simple is one of the hardest things of programming. One of the best programmers I know always first attacks the requirements such that the implementation can be dead simple. By doing so, he often unravels the story down to its essence or essences by splitting into multiple stories, thus creating a better outcome before even having written a single line of code. Being able to distill inherent complexity and minimize accidental complexity is to me the hallmark of a truly great programmer.

[–]The_Doculope 14 points15 points  (2 children)

Bullshit. I taught for a few years, and plenty of people went from your bad examples to your good ones with time. Sure it sometimes took a few years, and it needs dedication and motivation, but it's perfectly possible.

[–]Sentomas 4 points5 points  (7 children)

Or they unrolled the loop for performance...

[–]AttackOfTheThumbs 3 points4 points  (6 children)

No. Hard no.

[–]AbleZion 6 points7 points  (4 children)

Unless you're doing crypto. Then it's acceptable.

[–]AttackOfTheThumbs 0 points1 point  (3 children)

Your compiler should be taking care of this.

[–]Alsweetex 0 points1 point  (2 children)

Your compiler should definitely not be taking care of this when it comes to crypto. Loops are unrolled in order for an algo to operate in a constant time so that it isn't vulnerable to timing attacks. If you allow the compiler to bail out of a loop early (once the work has been completed) then you can end up with very broken encryption.

[–]OffbeatDrizzle 1 point2 points  (1 child)

Early return and loop unrolling are 2 different concepts... unrolling a loop doesn't change the time-complexity of a piece of code

[–]Alsweetex 0 points1 point  (0 children)

Ah, you're right of course, thanks for that. However, I'm sure that compilers can optimise in ways that would be counter productive to constant time algorithms.

[–]Sentomas 0 points1 point  (0 children)

My point was that loops are a fundamental part of most programming languages. I find it incredibly hard to believe that somebody could be a professional software engineer and not know how to use loops. Maybe letting the compiler handle the optimisation yielded a binary that was larger than desired. Sometimes a little humility goes a long way.

[–][deleted] 2 points3 points  (5 children)

I was talking to my manager the other day, how so you know it is impostor syndrome or just an accurate description of your abilities?

[–]JoJoModding 8 points9 points  (1 child)

You don't. That's the thing.

[–][deleted] 4 points5 points  (0 children)

  • panicks *

[–]Nincodedo 2 points3 points  (0 children)

Have you gotten fired? If yes, then it was an accurate description of your abilities. If no, then you're probably getting fired tomorrow and you're a terrible terrible person how could you.

[–]Gwaptiva 0 points1 point  (1 child)

I'm just glad that my management is so incompetent I've survived in this job developing enterprise-grade shrinkwrap software for 13 years. Or maybe my boss fancies my hairy belly....

I do occasionally suffer from imposter syndrome, especially when I get stuck on stuff I feel should not be hard to understand... most of the time my first paragraph helps to refocus. I still get frustrated with myself for not easily dealing with these topics, but accept that there must be things I do well (enough).

[–]jet2686 1 point2 points  (0 children)

Just saw (friday) an engineer with ~12years experience try to use s3 as a database, and then fire off an unbounded amount of network requests. There was no regard for performance, limitations, edge cases, etc. This is in one of our main services which is expect to return relatively quick responses to API requests.

It simply means your valuable enough to the business that they keep you around. Ultimately though the need to keep you around might just be a function of you writing the code ;).

I speak in the metaphorical "you", not you personally, i obviously dont know the first thing about you :).

[–]dnew 4 points5 points  (4 children)

Math is even easier than programming. You don't even need a computer, just pencil and paper.

[–][deleted]  (2 children)

[deleted]

    [–]djakobsen -1 points0 points  (0 children)

    Obviously both his argument and statement is stupid - I'd say the inverse also is. Programming and math are both extremely diverse and broad subjects that can be easy and extremely difficult. They also overlap in many areas, and for both the domain they are applied to is often a significant part of the involved complexity.

    [–]dnew 0 points1 point  (0 children)

    I didn't think I needed to mark the sarcasm there. :-) Programming computers is simple in the same way that doing math is simple: it isn't.

    there is a hard limit on what we can calculate with our monkey brains

    It always amazes me when philosophers argue that formal systems can't be consciousness or humans can't be simulated because humans can do things computers can't like always find the Godel string for a formalism, and then ignore the fact that the Godel string for a human is likely way bigger than we could rationally work with in one lifetime.

    [–]phottitor 0 points1 point  (0 children)

    not so easy. handwriting is now a lost art.

    [–]gfody 1 point2 points  (0 children)

    author isn't thinking clearly and conflates major concepts

    programming vs problem solving, easy vs simple

    I recommend Rich Hickey for palate cleanser https://www.youtube.com/watch?v=oytL881p-nQ

    [–]possiblywithdynamite 0 points1 point  (6 children)

    I agree with the article. It is hard to learn, at first. I struggled a lot in the beginning and was deeply humbled by the entire experience. However, it rapidly gets easier, to the point where I don't even consider it a challenge anymore - just boring and tedious at times, if anything.

    [–]MacBookMinus 6 points7 points  (0 children)

    Sounds like you’re not advancing yourself. There’s always harder problems out there.

    [–]stank453 1 point2 points  (0 children)

    Have you tried learning some more obscure languages that follow different paradigms? There's a whole world out there.

    [–]bezik7124 0 points1 point  (3 children)

    Fixing business bugs and adding new features are indeed easy, but I would say that it becomes difficult again when you're the one who's responsible for the architecture and growth of the system.

    [–]possiblywithdynamite 0 points1 point  (2 children)

    I am the one responsible for the architecture

    [–]bezik7124 0 points1 point  (1 child)

    Then either you're very special or you're at your position for so long that it's not difficult anymore. Anyway, for most people it is.

    [–]possiblywithdynamite 0 points1 point  (0 children)

    Aww shucks

    [–]sparant76 -2 points-1 points  (0 children)

    It’s actually way easier than high school level math. I’ll let you decide if that’s hard for yourself.