Live data from Hacker News

What is the most effective thing you did to improve your programming skills?

stackoverflow.com

81–90 of 95 posts

Re: What is the most effective thing you did to improve your programming skills?

#81
post #27

Earlier quoted context omitted.

This is awesome. Do you remember any of the causes of high defect indicators? And why wouldn't you recommend it? Too much work? I made a thing that takes a screenshot every ten seconds while I work and another thing that sticks them in a window with a slider so I can look at them in sequence. Just yesterday I noticed that I had been daydreaming a lot lately. So I made something that would go through the sequence of s…

Yep, I wrote a bunch of C macros to prevent them and use them everywhere: curl http://zedshaw.com/dbg.h The main thing that caused defects was not handling default cases in logic. Things like not filling in the dangling else of an if-statement, not trying to return a value from a function no matter what, and not having a default: in a switch. By always trying to include at least a comment there, or an assert it force…

In most recent C compilers you can turn on warnings for at least missing return values from functions and not having a default: in a switch.

It is good practice to compile C/C++ programs with high warning level, and fix all the warnings before shipping.

Re: What is the most effective thing you did to improve your programming skills?

#84
Read lots of books to understand how expert programmers think about problems. (SO and other sites don't qualify as this as they as they are focused on "How do I do X?" which is a completely different thing -- mostly trivia)

Pair program/code review to learn what you're doing wrong.

Teach it if you want to really know it. PG's idea of writing a book is great, but I've found the interactive nature of hands-on teaching really makes me grok something. Writing, for me, helps me organize my thoughts, but coding is something you never do "perfectly" -- the goal is to solve a problem for real people, not create the perfect mathematical construct -- so I'm much more interested in how different personality styles and moods approach problem-solving in a language more than I am the details of the language itself.

Each of these works at a different level: strategic, quality-control, and tactical. Depending on personality type, folks have a tendency to get hung up on one level or another -- as if learning all the syntax of a language or how to use the IDE is the same as mastery -- but for me I've found I need all of them in equal parts.

Re: What is the most effective thing you did to improve your programming skills?

#85
post #74

Earlier quoted context omitted.

Big design up front? Seems like a lot of your advice flies in the face of prevailing agile principles. What do you think about YAGNI? http://bit.ly/cpbljR (YAGNI Wikipedia article -- apparently HN doesn't like apostrophes in urls.)

Seems like a lot of your advice... I gave no advice. I shared my experience. Take it or leave it. What do you think about YAGNI? Never gave it much thought before. But after reading your referral, let me rephrase the question: "How do you know what you're going to need?" After servicing hundreds of customers, I built a framework that provided what over 90% of had already needed. I figured it was a pretty good bet mos…

The key to your success is the "after servicing hundreds of customers". YAGNI is for the people who try to build the framework first, before they serve any customers.

Re: What is the most effective thing you did to improve your programming skills?

#87
post #15

Earlier quoted context omitted.

Your idea about tracking daily pain points was the most important thing I ever did, as well-- sort of. I tracked, over a one year period, every single defect that made it into production that I had to correct. I did this at the inspiration of a book on continuous improvement I read. I analyzed the underlying causes of the defects, organized them by category, made Pareto charts, and looked at my underlying procedures…

"I tracked, over a one year period, every single defect that made it into production that I had to correct. I did this at the inspiration of a book on continuous improvement I read." Which book?

It was "Improving Software Quality: An Insider's Guide to TQM" from Wiley. A lot of people fear the idea of formalized process, thinking that it is going to saddle them down with the useless baggage of unneeded red tape and forms. It's actually quite the opposite. It's all about keeping processes as simple as possible, even simplifying existing processes.

Re: What is the most effective thing you did to improve your programming skills?

#88
post #66
post #33

Earlier quoted context omitted.

Have you tried delta debugging? http://en.wikipedia.org/wiki/Delta_Debugging

Yes, I have. We used to call it "debugging", but I guess everything has to have a name before the cool kids will use it. However, this wasn't about find a bug but preventing defects by using evidence to retrain my behavior. The approach is to assume nothing, then use simple graphs and data to look for places where you can change how you do stuff to improve your code. It's not hard, just really tedious.

It's automated debugging.

Re: What is the most effective thing you did to improve your programming skills?

#89
Here's what I did to make me better at shipping software (which is slightly different than the question asked.)

I read moneyball (http://en.wikipedia.org/wiki/Moneyball) - a book about using sabremetrics to create a winning baseball team and realized that everything I knew about being a great programmer and creating a great team was wrong.

The key takeaway I took from the book is that the things we think make a great baseball player (such as RBIs and HR) aren't what help win a game. There are better stats, such as on-base percentage.

In the world of software, I correlate between winning a baseball game with shipping software. And I suspect that what we traditionally recognize as strong individual performance isn't really what leads to shipping great software (same as having someone hit a lot of HRs on your team doesn't mean you'll win a lot of games.)

Right now, I suspect that (so-callled) soft skills around communication and time management are the fundamentals stats that are more important. So I've focused heavily on things like personal and team time management, and writing skills.

Re: What is the most effective thing you did to improve your programming skills?

#90
post #11

I wrote build scripts for my projects that tracked: 1. Syntax errors on compile (it was C). 2. Test failures. 3. Time of the run. 4. Lines of code. Then I used R to create graphs and reports that were generated periodically. About once an hour I'd go look at them and see what synax+failure levels were per line of code at that time. I'd then plot this as a run chart and start trying to find causes of my high defect in…

Has anyone made a plugin or anything of that sort which abstracts away the grunt work of using this sort of system? It sounds like a great thing to try out were it not for the opportunity cost of trying it.

Coverity?
Post reply on HN