Live data from Hacker News

How I Became a Better Programmer

jlongster.com

61–70 of 125 posts

Re: How I Became a Better Programmer

#61

My advice is that whenever you become confident/comfortable in your current work, that's when you have to change team or company. Whenever it gets easy, it means you have stopped learning. I agree with what was said about tools; it doesn't make you a better programmer to know all the latest ES6 features and frameworks. What makes you a better programmer is your ability to adapt and customize your approach to differen…

> confident/comfortable in your current work, that's when you have to change team or company. > I usually stay 6 months to 1.5 years each on average That's right around the point where you can increase your scope and responsibility within the team. On the medium-large sized projects I work on you won't be making any major changes until the 12-18month mark. Id say it's a good strategy for a junior dev but very limitin…

On the medium-large sized projects I work on you won't be making any major changes until the 12-18month mark.

It seems like that'd exclude anyone who wants to make a name for themselves, which usually means excluding all the best people.

Re: How I Became a Better Programmer

#62

Earlier quoted context omitted.

Responding to your last two paragraphs... James's suggestions about ignoring code form, DRY, etc resonate with me because I'm someone who is usually inclined to spend too much time on those things. I consciously try to reduce the effort I put into those things and instead focus on trying to get the code to actually do something!

The time to clean up the code is when it already does what it should. That is: Make it pretty and readable and DRY once the code works. Until then my code can have several ugly and improvised things I've left for later.

The problem is that once the code works there will be external pressure to move on to fix the next bug and add the next feature.

Re: How I Became a Better Programmer

#63

Earlier quoted context omitted.

The time to clean up the code is when it already does what it should. That is: Make it pretty and readable and DRY once the code works. Until then my code can have several ugly and improvised things I've left for later.

The problem is that once the code works there will be external pressure to move on to fix the next bug and add the next feature.

Then don't flag it as ready until you have been through your working code with just some sort of readability/architectural rework focus.

Adhering just somewhat to principles from the beginning shouldn't make this too time consuming.

Re: How I Became a Better Programmer

#64

Earlier quoted context omitted.

> confident/comfortable in your current work, that's when you have to change team or company. > I usually stay 6 months to 1.5 years each on average That's right around the point where you can increase your scope and responsibility within the team. On the medium-large sized projects I work on you won't be making any major changes until the 12-18month mark. Id say it's a good strategy for a junior dev but very limitin…

On the medium-large sized projects I work on you won't be making any major changes until the 12-18month mark. It seems like that'd exclude anyone who wants to make a name for themselves, which usually means excluding all the best people.

What do you mean?

The two best developers I know have spent 12 years at Microsoft and 6 years at Google respectively.

What makes you think you need to switch jobs every 12-18 months to make a name for yourself?

And what makes you think the best developers care about making a name for themselves?

Re: How I Became a Better Programmer

#67

There's a lot of value here, but I have to raise concerns about a few things. First, the title: written in the past tense makes it seem like he believes the journey is complete. The article itself doesn't convey that message, fortunately. But I think it's worth noting that a critical skill for a professional is constant education - don't be satisfied that you're already "better", get better every day. I also strongly…

My interpretation was more like "do not focus too much on the form of your code, while you are figuring things out". Which I think is decent advice. The classic line "Make It Work, Make It Right, Make It Fast"[1] may have communicated this concept in a better way (with each step explained). [1] http://wiki.c2.com/?MakeItWorkMakeItRightMakeItFast

Yes. There is also "wrong abstraction is worse than code duplication".

Re: How I Became a Better Programmer

#68
> Find people who inspire you, but don't idolize them.

Luckily this is rather easy in the JavaScript world, haha.

Many good devs have bad attitudes, which makes it a bit harder for junior devs to value their skills, but it prevents them from being idolized too much.

Also, I always think it's a good sign if devs I look up to said stuff I found bad, so I know I still see them as humans and not as infailable idols.

> Don't devalue your work

This is a hard one.

On the one hand, if you work with too much non-technical people, they tend to overvalue your work. I met rather much mediocre devs who got sold to me by managers as the best devs ever. They simply always "delivered", which some devs don't. But finishing your work is a minimum in my eyes and not the "best thing ever".

On the other hand, if you only work with highly skilled devs, you could start to think you can't do anything right. In the end you got skills worth mad money to non-technical people, but you think you wouldn't get a job ever again if you lose your current one.

> Don't feel pressured to work all the time.

This is hard, especially for us devs who think of programming as their hobby.

I started freelancing 2 years ago and got about 4 weeks holidays in this time. I worked on many weekends. Not because of "crunch time" but because I liked what I was doing, but I found out it really takes its toll :\

Now I try to do 3-6 month long projects and 1 month holiday after every project. Also, only weekend work on "crunch time".

> Ignore fluff.

This is really hard, because fluff is fun.

I started with JavaScript by reading "JavaScript: The Good Parts" and "Pro JavaScript Techniques" and I learned a lot of pit-falls before I went in my first big JavaScript project.

But I came at the price of fluff everywhere.

It gives me a nice feeling reading about other devs who just don't get async/await, observables or destructuring. Not because I think they are idiots, but because I think "This seems to be hard and I already know about it!"

But yes, I probably poured days into learning observables and probably can't use them in my next projects.

> Dig into past research.

This is a nice thing, because most people don't do this.

I got a big book on HCI research of the last 50 years or so and I always find nice solutions for my problems there. Since many of the web and mobile problems have already been solved with experiments on research devices that never went mainstream.

> Take on big projects. Get uncomfortable.

Also: Let your life depend on it ;)

If you need to pay the rent with a project, you're much more inclined to "really" finish the thing and "really" learn the hard parts you need to understand before you can implement the solutions, which you need to "ship".

(Okay, letting your life depend on it isn't that good of an idea, but if money is involved it's often easier for me to walk to the end. You always should have enough money backed up to survive a failed project or two, so you can also logically justify to leave your comfort zone)

Re: How I Became a Better Programmer

#69

Earlier quoted context omitted.

On the medium-large sized projects I work on you won't be making any major changes until the 12-18month mark. It seems like that'd exclude anyone who wants to make a name for themselves, which usually means excluding all the best people.

What do you mean? The two best developers I know have spent 12 years at Microsoft and 6 years at Google respectively. What makes you think you need to switch jobs every 12-18 months to make a name for yourself? And what makes you think the best developers care about making a name for themselves?

We may be using different definitions of "best." In some companies, the best developers are the ones who keep their heads down, do what their told, and don't try to question authority, decisions, or direction. These traits are highly desirable precisely because people reliably do what their told.

In other companies, creativity is considered an asset. Most of the important work done at my previous company was largely completed by one very productive intern, which was surprising to discover. And at each of the companies I've worked at, I was given freedom to determine direction and implementation of the projects I was given, as long as the results were excellent.

Both approaches have merit, but if I were to bet on one, I'd choose the company that's liberal in granting freedoms but also willing to fire someone if they turn out not to be able to deliver. This has generally been a recipe for success at most startups, for example.

It's more cutthroat, but in a different way: the former is cutthroat politicking, whereas the latter is based entirely on a developer's capabilities. I'd rather be in an environment that rewards effectiveness rather than alliances. And when your effectiveness can only be demonstrated within the very narrow scope and boundaries set by your boss, then people who care about being effective tend to migrate elsewhere.

Most of this can be summed up as "The idea of paying your dues is anachronistic."

Re: How I Became a Better Programmer

#70
" (This also applies to the DRY principle. Don't worry about it so much. Feel free to duplicate.)"

The sort of advice followed by programmers when building systems that will accumulate heavy technical debt that someone else will eventually have to sort out.

You will not become a better programmer this way.

Post reply on HN