[ or IT Person ]

greenbeansneedlesΛογισμικό & κατασκευή λογ/κού

13 Δεκ 2013 (πριν από 3 χρόνια και 5 μέρες)

49 εμφανίσεις

The Three Virtues of a Programmer

[ or IT Person ]

About

Nathan

Seth
Godin

-

Hierarchy of Success

http://sethgodin.typepad.com/seths_blog/2009/09/the
-
hierarchy
-
of
-
success.html

Laziness

Impatience

Hubris / Pride

Approach

Approach

Attitude

Laziness

Approach

Laziness

-
Lazy


Adjective


averse
or disinclined to work, activity, or
exertion; indolent
.


slow
-
moving
;
sluggish.


http://dictionary.reference.com/browse/laziness

500.times {


puts “I will not throw paper airplanes in class.”

}

Laziness

“The
quality that makes you go to
great
effort
to reduce overall energy
expenditure. It makes you
write labor
-
saving
programs that other people will
find useful, and
document what
you
wrote so you don't have to answer so
many questions about it
. Hence
,
.”



See also impatience and hubris.

Larry Wall
in
Programming Perl

Laziness

go to
great
effort
to reduce overall energy
expenditure.


Larry Wall
in
Programming Perl

Go to great effort…



Open to new technologies, programming
languages, and paradigms


Dynamic (Ruby)


Functional (Linq)


How can ____ make my life easier?


How can I apply what I’ve learned from _____
in _______?


Try a different community.



Rumsfeld Poetry





Play the Shell Game



Get Comfortable With Shells


Powershell

/ DOS / Bash


Scripting Technologies


Ruby / Python / Perl


Powershell

/ Batch Files


Learn Remote Management


pstools

(
SysInternalsSuite
)


psexec


psservice


pskill





All together now



Script Builds and Deployments


MSBuild / Rake


MSDeploy



Continuous Integration



Laziness

write labor
-
saving
programs that other people will
find useful


Larry Wall
in
Programming Perl

Eagerness



Eager to solve repetitive tasks


For Others


For Yourself


Life Hacker


RSS Feeds


Twitter


Each time you repeat a task, make some
progress automating it.

Laziness

document what
you
wrote so you don't have to answer so
many questions about it


Larry Wall
in
Programming Perl

Did You Say Document?


Think Maintenance First



Will it make this system easier to maintain?


Documentation / Instructions (README)


Source Control (Subversion,
Git
)


Developer Tests (Unit, Integration, GUI)


DRY Loosely Coupled Code


Will it make it easier for others to understand?

(This includes future you)


Exo
-
Cortex



Keep a problem/solution log.


Personal Wiki or Department Wiki


Something searchable


Save


Screenshots


Logs


Code Snippets


Reasons


Make it clear so others can easily find info


Don’t learn something twice.



You Have Mail…

Also Known As


Impatience

Approach

Impatience


noun


lack of patience.



eager desire for relief or
change; restlessness
.


intolerance of anything that
thwarts, delays, or hinders.



http://dictionary.reference.com/browse/impatience

Impatience

“The
anger you feel when the
computer is being lazy. This makes
you write

programs that don't just
react to your needs, but actually
anticipate them. Or at least that
pretend to. Hence,
.”



See also laziness and hubris.

Larry Wall
in
Programming Perl

Gimme

mah

results.

Impatience
-

the second great virtue

of a programmer


Impatience = Results


Slow Software?


Slow Processes?


Slow _________?


How Much Time?


Searching Logs


Debugging

The little voice in your head

Impatience
-

the second great virtue

of a programmer


More Efficient Algorithms


Pay Technical Debt


Shorten Feedback Loops


Continuous Integration


Developer Tests


Automatic Deployment




Actionable Error Messages

Impatience
-

the second great virtue

of a programmer


Error messages should be meaningful and
actionable.


Users want solutions, not problems.


Empowers user to solve their problem.


UI Messages & Log Messages.


Saves Time Troubleshooting.


Know before the phone rings




Virtuous Impatience

Impatience
-

the second great virtue

of a programmer

Hubris / Pride

Attitude

Hubris / Pride

Pride



noun


a
high or inordinate opinion of one's own
dignity, importance, merit, or superiority,
whether as cherished in the mind or as
displayed in bearing, conduct, etc
.


a
becoming or dignified sense of what is
due to oneself or one's position or
character; self
-
respect; self
-
esteem
.


pleasure
or satisfaction taken in something
done by or belonging to oneself or believed
to reflect credit upon
oneself.


http://dictionary.reference.com/browse/pride

Hubris



noun


excessive pride or self
-
confidence; arrogance.
.


Hubris / Pride

The
sort of thing Zeus zaps you for.
Also the quality that

makes you
write (and maintain) programs that
other people won't want to say bad
things about. Hence, the
.



See
also

laziness

and

impatience.

Larry Wall
in
Programming Perl

Always code


… as if the person who ends up maintaining
your code is a violent psychopath who knows
where you live.

WRONG

ATTITUDE

Hubris / Pride

you
write (and maintain) programs that
other people won't want to say bad
things about


See
also

laziness

and

impatience.

Larry Wall
in
Programming Perl

Hubris / Pride

http://dictionary.reference.com/browse/pride


Pride



noun


pleasure
or satisfaction taken in something
done by
oneself or believed
to reflect credit upon
oneself.


Here you go…

*not* something you want to be given!

Andy Hunt on Expectations

Andy Hunt


Pragmatic Thinking and Learning p142
-
3



create reality, or at least color it.

If
you expect the worst from people, technology, or
an organization, then that's what you're primed to
see... you'll suddenly see a lot of what you expect.”


“Your expectations of your teammates, boss, or
clients will bias your
.

And others'
expectations of you will in turn color their
perception.”



Managing Expectations


Pride results in


Being approachable


Willingness to help


Smiles


Mentoring Users


Understanding users frustrations


Avoid “Not My Job”


Say yes to annoying little things


Transparency

Principles behind the Agile Manifesto

http://agilemanifesto.org/principles.html

Our highest priority is to satisfy the customer
through early and continuous delivery of
valuable software.


Welcome changing requirements, even late in
development. Agile processes harness change
for the customer's competitive advantage.

Follow Ups

Do you follow up with your users?


How’s that report working?


Is that program still working for you?

Attitude Toward Learning

Do you know everything already?

Seth
Godin

-

Hierarchy of Success

http://sethgodin.typepad.com/seths_blog/2009/09/the
-
hierarchy
-
of
-
success.html

Laziness

Impatience

Hubris / Pride

Approach

Approach

Attitude



Toward Others



Toward Ourselves



Toward Our Software

Attitude & Approach

http://agilemanifesto.org/principles.html

Further Reading

http://agilemanifesto.org/principles.html

The Three Virtues of a Programmer

[ or IT Person ]