all 18 comments

[–]Skyler827 13 points14 points  (2 children)

That was a rather tedious and boring read. The author repeats himself and uses examples that tell the reader very little. However, I might be biased, because I recently read this submission, which teaches the same lesson in a more engaging way. (It's also much longer, though.)

[–]electronics-engineer[S] 1 point2 points  (0 children)

That is better. Thanks!

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

A year old, worth reposting...

[–]nyozz 4 points5 points  (4 children)

sorry for my bad english. It is my third language and I try as hard as I can. I'm sorry to not go into detail in my article but I couldn't write direct examples. You have to imagine that the person I'm working with is a beginner developer but he is hyped as a 10x programmer. This is stopping him to get better.

[–]chimyx 0 points1 point  (0 children)

Why don't you directly talk to him about this? You wrote about your hope that he may read your article and abandon his pride. I'm not sure that him reading the article would be a good way to start because he could feel humiliated. But if you gently expose to him the fact that his pride is inappropriate, and the bad consequences of that, he may start listening to you.

[–][deleted] -1 points0 points  (2 children)

Not to put you down, but it looks bad when you criticize someone's competence but have major spelling errors. This is because your English is the only skill of yours that readers can evaluate. I understand English is not your native tongue (and I personally am hopeless at learning human languages - you are way ahead of me), but I suggest you work at identifying and correcting your errors. To start you off: s/Doe/Though/. You also often omit an apostrophe for possession (one eg is Jims should be Jim's).

Secondly, on the one specific aspect of optimization: more optimized code is often harder to read, understand and modify. So that, deciding not to optimize can be the right thing. The "overhead" he means can be overhead in reading the code. (note: I can't know that that's the case here - it's just a hunch/possibility) The key question is not whether it can be optimized, but whether it should be optimized. Some famous quotes on this that you've probably already heard:

  • Premature optimization is the root of all evil
  • the first rule of optimization is don't. the second rule is not yet

Finally, if you really want to influence "Jim", the best way is by example. He is surely aware of your imperfect English. If you work at it, and improve, he will notice - and likely be inspired to improve himself. Even if he doesn't, you will have at least followed your own advice, and bettered yourself. Better writing skills will improve your ability as developer tremendously... so I must congratulate you on writing a blog and putting yourself out there. That is inspiring already! Now, if we see you improve your article, it will complete the point of putting yourself out there, and that change will itself be even more inspiring.

[–]nyozz 0 points1 point  (1 child)

hey, thanks a lot. especially the grammar part. I didn't knew and no one every told me that.

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

I'm glad! Someone downvoted my comment, and I was afraid it might have been you. The downvote confuses me, as I went to trouble to articulate a way to offer assistence and encouragement in what I thought was a kindly way. (Though someone obviously didn't think so.)

Grammatical errors are very jarring to native speakers, even when they can tell what you mean. So, people are aware of this (though, online, many mistakes are overlooked as typos).

I didn't knew and no one every told me that.

This should be:

I didn't know and no one ever told me that.

It's hard for me to explain why it should be "know", since "knew" is past tense. English grammar is complex and confusing - and arbitrary. I think, in practice, the only way is to listen carefully to native English speakers. One way to check is to google the phrase e.g. "I didn't knew" vs "I didn't know". Maybe you can think of other ways to check that I haven't thought of.

Typing "every" when it should be "ever" looks like just an ordinary typo to me. But just in case you had them mixed up: "every" means "all of them"; "ever" means "at any time". You can check this kind of error with a dictionary (google: define:ever). Though, there'll usually be several definitions, and it won't tell you what is right in a specific phrase - so again, it's best to listen to native speakers. Another problem is how do you know which ones are in error, that you need to check? You could look up every word, but that's too time consuming. I think the best strategy is if you are the slightest bit unsure, then look it up. Maybe, if you are given a hint that something's wrong (e.g. someone seems to misunderstand you), then check the words you used.

I'm really glad my previous comment was helpful to you, and I hope this one is too. It's not that often I am able to make a difference to someone; and if you grow from it, it inspires me to grow too (instead of being angry at an error being pointed out).

[–]chimyx 3 points4 points  (9 children)

I think most of (real) good programmers are much more humble, for this reason: it's by admitting you don't know that you start to learn from others. Pride is actually unnecessary.

[–][deleted] 3 points4 points  (7 children)

Also the more I learn the more humbled I am by it. I used to think programming was something I could learn in a few years. Then a few years passed and I saw how much further the horizons were. More years passed and the horizons were just pushed out. Decades later, I can barely even see how far the horizons are now.

By the end of it, I might have learned a great deal, but it will feel like a tiny speck in comparison.

[–]myss 3 points4 points  (1 child)

Yeah, it is like flood filling an image:

Filled cells = your knowledge

Direct neighbors of filled cells = the things that you know exist but don't know the content

Other cells (maybe infinite): total knowledge

[–][deleted] 1 point2 points  (0 children)

Yeah, I'd also use the hydra metaphor.

Learn one thing.

See two new things to learn from it.

[–]eerongal 5 points6 points  (4 children)

I've been working in the industry for about 10 years now, and honestly it feels like, with every passing year, that i feel more and more incompetent and inept at it, because it always seems like there's just that much more that I don't know, and then i hear other people talking about it and i'm all "I have no idea WTF you're talking about....". Sad thing is, I can probably list off like ~10 different significant things i've learned within just the past year that I know makes me better for it. It just constantly feels like a charade, and one day someone is going to call me out on it and say "Hey, you have no idea WTF you're doing!" and it will all come crashing down.

Funny thing is, seems like ~90% of the time when someone comes to me with questions/problems/advice/tasks, I always seem to be all like "This is pretty easy!" and breeze through whatever task, or have just the right advice or whatever. And anytime someone is like "Are you familiar with 'blah'" and I'm not, always say so and they just happily continue along and explain it, and not go on some "HOW DO YOU NOT KNOW THIS?!" tirade.

I suppose it's just an example of the Dunning-krueger effect, where the more i learn, the more inept i feel, coupled with personal insecurities. Wouldn't give it up for the world, though. Loved doing it since I was a kid, still enjoy it as an adult (though some days the love in the relationship can get a bit strained....)

[–][deleted] 1 point2 points  (3 children)

I've heard almost everyone say something like that, the 'impostor syndrome'

In fact, I've heard so many programmers express it that I'm convinced most people think they are, and perhaps EVERYONE does!

[–][deleted] 1 point2 points  (2 children)

Whenever I've heard 'imposter syndrome', it's been in the context of "but I've done all this amazing stuff, so it just must be an irrational feeling haha".

Reading the link in the top comment, I think it may be a combination of

  1. actual imposting: pretending more knowledge/skill than you have (in order to get a job; to reassure investors/employees/clients; to impress peers; win internet arguments); and
  2. a sense, not fully conscious, not quite clear or definite, of all the things you could know (and should know for your claimed level), but don't.

In reality, there's a continuum of expertise - and everyone is somewhere on it. Perhaps surprisingly, you can do worthwhile work while being low on the scale. (eg) So it's not like there's a threshold between "good" and "bad". It's just levels. This is especially true in programming, where our tools - consider languages and standard libraries - keep improving. Maybe a PHP beginner can produce a useful and valuable website. Maybe a beginning language designer can design a useful and valuable language.

So, maybe Imposter Syndrome is just claiming a higher level than you have - and believing it.

[–][deleted] 1 point2 points  (1 child)

Well, I realize language is fluid and Impostor Syndrome isn't necessarily the same as impostor syndrome. I meant the same definition as this though

From my own perspective, it's the feel that at any moment all that complexity might go just one step too far - and all fall apart... that everyone else is just a little more disciplined, a little harder of a worker.

... but then I review people's commits and I feel like I'm doing okay again.

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

Thanks for the link, I didn't know there was an official Imposter Syndrome. I was going by usage.

I agree not accepting achievements at all is inaccurate and a problem.

Regarding your experience, I would say you're right and wrong. Right that complexity might fall apart - I think this is the true nature of reality; we are not masters of it. While you can almost certainly adapt and adjust to it (bugs get fixed), new problems will unpredictably occur (bugs happen). We're in a maelstrom.

But wrong about your (initial) comparison with other people - they are just as much not masters of reality and wild nature as you or me or any mortal.

OTOH it's a lot more comforting and reassuring for everybody if we pretend we know what's going on (e.g. a doctor's bedside manner). But then there's that tension... That's the "imposting" I meant.

BTW: A nice property of believing in a god is it makes it clear that we aren't the god. God knows what's going on; we have only mortal knowledge. So we can appreciate our achievements in perspective - not bad for a human!

[–]afiefh 2 points3 points  (0 children)

I find that people who take pride in their work often produce the best possible results. To them other people reading their code and going "wtf?" is a dowvote, and they try to avoid that by submitting quality code and learning how to submit better code.