Hello everybody!
TLDR: Sorry for OT. Long-time Linux geek and hobby programmer wants
to improve his coding skills. What's most important: project
planing, algorithms and data structures, contributing to FOSS, web
development, learning other languages or something else?
Sorry for posting such a (long) off-topic question, which even is
partly even more about psychology, than about technology. But I'm
mostly using Python and Bash for programming and am reading this
mailing list/newsgroup for many years now, and hope it's Ok (feel
free to direct me somewhere more appropriate, as long it's an
equally helpful and friendly place).
I'm looking for a way (*the* way, ie. the "BEST(tm)" way) to improve
my coding skills. While I'm a quite hard-core computer geek since 25
years and a really good (hobbyist) Linux-SOHO-Admin, my programming
skills are less than sub-par. I wish to change that and become at
least am average hobby-programmer. I'm an excellent autodidact and
in fact, all what I know about computers is completely self-taught.
Now, the problem is, that I'm 41 years old now, have a day job
(which hasn't much to do with advanced computing stuff), friends and
all that. There is little time left for this undertaking (something
like 5 - 10 hours per week), so I'm looking for the most efficient
ways to do this.
I identify the following problems which could be worth improving:
- I never sit down and plan anything with pencil and paper,
flowcharts, UML or anything else. I just fire up Vim and start
typing. That works (albeit slowly) for simple programs, but as soon
as the project becomes a little more complex the parts and
components don't match well and I need to botch something together
to somehow make it work. And in the resulting mess I lose the interest.
- I never learned algorithms and data structures. I know *what*
(linked) lists, dicts, arrays, structs, and trees are; what binary
search or bubble-sort is, but I never really studied them, let alone
implemented them for educative purposes.
- When it comes to coding, I'm heavily shy and unsure. I really know
my stuff when it's about Linux-SOHO-Administration, but when trying
to contribute to FOSS projects I always hesitate for several reasons
(somehow I never find those low-hanging fruits that everybody talks
about; either it's super-easy or to difficult.)
- For my day job (which is absolutely not my dream job) it would be
quite useful to know web design/development, especially WordPress
stuff. But web programming always feel like being trapped in a
mangrove jungle, with all those browser-specialties, different and
incompatible JS-engines, PHP versions and all that. I'm almost never
in the mood to learn web development.
- Beside Python and Bash -- which I both know rather well (for a
hobbyist at least) -- I only know a little C, some LUA and a tiny
bit of Scheme.
- I'm very hard to motivate, when the issue or topic doesn't
interest me much. I know some tricks to increase my motivation in
such cases, but don't use them enough.
What do you think, which of the problems would be most important to
overcome? What would be the most efficient way for improving my
general programming skills? Do you have any other suggestions or tips?
Much thanks for your time!
Mirko
--
https://mail.python.org/mailman/listinfo/python-list