Ask HN: What do you wish you had learned earlier in your programming career? - andrewstuart
======
itamarst
1\. Negotiate your salary.

2\. If you're new in a programming language and you're deploying to production
for an important customer, make sure you get a code review first.

3\. Writing software isn't the important part, solving problems is the
important part. ([https://codewithoutrules.com/2017/07/10/stop-writing-
softwar...](https://codewithoutrules.com/2017/07/10/stop-writing-software/))

4\. Productivity is about doing _less_ work, by avoiding waste. It took a
while to get all the related skills here, and most of them don't have to do
with coding as such. ([https://codewithoutrules.com/2017/10/04/technical-
skills-pro...](https://codewithoutrules.com/2017/10/04/technical-skills-
productive/))

5\. Testing comes in different forms, each with its own purpose. Spent years
getting to a place where I could articulate how to choose, and then I gave
this talk about it:
[https://www.youtube.com/watch?v=Vaq_e7qUA-4&feature=youtu.be...](https://www.youtube.com/watch?v=Vaq_e7qUA-4&feature=youtu.be&t=63s)

------
creatornator
At the end of the day, we write code not for its own sake, but to solve
problems in real life. After realizing this I abandoned several pet projects
that were basically going nowhere and only taking up time--they were not
designed to solve a problem.

Also if you don't start something the right way, it is quite difficult to fix
it. I spend more time now thinking about appropriate data structures, project
layouts, etc. before I jump in.

------
AnimalMuppet
People matter. It matters that you are factually correct, but how you treat
people also matters. Learn how to treat people with tact and consideration,
even when you disagree with them.

~~~
andrewstuart
Spot on.

Lose the dogmatism.

People remember how you handled a problem, not what the problem was.

Relationships with others are more important than being right about some
technical thing.

------
andrewstuart
How to use a debugger.

That the more time you invest in learning debugging tools, that faster your
overall development process will be.

------
flukus
Not to minimize lines of code at all cost, repetitive but clear code is better
than clever code with many abstractions.

Design user interfaces around workflows not database tables.

Unix. Sed, grep, awk, bash and more. Learn them all well.

