

Ask HN: What do you do to become a better software developer? - yijinsei


======
makecheck
Learn multiple programming languages, so that you are in a better position to
use the one that is most suited to a given task. This also exposes you to new
ways of thinking...some languages aren't nearly as good at expressing certain
concepts as other languages.

The ability to "glue" is a related skill. One type of glue is inter-process
communication and shell scripting, allowing you to tie small programs in
multiple languages together. Another type of glue is a generator tool like
SWIG or Cython, where a single large program can take advantage of a high-
level language and a low-level language instead of being confined to one
suboptimal language.

~~~
yijinsei
Thanks for your recommendation! I came from the standard OO background but
after reading "Coder at work". I am quite inspired to learn Haskel and Erlang

------
ericHosick
Not in any order:

Learn to do more than just write software. In fact, learning how to minimize
source code is a good start (really source code is bad like crossing streams
bad).

Learn how to read and leverage off of existing, hopefully open source,
resources.

Learn how to design away problems instead of coding a solution for them.

Learn to keep things simple.

Learn to design/mockup and get feedback (UX, etc.) on your solutions before
coding them.

Did I mention the try not to write code part?

~~~
yijinsei
Emm... but why not write codes? I think, for example, code down algorithm is
both good to understand the practical side of comp sci as well as a better way
to remember algorithm.

~~~
ericHosick
Every time you write code you have to/should: Define requirements for it,
define tests for it, continually run regression tests, design it, implement
it, debug it, peer review it, etc. All of this is done to solve some problem
in a specific domain. That is a lot of work when all you want to do is add
some small feature to your overall software solution.

In software development communities, people are now able to pull from the
works of others and build on it. Let's take the Rails community as an example.
Many of the features I need in a software program have already been written
and available for me. I need an SMS system? Done for me already. User
authentication? Done. Persistence? Done.

One way of becoming a good software developer is to become better at taking
existing solutions and integrating them into your final software solution.
This should involve as little source code as possible.

------
kat
Personally I learn best from others.Two heads are always better than one, and
it keeps me engaged with the material.

Ask your senior co-workers for help, or even your peers. I've learned a lot
over code-reviews, whether its a sit down formal affair or a 5 minute, let-me-
run-this-past-you sanity check.

------
StudyAnimal
Practice, learn from others. Don't spend more time reading than coding, but a
couple of books with good tips include "The Pragmatic Programmer" and
"Apprenticeship Patterns"

Also going to dojos and doing katas.

~~~
yijinsei
I guess I prone to the problem of reading more than i code. Got ton of e books
from the recommendation at Stackoverflow. Think i should inspire myself to
code 10,000 hrs

------
nreece
Write lots of "bad" code. Read lots of "bad" code. Fix lots of "bad" code.

In essence, fix lots of bugs.

