
A Programming Hobby - mh_
http://www.marco.org/2013/07/12/a-programming-hobby
======
duopixel
I think building stuff is hugely underrated. When I look around most people
are working on stuff that concerns being interfaces to complex systems
(lawyers, doctors, customer service), communication (formal and informal
jounalism, technical writing, making data comprehensible), or management
(making projects happen).

There are, of course, much pleasure in these things, but what I enjoy most is
building and releasing new "stuff" into the world. There is perhaps something
primitive about building articfacts that give you pleasure, enhance your life,
or make you more productive.

~~~
readme
Building things is awesome. It's too bad that the people who get more respect
tend to be managers. Think Jobs vs Woz. I bet a good number of apple users
don't even know who Woz is.

~~~
reeses
To be fair, Woz hasn't had direct involvement with Apple (other than as a
shareholder) in decades. He's definitely not responsible for "new" Apple.

------
zalew
_" In many ways, I always kept my distance a bit, never caring much for
advanced methodologies, studying design patterns, proving algorithms, or
learning cutting-edge languages before they’re stable and practical. I’ve
always written code for the sake of making the product I wanted, not for the
code’s own sake."_

Refreshing to read something like that here on HN, especially when you share
this instrumental approach. If I remember correctly, DHH also said something
along those lines somewhere.

~~~
coolsunglasses
So did Rasmus Lerdorf. Ick.

I prefer a hybrid - choosing to care about the craft and take it seriously,
but make the improvement thereof useful to producing things.

~~~
readme
PHP originally stood for "Personal HomePage tools". My guess is that it was
never meant to be what it is today.

While PHP has some rough edges and language level design flaws, it supports
everything one needs to write structured and well designed code.

This PHP hate shit is just stupid.

Disclaimer: I use python.

~~~
nbouscal
It was definitely never meant to be what it is today, and that's one of the
reasons that most informed people with a choice choose not to use it. It may
support everything one needs to write structured and well designed code in
theory, but it makes it far easier to write poorly structured and poorly
designed code. I've never seen a real-world PHP codebase that wasn't a
disaster.

~~~
JamesArgo
Little known fact, PHP was created by a grad student from Miskatonic
university.

~~~
readme
Linux was created by a student, too.

~~~
coolsunglasses
Google "Miskatonic" so you can be in on the joke.

------
ChuckMcM
Ah self awareness is a curse. I can certainly relate to Marco's and by
reference Matt's struggle.

Early on in life there is the ever present exchange "Hi, I'm Chuck I <foo>"
where <foo> is some tag, some referent, that hopefully is common with the
person you are talking too and that sets up a series of linkages, defines
behaviors and expectations, and can inform on conversations that may or may
not be interesting. When I was in my mid twenties I realized I was saying by
rote "I'm an engineer." And that would then grease the conversation along.

But after a while I had things I did at work, and things I did as a hobby, and
things I was interested in, and had a few awkward sort of exchanges that went
something like "Hi I'm Chuck, I'm an engineer" ... various technical
discussions ... "what do you think of the hypothesis that petroleum is a
biologic process?" ... pause ... "Uh, I thought you were an engineer."

Then once I realized the conversational rut I was in I started just cutting it
off, "Hi, I'm Chuck."

Now that is really funny around introverts since you leave them with no place
to go. And a lot of folks I socialize with are fundamentally introverts. So
that isn't a good conversation starter. :-)

But once you realize its a conversation starter, not a definition of who you
are, you can go back into discovery mode, like "Hi I'm Chuck, I'm curious
about that gizmo you're carrying ..." etc.

And you realize, as Marco and Matt have you want to know "who" you are. I've
decided I'm the equivalent of the 'curiosity' thing you pull out of GLADoS in
Portal.

~~~
dinkumthinkum
Yeah, but is it really that complex? You could "I'm a software engineer" or
"I'm an electrical engineer" and the it doesn't have to go into aquifer
building or whatever. Anyway, I don't really think it matters.

------
31reasons
Programming is to Software Entrepreneurs what Mathematics is to Architects.
Means to an End.

~~~
dinkumthinkum
I think this not true. When you say "Software Entrepreneurs" I feel like you
are thinking of it only as a set of people trying to make quick photo sharing
apps and sell them for a $1B valuation. There is a large amount of software
"entrepreneurism" where programming is more than simply a "means to an end"
... unless we reworked your example as " ... Architecting is to Architectural
firms" ... sure on some level the firm is more interested in getting their
clients separated from their money, but architecture is prime part of it.

~~~
31reasons
When people say Software is eating the world. What does that mean ? Software
is being used as a tool in many different domains to solve problems. I think
people who focus on software development to serve software development is in
the minority.

~~~
dinkumthinkum
It's a cute thing to say is all that really is. It's also fun to say that a "A
lawyer's job is winning cases for their clients. Using the knowledge of the
law is simply a means to an end." But the reality is two, the goal and so-
called "means" to achieve the goal are closer aligned than you suggest.

Sure, OK, perhaps for a very simple SEO based scheme software product, maybe
the "programming" is a trivial part of the whole deal.

On some level, it's like a fruitless discussion. Unless, you or anyone
seriously claims that for the majority of software, the actual programming is
really trivial or tertiary part of the process, then you would just be wrong.
Otherwise, I don't really see what the usefulness is in debating programming
as "simply a means to an end."

------
pkaler
Sounds like Marco is in the same place I was in my late 20s: burnt-out.

~~~
ericflo
How did you end up moving past that (assuming you did)?

~~~
pkaler
This could be the subject of an entire series of blog posts. Look up adrenal
fatigue; which is a controversial and not medically recognized diagnosis. I
basically followed the approach others have outlined.

I didn't take the gingko, black liquorice, and pig adrenal tissue cause that
wasn't a thing in 2008. But everything else. Remove toxic people. Quit your
crappy job. Remove dreadful stuff from your TODO list. Tea instead of coffee.
Sparkling water instead of booze. Sleep a lot. Do yoga. Figure out which foods
upset your digestive tract (for me that was dairy and gluten).

Burn out is a real thing and almost every person I know in tech that has been
doing it for a while has dealt with burn out.

I hope to write out my thoughts and experiences but I'm wary because I want to
be helpful without coming across as a medical professional, a new age guru, or
a self-help blogger.

~~~
ikhare
I'd love to hear more. I've been through this more than once and don't have a
good answer on how to get out.

------
cmbaus
Yes! The tools are a means to an end. The goal isn't to impress other
developers with advanced knowledge of design patterns. The goal is to impress
users. If your products impress users (which Instapaper and Tumblr certainly
have) I think that makes you a damn good programmer.

~~~
readme
I disagree. It's completely possible to impress users while simultaneously
writing code that is abhorrent. It makes you a good "UX guy" I suppose, but
not a good programmer.

------
randomapathy
If you have barely touched code in 6 months, you are not a programmer.
Moreover, if you haven't bothered to learn design patterns, you probably never
were.

~~~
justinpombrio
So, I occasionally hear someone espouse the utility of design patterns. As a
Haskellite, I tend not to see the point, and wonder sometimes whether they're
all just kludges to, e.g., work around not having first class functions. I've
actually written more Java than Haskell, and have taken a (not great) class on
design patterns, so I'm aware of these concepts; I'm just yet to see the
point.

Is there a good explanation of design patterns conducive to a "functional"
programmer's point of view? Most importantly, one that doesn't motivate the
_problem_ in terms of objects? (Objects in the solution are fine, but if the
problem only arises when you use objects I might as well go back to Haskell.)

The one pattern I know holds its water is the Visitor pattern.

~~~
tptacek
Yes, you're looking for Norvig's "design patterns in high level languages"
presentation, here:

[http://norvig.com/design-patterns/](http://norvig.com/design-patterns/)

Fair warning: it reiterates Rayiner's point upthread.

~~~
justinpombrio
That is _precisely_ what I was looking for (and from Norvig, no less). Thanks!

