Live data from Hacker News

How do I know if I'm good at programming?

danielslater.net

51–60 of 153 posts

Re: How do I know if I'm good at programming?

#52
One moment he says he asks a candidate to program something he could never have foreseen, another moment he says the candidate should have been planning for it.

What.

There is one rule I try to go back to, especially when work starts to pile up and things fall by the wayside. YAGNI.

Re: How do I know if I'm good at programming?

#53
post #50
post #35

"Programming" is easy. You pick a language, learn a set of rules, and over time learn how to tell the machine what you want it to do in that language fairly well. Software development is hard. Unlike many other building tasks that humans run into, software is rarely "done". Launch of software for most of us means the code we've written has just been promoted to a point where now it's important, and will likely be wha…

Do we need to remember the distinction between type I and type II programmers? it sounds like we do. what you described are the type II variant. (and there are a lot more of them). type I = kernels, database query engine/optimizers, compiler internals. type II = glue libraries together with a high level language to solve business goals. type II often rely on type I's work.

Is that like diabetes?

Re: How do I know if I'm good at programming?

#56
I don't think there can be an absolute measure of how good of a programmer one is; it is a function of how well acquainted one is with the problem at hand.

A problem is not only defined by stuff like the core routines of the program, but also everything surrounding it, like the structure of the code and of the program as a whole, the environment the program is supposed to be running in, and how to collaborate or manage the other people who are working on the program. Though at this point it's probably better to use a broader term like "software engineer".

A programmer who has enough experience across the whole stack for a certain problem is going to be able to deliver good, readable and efficient code in a timely fashion.

Re: How do I know if I'm good at programming?

#57

Depends upon what is programming? I think it's more like painting. Are you good at painting? How can we define it? If you know to hold a brush you are probably a painter. Are the best artists that get paid more? Or is the ones that are at the right place at the right time? Back to programming, I feel that web development gets more credit, and as a web developer I can say that most of the development is just boilerpla…

>as a web developer I can say that most of the development is just boilerplate configuration

Um no.. what boilerplate project provides universal data management, business logic, and performance optimization that your project needs?

Re: How do I know if I'm good at programming?

#58
post #40

I think there are different ways to be a good programmer, beyond basic intelligence and diligence. In security and high-availability related environments – where I've spent most of my time – it is important that you validate all ins and outs, system and function returns, check if writes succeed, in short, not unlike a chess player, to be able to fit all possible moves and scenarios that could go wrong inside your hea…

> Universities focus too much on mathematical formulas in my opinion; real systems are not clean and simple like a math function with few variabes.

How many variables your functions consume depends on how much you split them up, although you'll of course end up with thousands of functions for a real application, if they each consume ~3 arguments. So, in other words, the limitation is to what degree your language enables you to split up your application in tiny, obviously simple fragments.

Mathematical functions can describe anything. Haskell consists of mathematical functions, and is Turing-complete, and because of its purity makes it easy to split up your functions into tiny ones (or at least sufficiently small).

For example, this[1] module is a Bitcoin payment channel server I'm writing in Haskell. The module describes, mostly at the type-level, three different Bitcoin networks (live, test, test-derive), and presents an interface to the Bitcoin network, which either fetches information from the Blockchain or deterministically derives test transactions.

Everything can be split up into tiny pieces like this, it just takes time, as the purity prevents you from utilizing loopholes that later turn out to be unmaintainable. It forces you to understand the essence of what you're trying to describe, because otherwise you can't capture all the invariants properly without too much duplicate code.

[1] https://github.com/runeksvendsen/rbpcp-handler/blob/master/s...

Re: How do I know if I'm good at programming?

#59

There are 2 types of “good” programmers, who both think the other type is useless. The first is the “rockstar” developer type who is great at prototyping, hitting deadlines no matter what and delivering functionality, albeit full of bugs. They will write 80% of the code and will drive the support team up the wall by breaking the build, causing customer issues in production, security holes and basically seriously degr…

Full of bugs (non working) functionality that constantly causes customer issues is not considered "rockstar". It might appear that way up front, but the lasting reputation will be from the success (or not) of the final product, including whatever post-deadline work is done.

Re: How do I know if I'm good at programming?

#60
The best programmer is the one who can solve the problem effectively and efficiently without even touching the keyboard.

You don't have to be "good". You have to solve the right problem efficiently. Find the right problem and be the solution. If you need to write a program, make an easy one. Easy to use and easy to maintain. You'll get what that means after a few years of maintaining. Nobody ever cares if you're a "good programmer" or how you feel about yourself.

Post reply on HN