NB: I'm not a native English speaker, and this post was initially written in Russian, so there easily could be errors in phrasing: please, tell me about these errors (you can find my email and twitter below).

I collected twenty-one ideas for Software Developer: they contradict each other, and sometimes partially restate the same thing, but I suggest them as a starting point for your own thinking about the craft. If there is at least one idea that strucks you and forces you to think, that's great. Remember, they are not the Greatest Truths, just ideas.

  1. The job of the developer is not to 'write code', the job is to solve business problems, and often 'playing with a new framework' doesn't solve business problem.
  2. We work with people and only sometimes write code, so relationships are an important part of the job.
  3. Developers are people too, and they are affected by the same cognitive errors as everyone else. Read about biases, FAE, and Kahneman's book in particular.
  4. Every new framework appears for the reason that we do not have ideal solution for the problems that frontend developer has to solve. Every new successful framework is a step in interesting direction, so think about 'what does this framework/library change about my work'
  5. Developers do not 'just write code', but participate in development processes. So if the company is using Agile, you have to treat Agile seriously, or at least with respect.
  6. Code review is an important part of software development process. You can't be good software developer if your code review is negligent.
  7. As developers, we bear responsibility for the code we deploy. And we bear moral responsibility as well. Don't do unethical stuff.
  8. Users are people. Our products and our failures could directly affect their lives, think about consequences of your actions.
  9. People differ and people think differently: sometimes stuff we think as difficult seems easy to business people. That is a conflict that we have to solve, not avoid.
  10. Bear responsibility for your deadlines. If you can't make it, you must renegotiate.
  11. Tasks have two kinds of complexity, inner and outer complexities. You can't avoid the first one, it is in the task itself; the second we create by making strange decisions in architecture and reinventing the wheel. Watch out for situations where outer complexity trumps the inner complexity.
  12. When developer chooses the easy solution over the good one, while writing code or architecting the system, he creates technical debt. Someday the bank would call.
  13. Code written by other people almost always seems uncomprehensible or poorly written, but the reason is not always that the code is indeed poorly written. And sometimes these other people are we from the past.
  14. Sometimes task can be solved without changing the code at all.
  15. Courage to change that needs to be changed, acceptance of things that could not be changed, and wisdom to tell the difference.
  16. Sometimes things that are trivial for developers are extremely valuable for business. That is a good position, don't run away from it.
  17. Rare company is interested in your growth. If the company wasn't satisfied by your current level, they would not hire you in the first place.
  18. Conferences and meetups are worthwhile because of the people that are there, and only after that because of the talks.
  19. Interview is a game for two, not only the company looks at you, but you look at the company as well.
  20. We choose this profession because it is interesting to us, but we're paid because we bring value. Read about cost centers and profit centers and understand where do you belong now.
  21. As a freelancer, you're hired for the skills the client lacks: she can't tell you when your code is bad, and when she points out errors, she explains it in her own language.

You can email your thoughts on this, hmm, thoughts list at mt@marinin.xyz; or ping me at twitter, I'm @marinintim.