Live data from Hacker News

Programming: Doing it more vs. doing it better

kevinmartinjose.com

31–40 of 223 posts

Re: Programming: Doing it more vs. doing it better

#31

> Three years later, I am still very much the apprentice. Well, three years is really not a lot when it comes to developing an intuition. Just enough to grasp some basics. > a writer is someone for whom writing is more difficult than it is for other people Yeah, I seem to recall Douglas Adams saying that the easier it is to read a text, the harder it was to write it. At the beginning of my career I was constantly bei…

It might just be one of those universal truths: you need to understand something very well to explain how it works in simple terms. Or as some smart person once said, "brevity is the soul of wit."

The character who speaks that line (Polonius) says so in the midst of a rambling and contradictory monologue, though we can certainly give Shakespeare credit for coining it.

Re: Programming: Doing it more vs. doing it better

#32
post #28
post #7

I use one rule: If it's easy to remove, then it's fine. Because only then, i don't fear refactoring later. So i'll get my goal: Easy refactoring for fun and profit. Refactoring is often underrated. Actually i learnt more from refactoring rather than "just make it work perfectly since day 1.

Indeed. I love it when the amount of money I make is tied to the quality of my code somehow. Easy to modify, easy to repurpose, easy to replace. These often make it possible to serve customers better -> more $$$ It's why I can't really take a regular job. There is no relationship between the quality of my work and what I get paid.

It's not much about relationship with $$$.

It's about how we could improve our life as a developer in general.

Re: Programming: Doing it more vs. doing it better

#33
post #8

Someone who's been programming for three years is still a beginner, even though based on what he wrote here, Kevin is almost certainly a lot better than I was when I'd been programming for only three years. I do find that a lot of programming stuff that used to be hard is easier for me now that I've been progrmaming for 38 years. But that doesn't mean I spend all my time doing things I can do without thinking, and it…

Someone programming for 3 yrs is not a beginner, There are people programming at 3 yrs that are experts and will run circles around you and your 38 years. Some people really have the talent and put in the work to get good. In 2019, the mentorship is available via means of books, blogs, MOOC, youtube videos, conferences. What some folks can achieve in 3 yrs these days is really unbelievable. P/S, I have been hacking a…

I can say from knowing Kragen that there are very few mortals who could run circles around him after 3 years of programming. Trying to imagine what they might be like, Christopher Strachey comes to mind -- it seems he impressed Alan Turing with his first program: https://history.computer.org/pioneers/strachey.html

Re: Programming: Doing it more vs. doing it better

#34
post #28

Earlier quoted context omitted.

Indeed. I love it when the amount of money I make is tied to the quality of my code somehow. Easy to modify, easy to repurpose, easy to replace. These often make it possible to serve customers better -> more $$$ It's why I can't really take a regular job. There is no relationship between the quality of my work and what I get paid.

It's not much about relationship with $$$. It's about how we could improve our life as a developer in general.

I guess we are motivated by different things.

Re: Programming: Doing it more vs. doing it better

#35
post #13

Earlier quoted context omitted.

Someone programming for 3 yrs is not a beginner, There are people programming at 3 yrs that are experts and will run circles around you and your 38 years. Some people really have the talent and put in the work to get good. In 2019, the mentorship is available via means of books, blogs, MOOC, youtube videos, conferences. What some folks can achieve in 3 yrs these days is really unbelievable. P/S, I have been hacking a…

Interesting view. I'm learning, with about 8 months worth of knowledge and experience, and this is useful. Did you notice any skills/traits in those people who were "unbelievable" in those 3 years? For instance, did they do "test driven development"? Also, did they keep good log habits?

I think OP has provided good context. But I will try to answer the question you _really_ seem to be asking: unfortunately there is no shortcut.

There are things you can do that will, like the author said, give you faster feedback and thus let you get better _if_ you use that feedback. You might write a lot of code and read a lot of code and internalize good patterns. Eventually you will have enough experience and the confidence that comes with it, to take on bigger and bigger challenges. I don’t know what happens after that for I am still in that stage. But I have observed more experienced programmers and one thing they’re very god at is _really reading_ others’ code thoroughly and being able to spot better ways of doing things (which I imagine is through experience) and also thinking a little bit in the future rather than simply the assigned task. e.g. if assigned to create a new system, they won’t just follow the design specs blindly, but will question the design choices rigorously, helping improve the design a lot, and then implement something a tiny bit better than the eventual design.

Maybe I’m making it a bigger deal than it is, but I’ve worked closely with senior engineers and it’s _always_ a fascinating experience. They will question your design and code very very deeply but all of them will be good questions and will help you either improve your design or not add spurious code.

Re: Programming: Doing it more vs. doing it better

#36
post #8

Someone who's been programming for three years is still a beginner, even though based on what he wrote here, Kevin is almost certainly a lot better than I was when I'd been programming for only three years. I do find that a lot of programming stuff that used to be hard is easier for me now that I've been progrmaming for 38 years. But that doesn't mean I spend all my time doing things I can do without thinking, and it…

Someone programming for 3 yrs is not a beginner, There are people programming at 3 yrs that are experts and will run circles around you and your 38 years. Some people really have the talent and put in the work to get good. In 2019, the mentorship is available via means of books, blogs, MOOC, youtube videos, conferences. What some folks can achieve in 3 yrs these days is really unbelievable. P/S, I have been hacking a…

I’m a little skeptical of 3 years making an expert, but I’ll stipulate it’s certainly possible for the reasons you mentioned.

I’m basically an old fart who has learned and forgotten a lot of stuff.

It really depends on what you need. I think the 3 year programmer will struggle when moving out of their experience.

The person with decades of practice have faced and failed at a dozen core cs problems. They’ll probably fail, but they can explain their state at any given moment.

The 3 year person will fail or fail and self destruct. It’s bad for everyone involved.

Every once in a while your lottery ticket wins. That has nothing to do with experience. A kid can win and good for them.

I guess my biased opinion is, you get a small advantage with people with our track records.

Newbs can do amazing stuff. Old farts, like us, can also do amazing stuff. You can’t know up front which to pick.

I dunno man, be good to your coworkers. They often end up being amazing.

Re: Programming: Doing it more vs. doing it better

#37
> Three years later, I am still very much the apprentice.

I used to think I’d get to the point where I could just sit down and breathe out perfect code, but that doesn’t happen. As I’ve thought about the reasons why, I came up with the following reasons:

1. Writing code is an act of inventing. If what I’m trying to build already existed, I could just go buy it and save myself a lot of time and money. It doesn’t exist though. I’m being paid to create something new and unique. This requires thought, trial and error, and multiple iterations to get right.

2. The software development landscape is not a static one. I used to build commercial buildings with my dad. Once I learned that studs should be set at 16” on center, how to measure and cut complex angles, and how to finish cement, I never had to learn those things again. They were pretty much static and I got to where I could breathe out a plumbed wall without thinking about it. In the software industry, developers are constantly having to learn new things. New languages become popular, companies jump on things like Kubernetes because everyone else is, the JavaScript community cranks out new libraries and frameworks on almost a daily basis. While the fundamentals of recursion, looping, and conditionals remain the same, the syntax, idioms, and best practices are constantly shifting. After 30 years of programming, I don’t think I’ll ever stop being an apprentice in at least some aspects of my career.

Re: Programming: Doing it more vs. doing it better

#38
Programming is simple. Domains and interfaces are difficult. People over engineer stuff. People like to think they found the key to hidden wisdom. I believe I just summed up 90% of the difficulty with programming.

Just for the record procedural programming and functional programming are the only two styles of programming to me that make sense. Procedural because its how the machine model works and functional because its how a mathematical description of computation works. WTF is OOP (how the over active imagination of a child works I would reckon).

Re: Programming: Doing it more vs. doing it better

#39
post #28
post #7

I use one rule: If it's easy to remove, then it's fine. Because only then, i don't fear refactoring later. So i'll get my goal: Easy refactoring for fun and profit. Refactoring is often underrated. Actually i learnt more from refactoring rather than "just make it work perfectly since day 1.

Indeed. I love it when the amount of money I make is tied to the quality of my code somehow. Easy to modify, easy to repurpose, easy to replace. These often make it possible to serve customers better -> more $$$ It's why I can't really take a regular job. There is no relationship between the quality of my work and what I get paid.

In my experience, even programmers are poor judges of good quality of code. Usually the criteria they are using to evaluate quality is: "Can I do what I want to do quickly?" This tends to boil down pretty quickly to "Is the code similar to code I've worked on recently?" Understanding the long term consequences of your actions is pretty tough and the ground keeps shifting under your feet. In that environment, having someone else evaluate your performance is really difficult. A manager who isn't actually working on the same code you are working on has absolutely no chance.

Lately, however, I've been trying to shift my approach to design when doing paid work: I try to make things that seem like they should be easy, easy. This is quite challenging in itself, but it's subtly different than trying to write high quality code. My goal is not so much highest possible throughput, or even programming ease. It's to make the process of programming less surprising to the paying customer. Of course, most paying customers have expectations far above what I could possibly achieve, but I see this has allowing myself room to improve.

I believe that if you are able to consistently achieve a result of "projects with this person tend to have fewer problems than projects without this person", it will translate into more $$$.

Re: Programming: Doing it more vs. doing it better

#40
post #3

I suspect there may be better ways to practice, rather than just doing it more? Some people put effort into memorization of commonly used idioms. Here's another dubious analogy: when learning music, you do need to practice, but playing a song all the way through a bunch of times is a rather inefficient way to practice it.

Other way of doing it more, is not just doing the same/similar thing again and again, but writing/reading large amount of very different programs. One day you do web app, other day you write a kernel driver, third day you write a scraping app, fourth day you write a tunel driver to get networking over USB, fifth day you reverse engineer some random piece of HW you have laying around and write alternative firmware for it to teach it new things, and so on. (it may not be days :))

Each of these things will branch out into different areas. You may need to write a text parser. You may need to design a USB protocol to relay packets. You may need to learn a processor architecture, calling convention, assembler mnemonics.

Over time you'll gain a lot of knowledge and you may be able to cross-apply plenty of it accross the domain boundaries.

Post reply on HN