Live data from Hacker News

Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

news.ycombinator.com

41–50 of 126 posts

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#41
A bit late to the party, but I will chime in.

- Every developer out there at some point in his / her life felt the same way as you do. Likely more than once.

- There aren't many developer who can look at their own code written 5 years ago and be proud of it; may be if you are John Karmack.

- Being able to write beautiful code is definitely valuable, but being able to make a product is even more valuable.

- The programmers you mentioned are kind of by definition exceptional. Otherwise they wouldn't get your attention.

You are not missing anything. You are just like the remaining 99% of us. And it looks like you are already trying to get better - so you WILL get better. Every piece of code you read, every book you read, every time you get a code review - you will improve a little.

Sadly, there is no formula to turn an average person into a prodigy. So don't beat yourself up.

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#42
You may be right. You are missing something.

The way to build big things is to build small things right. Small functions/classes that work correctly, no matter the input. Next up, you wield them to build up a layer and so on. Long story short, you may be missing the concept of abstraction. I say that because you mentioned code interactions; that tells me you are looking at things so closely, the bigger picture seems much larger than it is.

Also, understand that people have different perspectives; that they came up because of some random events. It is a mistake to think people who do a lot of work, think a lot. They don't - They usually have a simpler/more powerful perspective than you have ie, they refactored the thinking required to do a job into smaller number of steps. This is what chess players or the mathematicians do.

Also, you may be aiming too high without background knowledge. An object cache layer for SQL? - Who said this was easy?

Automatic code gen via YAML? - Did you write a toy interpreter before?

MIDI over Wi-Fi? Audio destuttering? - I don't even know what those mean, and Im working as a programmer for more than 10 years, and now in a "big" company.

Do you read a lot? Many of the successful people (coding or other fields) do

May be you can start by reading SICP. It certainly cleared a lot of cobwebs for me.

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#43
> The code is generally messy and horrible, rife with race conditions and barely holding together in parts.

Writing robust asynchronous code is very, very hard. My biggest mistake as as a beginner was that in the early days I just made up all my multithreading stuff on the spot. I made a synchronous prototype, and thought, perfect, now I just need to make it asynchronous.

Now I understand that "making it asynchronous" is more work than coming up with the initial implementation, and spend a lot more time on that.

I spend a lot more time on planning in general. I sometimes think about features for weeks or months before I start programming. I'll read all the relevant API docs, search Google to see if other people have implemented similar things before, etc.

Only then, when I'm well-prepared, I actually start coding. And the actual writing is usually pretty quick, but it needed a lot of (invisible) preparation time to get there...

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#44
Work with other people. Preferably a mix of people who seem less/equal/more capable than you are, but if you have to pick one, go with working with people that are above your level. Look at how they work, how they approach problems. Get code reviews from them, and review their code.

Don't get set in your ways (or the ways of those better than you), be willing to try new things and see if it fits your style.

Go slow before you go fast. It took you a month to add copy/paste -- so what? Next time, put in extra effort to try new ways of working, playing with the code, writing invisible support code no one else will see, writing tests perhaps, writing English before code, getting feedback, etc., instead of what I assume your normal approach is of "need to get this out quickly!", and it'll probably take two months, but so what? Eventually you'll get faster as enough experiences have taught you what goes well and what doesn't, but you need to slow down to get those experiences first.

Of course, some people are just super-geniuses. Measuring yourself against them is just a recipe for depression. To quote 'Eliezer:

"...if you have difficulty with any programming concept, you must not be a supergenius. You're just an ordinary genius at best. The sad truth is that there are some people for whom programming comes as naturally as thinking, with code formed as easily as thoughts; and if it takes an effort to understand any aspect of programming, you have just learned that you are not one of those people. Alas."

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#45

Write more code. Learn different languages. Reinvent wheels. Stop following the herd. Most of the people who's code you're admiring have been blazing their own trails for decades. There are no short cuts to experience. Good luck!

This is not the answer. Write code with careful attention. The OP has written at least 30kloc, this is more than enough.

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#47
Actually typing code doesn't take much time. Understanding the problem is the difficult bit.

If these developers are already familar with an area (perhaps even implemented it once or twice before), they can do it very quickly. Or have an office/community of people who have, or seen other solutions, or are good at researching/asking online (eg Larry Page asking for help with his java spider; you now).

Consider: how long would it take you to add cut-and-paste to your next app?

Race conditions are a nightmare for just about everyone. Change your architecture to minimize cross-thread communication, and use queues when you can't avoid it.

APIs also can be a nightmare, difficult to understand, don't do what you need, under-documented and of course have their own bugs and required workarounds.

Finally, if you're still spending too much time debugging, you might need to change your approach in other ways. e.g. code only a bit at a time, testing it immediately, so you know what has introduced the bug; write modules that you understand, so once they are debugged, you don't have to worry about them; unit tests can help but aren't essential. It can be helpful to trace through their source code, so you know what's happening.

If you understand what you're doing, bugs are usually easy to diagnose and fix. It's gaining the understanding that takes the time - and, I would claim, is programming.

Maybe there are programmers who, due to prior experience, concentration powers, talent, memory or raw intelligence, are ten times faster than you (or more!). That shouldn't discourage you from creating something worthwhile. Time spent doesn't alter its worth. Provided it doesn't take too long to complete, does this pride in competitive efficiency really matter?

BTW: Worth, popularity and usefulness are functions of the problem solved - not of the solution. A polished solution to a problem no one cares about has doesn't help anyone nor get much attention.

Whereas an ugly solution to a huge problem will change the world. Even mathematicians and theoretical physicists sometimes start with inelegant solutions, though they get polished over time.

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#48
Hi

I just realized, I'm pretty sure I'm just passing my 40th anniversary of programming this month. Jeez I feel old.

How I made it this far I have no idea, but here I am still plugging away.

My eyes are going, I get tired easily, and my productivity is a hundredth of what it once was...

I look around here and don't know what half of the posts are even about most of the time :-) In supposed to keep up with recurrent neural networks, the language of the month, algorithms research, which HTML template framework is or is not in vogue, whatever...

Over the years I've written a couple of books, built some pretty cool shit and had the pleasure to work with some of the best, but you know I'm really pretty damn dumb, and the only thing that has saved me is persistence.

I've felt like you many many times on occasion over the years.

Computer Science is a huge subject, and growing by the day, immeasurably larger than when I started. There is no way to keep up in all avenues... and that is fine.

It's pretty normal and healthy to have a bit of a low self esteem about our work as software engineers because it is literally true that every piece of work can be better. Please try not to take that attitude a bit too far though.

You know, I got into this because when I was a kid I wanted to understand how computers work. They were a magical box of wires to me and still are.

I wrote code for fun, my own personal pleasure, and the hope that along the way maybe some of it is of some use to someone else. Maybe even make them smile. That's what drives me and keeps me going.

I think my advice is just program because you enjoy it. Everything else will come.

Financial reward is a side effect, not a cause.

There is no huge race here. Programming is a very personal creative past time that takes an incredible amount of effort for all of us and a lot of patience.

I know it might seem at times looking around hacker news that everyone is way ahead. I can understand that, it's a pretty elite set out here. But... I think deep down, the dirty little secret is everyone feels a bit crap compared to everyone else on here more often than we all let on. Fake it 'til you make it. ;)

Like others said, you have so much to be proud of. Shipping multiple projects on iOS, wow!

The fact you are even looking into audio algorithms and things like MIDI over WiFi is great! Sounds like a lot of specialist knowledge you are building there. I'm impressed!

Maybe one pointer. Step back and stop, take some time and think about the machine instead of the problem at hand. I say that because you mention race conditions. Understanding why they are occurring will be of enormous help. Then when you figure it out, explain it to someone else.

But meh, stop whinning, It takes me weeks to do what I could once do in an afternoon :)

You are doing great.

Keep it up man, it's a really fun road.

Nice you are here.. let it flow.

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#49
post #11

For what it's worth, you're feeling the same combination of awe and doubt that grips almost any creative practitioner at some point. Writers realize that there are other people who can write an extremely well-structured, gripping novel in a matter of months. Artists see their colleagues do live drawing and suddenly understand that something that is painful and difficult for them comes easy for these other people. (I…

Double thumbs up on this!

Re: Ask HN: Maybe I kind of suck as a programmer – how do I supercharge my work?

#50
post #21

Do you know when some naive people claim that build a "simple CRUD app" is easy, but a OS or a Database engine or a Game engine or Language or Super-Cool-Algo_performace-magnificence or Super-Science-thingy is hard? All of them are super-wrong. All of them are long, hard projects. All of them requiere specific skills, that maybe are hard to know because you don't find much info about how do them (for example, I haven…

I'm not extremely experienced, but it's hard not to agree here. I work with neural networks primarily, but I've had to start learning working with JS for interactive visualization. In short, compared to neural networks, it's a giant nightmare.
Post reply on HN