5 ms·
Iteration speed is magic. The faster I can write and deploy code the more motivated and energized I am to do more of it. Compile time, local source control, one
by DenisM 6y ago
Iteration speed is magic. The faster I can write and deploy code the more motivated and energized I am to do more of it. Compile time, local source control, one-click deployment, phased rollout, monitoring, solid roll-back story, anything that gives you confidence to just roll it out. It's magic, I'm telling you.
Static typing. It's like having a secretary who is doing all the writing, and you only have to think big things. It's a relief.
Higher-level abstractions such as query languages (SQL, LINQ) or markup languages (eh...). Forest for the trees etc. Also DSLs (consult someone with experience first - far too easy to get bogged down).
The most productive way to write software is to borrow something already written. Don't hesitate to buy components from professionals - you're paying for better support, longevity, and less version churn.
- nsilvestri 6y agoIteration speed is momentum. Waiting multiple minutes for code to compile or an environment to boot up kills the momentum, and it takes time to recollect the 7 +/- 2 things I was holding in my brain.
- nlitened 6y agoStatic typing — yet higher lever abstractions that you mention (like SQL or markup languages) are dynamically typed.
- saltypal 6y agoThis is something I'm very curious about! There's a strong meme that SQL is dynamically typed, but it is very much static. ("Compile time" is "prepare time", so it feels dynamic compared to host program compilation, but the vast majority of problems are caught before query execution, and with widespread, better tooling, could be caught at host program compile time too.) Do you call it dynamic because of the delay in getting error feedback, because the RDBMS you use is genuinely loosey-goosey with types, or for another reason?
- nlitened 6y agoA good question. I think I consider “prepare time” not “compile time”, but “run time”, because it happens not at my will on my dev machine, but on demand on client’s machine or production server, and all the types will be inferred only when the program is run.
- DenisM 6y agoI suppose if you had good unit test coverage that would mitigate your particular problem, shifting the errors from production to your dev box. Not a solution to the static typing problem, of course. For my part I use LINQ2SQL and the whole thing becomes statically typed.
- raverbashing 6y ago> Static typing. It's like having a secretary who is doing all the writing, and you only have to think big things. It's a relief. Funny. I see this as exactly the opposite. To me static typing is a bureaucratic delay where you have to tell the computer what it already knows (but thank the deities for "auto" or the walrus operator in Go) and dynamic typing as the computer just doing what you tell it to do without bothering me with trivialities. Yeah, maybe static typing makes the IDEs smart, but I dislike IDEs being "smarter" than compilers, I mean, the compiler should be the smartest one. If your IDE knows x is an int, why can't the compiler know?
- Smaug123 6y agoMaybe the computer can infer the types after you've written a correct program, but if you write down the types up front before you start the implementation, the computer will hold your hand while you implement. It sounds like you haven't used something Hindley-Milner based - I'd recommend giving it a go, so that you can feel what it's like. Much as Typescript gives you incremental typing over JS, so too does type inference give you incremental static specification of the types over the fully inferred program. When you don't need to write down the types, the inference engine gets out of your way; when you want to use the types to constrain the possible programs you could be writing, the inference engine puts up the guardrails to stop you making mistakes.
- DenisM 6y ago> if you write down the types up front before you start the implementation, the computer will hold your hand while you implement. This is exactly it. Thank you.
- Ologn 6y ago> The faster I can write and deploy code the more motivated and energized I am to do more of it. Compile time, local source control, one-click deployment The best programmers I have worked with always pay attention to this. They quickly address any barriers in the way of an easy and simple build.