Live data from Hacker News

Untitled topic

news.ycombinator.com

41–50 of 73 posts

Re: undefined

#41
It sounds like a broad topic. You may want to screencast short sessions of yourself coding, and then run them back to see what's taking longer. Here are some more thoughts:

1) Research: Do you find that you don't understand documentation of libraries, or don't understand what makes one library better than another when you're looking through your options (popular / common libraries)? I don't think this is necessarily indicative of slow cognitive skills. I think it's indicative of perhaps not asking the right questions when you go through the libraries to pick one in the first place. As soon as you start trying to decide for yourself whether you prefer one library over another or start seeing strengths / weaknesses in the libraries you do / do not choose, this is a sign you are probably starting to "get it".

2) Implementing the library: Do you read the documentation first? Or do you go straight to examples? Bypassing documentation is not always a good thing. Take the time up front to get familiar with what you're working with so you have a good overview and understand in general how one would perform tasks with the library and how the author intended it to be used. If documentation is sparse, look at the code. Is it a highly popular library and you're still having trouble understanding? If so it's not necessarily indicative of slow cognitive skills. Just spend more time reading others' code. By flexing that muscle (like with other mental exercises) it should improve with time.

3) Specifications. Does the company / client provide specifications? Or are you on your own and need to research the requirements of the project from scratch in order to assess what the project needs. Depending on the specifics and what the company / client's expectations are you may want to consider if cutting corners is appropriate. For example is this a Minimum Viable Product? If so cutting corners is probably ok as long as it meets requirements of the project. That's not necessarily a tip for improving but a practical point in that it's never useful to write code for a project that will never be used, so having a clear idea of requirements for the project is critical in order to know what can or cannot be left out of the implementation.

4) How often do you think abstractly about the problems you're trying to solve? Generally speaking in order to truly harness the power of programming and improve your speed to get common tasks done quickly, you should find ways to write layers of code just beneath your specific implementation to facilitate the implementation of common components (for example, an authentication system).

It's also sometimes a good idea to practice writing the entire component (if not for work then in spare time) from scratch. This way you will have gone through all the agony yourself and understand the real pain points in implementing components for a system and will be better equipped to choose libraries that truly help you to accomplish what you're trying to accomplish. If you've done this a number of times and still wouldn't be able to identify pain points or have ideas for how to abstract common tasks into libraries / classes of their own, then you may just not be thinking critically enough about the problems you're trying to solve.

Re: undefined

#42
My business partner is an exceptional programmer. He's well known in his field, so it's not just me that thinks this.

Sometimes he solves difficult problems seemingly very quickly. Sometimes he takes 5 hours to write 3 lines of code. And sometimes, he thinks it'll take half a hour and it ends up taking all day.

I was talking with him about this post and he says that there wasn't any information in the post that would suggest that the poster is particularly slow. Some things just take a while. Eventually, you'll develop better instincts and form mental shortcuts and you'll get faster at debugging. Especially at debugging, which really seems like an art form to me.

Re: undefined

#43
Maybe the problem is you don't receive enough value for doing things quickly. For example, if you were paid $1 million to do a programming assignment quickly, you probably would.

Re: undefined

#44
post #10

You may be chronically sleep deprived and not realize it. If that's the case you should try sleeping really consistently for a week and check the difference. Don't use an alarm, just be really disciplined about going to sleep early enough to wake up naturally. No caffeine or other stimulants. The difference between a well rested brain and a sleep deprived one is night and day.

Can't upvote that one enough.

You need enough sleep, you need good sleep, and regular sleep.

And then you need down time. The time where you're not expected to rush to do something. Where you can sit down and learn a bunch, or pick yourself up and take a stroll.

You _need_ walks.

Re: undefined

#45
If you're worried about being "slow", don't introspect, use metrics. First, define "slow". Everything else follows, so this is important. "x" many key strokes per hour? "x" solutions per hour? Since this part is so important, compare your definition to other's definitions. Then measure. Both yourself, and others with the same definition. Don't measure against others that are using a different definition, you'll be measuring different things.

Then, break the problem down into it's constituent parts. One possible breakdown: domain specific software engineering knowledge, technical coding ability, raw mental processing speed, decision making strategies and execution, mental focus, engagement.

Then, go back, define each of those, then measure, then start to hack the ish out of them. Deliberate study and practice can make up for a substantial lack of innate ability.

Also, consider that your hearts just not in it or that this particular line of work doesn't play to your natural strengths.

Supposing you're decidedly committed, realize someone will always be better than you, and worse than you. Find a place in your team where you best contribute to the overall teams needs rather than measuring your performance using a single dimensional metric, and be ready to be flexible should that need to change in the future. Maybe your slow, but maybe the fast person is fast in 9 out of 10 things, and super-slow in 1 thing, which you happen to be medium at. Well, the team is better off if you take care of that 1 thing. Everyone wins.

Finally, your health. This should be priority one. "Keep your shop, and your shop will keep you." You, are your shop. Take care of your shop. Regular and sufficient sleep cycles. Regular exercise. Regular social interaction. Regular mental stimulation. Daily mindfulness meditation. Not because you love yourself and you deserve it, but because this is how you keep your shop, the shop that pays your bills. Regarding pills, adderall actually fits the bill. But, the problem with pills is they are one dimension solutions. Adderall also reduces your ability to think creatively. Prozac increases brain plasticity. Armodafinil is an understated but highly effective smart pill. Guanfacine strengthens executive functions via actions in the prefrontal cortex. Selegiline is another legitimate smart pill, that you need to be super careful administering. Protein and omega fatty acids are super important, on an everyday basis. Intermittent caloric restriction is intellectually beneficial. Basically, define, break it down, measure, repeat. Always take the whole picture into consideration and always play the long game.

Re: undefined

#46
post #8

Earlier quoted context omitted.

Sure. This is an extreme example. I'm just starting my third of university software engineering and I've been dreaming up a moderately ambitious (but technically straightforward) CRUD web app since early in my first year. Since then I've flipped and switched between countless frameworks and languages, shelved, reassessed, unshelved, reshelved, and scrapped many basic prototypes. Only recently I've made some progress…

This is analysis paralysis. It's not a mental deficiency, but rather an anti-pattern usually brought on by insecurity and lack of knowledge about which decisions are actually important: https://en.wikipedia.org/wiki/Analysis_paralysis The way out of it is just to pick something and see how far it takes you, accepting that you may have to backtrack and redo stuff in the future. There's this myth that experts got that…

Exactly. A quote I read recently: "Successful people are those that make mistakes when nobody is looking"

Re: undefined

#47

> "I have always been a slow programmer" I'll try to make this post as short as I can, so forgive me if it seems abrupt. I'm going to take the opportunity to explore the possibility that you have no talent for programming. You should still take the advice to check out sleeping patterns, fitness, health, etc. First, take a look at this website: http://the-programmers-stone.com/the-original-talks/day-1-th... It's the f…

A lot of this rings true. Especially where you touched on following notes rather than deeply understanding a problem to the point where the solution can be generated by looking at the problem. I'm guilty of clinging to DDD-style application development and I don't even dare to think what my old code looked like before I discovered that. Thank you for the in-depth links for more information.

OP, do you think you have problems following the logic within the code? Or is it like, i don't understand what the bigger picture is so I can't finish this task?

Re: undefined

#48
Don't beat yourself up. Seriously. A lot of the other comments are about how you might not actually be slow or how you could fix things with medicine/etc. These aren't bad but may miss the point or be overly optimistic. You might legitimately have a crummy situation (though I would be surprised if you aren't being overly critical)

Please do yourself a favor and stopping beating yourself up. It might not be the worst idea to try talk therapy.

What does your boss think? Do you get negative feedback at work? I actually am pretty slow but make up for it partially in quality.

Either way me being so hard on myself wasn't helping anything. That doesn't mean rolling over and accepting (self-perceived) mediocrity. It just means having some compassion for yourself.

Re: undefined

#49
Does your team do estimates in advance for how long a task should take or is it cowboy coding just creating random features the customer might want? If you have estimates, do you overshoot them or what is it that quantifies you as being slow? I would recommend breaking tasks down and giving each task an estimate that you should try to follow, with clearer goals and clearer deadlines its much easier to keep on track, the unit for estimating should be nr of days, not hours or minutes.

Re: undefined

#50

Earlier quoted context omitted.

A lot of this rings true. Especially where you touched on following notes rather than deeply understanding a problem to the point where the solution can be generated by looking at the problem. I'm guilty of clinging to DDD-style application development and I don't even dare to think what my old code looked like before I discovered that. Thank you for the in-depth links for more information.

OP, do you think you have problems following the logic within the code? Or is it like, i don't understand what the bigger picture is so I can't finish this task?

I think it's more that when faced with a code smell, I get into a mental loop where I evaluate each possible solution I can think of over and over without being able to commit to one. Sort of like a simulated annealing algorithm that never cools down.
Post reply on HN