Re: [testdrivendevelopment] "I think the community needs more explicit direction...."

"Tim Ottinger" <[email protected]> Mon, 25 Nov 2019 11:36:32 -0600
Newsgroups gmane.comp.programming.test-driven-development
Message-ID <CAN2NStn6kg7HoZ1VvR81KcQE3OkDeF3KNmbVwC1UyKd6R2Jh2w@mail.gmail.com>
--000000000000f89b7605982f345a
Content-Type: text/plain; charset="UTF-8"

Students, programmers, managers, etc all have the same problem in this
case.

The goal is to do the assignment and get it "over with" ASAP so they can
move on to the next one. Spending time with code? That's just going to make
you late. You need to have it on time, that's the main thing. If it's on
time and gets the right answer, it's a good answer.

And this has been reinforced for decades. A lot of people don't have a
place in their minds for the idea of code craft as expression of ideas for
human beings.

Most people learn to program (or pick up new skills) from tutorials that
say "Okay, make a new file. Type this into it! Look: it works! It got the
effect we wanted! Great! Now go type this! Look! The effect! Now you have
examples you can copy from and you know how to use XXX framework!"

Most of those tutorials are built for exposition -- how to USE a thing to
get an effect. And that's it. Few of them suggest anything about good code
vs poor code, style, readability, refactoring, testing, any of that. The
goal is you can write a first program (that works!) in Angular, React,
whatever. How that works, and whether it is a good expression of business
ideas, or a good use of the underlying language and its facilities? Who
cares. You can go get a job now. And finish a thing, move on to the next.

EVERYTHING a new programmers sees is "memorize how to do this, use it to
get an effect, move on quickly" and of course going faster is the hallmark
of a good programmer. What does a code craft person know? They took all day
on this code, but I spat out more code in a half-day and completed more
tickets. What good is TDD, Refactoring, etc if it slows us down!?

And managers generally agree. Faster is better. More faster is more better.
The fastest programmer is the best programmer.

So *learning* is a waste. *knowing* is a waste. Refactoring is waste.
Testing is waste. Just get the effect and move on, friends.

Except that all of that is wrong and a dead end.

But how can you tell people whose whole worldview is, and has always been,
exactly to get an effect and move on?



On Mon, Nov 25, 2019 at 3:59 AM Frank Carver via Groups.Io <frank.carver=
[email protected]> wrote:

> I teach programming at the local university and have found that one of the
> biggest mental blocks which students need to overcome is the assumption
> that there is only one way to solve any problem, and that the job of a
> programmer is to find that way.
>
> This mindset makes it really hard to teach refactoring, particularly in
> the context of eager new practitioners of TDD who want to rush on to the
> next test as soon as the first one passes.
>
> I'm not sure where this attitude comes from. Perhaps the way that
> programming and/or software development has been reframed as "coding", and
> the implications of the name, or maybe that first experiences in the field
> often come from poking at HTML and CSS with a stick to get something that
> looks right, and then copy/pasting a bit of Javascript or PHP to make
> something happen, or perhaps the prevalence of fill-in-the blanks
> frameworks, or perhaps that so many students prefer to learn by following a
> linear set of steps from YouTube, Who knows
>
> I'd love to investigate this in more detail, as I too, can see how much
> new developers struggle with the concept and skills of refactoring.
>
> If it helps, I have found that I get slightly better traction if I lead
> with the idea of "code smells."
>
> Frank Carver
> 
>
>

-- 
Peace,
Tim
-------------------------------------
http://www.industriallogic.com/
http://agileotter.blogspot.com/

-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#35773): https://groups.io/g/testdrivendevelopment/message/35773
Mute This Topic: https://groups.io/mt/61850834/3268755
Group Owner: [email protected]
Unsubscribe: https://groups.io/g/testdrivendevelopment/leave/6156322/744556386/xyzzy  [[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


--000000000000f89b7605982f345a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Students, programmers, managers, etc all have the same pro=
blem in this case.=C2=A0<br><br>The goal is to do the assignment and get it=
 &quot;over with&quot; ASAP so they can move on to the next one. Spending t=
ime with code? That&#39;s just going to make you late. You need to have it =
on time, that&#39;s the main thing. If it&#39;s on time and gets the right =
answer, it&#39;s a good answer.=C2=A0<div><br></div><div>And this has been =
reinforced for decades. A lot of people don&#39;t have a place in their min=
ds for the idea of code craft as expression of ideas for human beings.<br><=
br>Most people learn to program (or pick up new skills) from tutorials that=
 say &quot;Okay, make a new file. Type this into it! Look: it works! It got=
 the effect we wanted! Great! Now go type this! Look! The effect! Now you h=
ave examples you can copy from and you know how to use XXX framework!&quot;=
=
=C2=A0<br><br>Most of those tutorials are built for exposition -- how to U=
SE a thing to get an effect. And that&#39;s it. Few of them suggest anythin=
g about good code vs poor code, style, readability, refactoring, testing, a=
ny of that. The goal is you can write a first program (that works!) in Angu=
lar, React, whatever. How that works, and whether it is a good expression o=
f business ideas, or a good use of the underlying language and its faciliti=
es? Who cares. You can go get a job now. And finish a thing, move on to the=
 next.<br><br>EVERYTHING a new programmers sees is &quot;memorize how to do=
 this, use it to get an effect, move on quickly&quot; and of course going f=
aster is the hallmark of a good programmer. What does a code craft person k=
now? They took all day on this code, but I spat out more code in a half-day=
 and completed more tickets. What good is TDD, Refactoring, etc if it slows=
 us down!?<br><br>And managers generally agree. Faster is better. More fast=
er is more better. The fastest programmer is the best programmer.=C2=A0<br>=
<br>So *learning* is a waste. *knowing* is a waste. Refactoring is waste. T=
esting is waste. Just get the effect and move on, friends.<br><br>Except th=
at all of that is wrong and a dead end.=C2=A0<br><br>But how can you tell p=
eople whose whole worldview is, and has always been, exactly to get an effe=
ct and move on?=C2=A0</div><div><br></div><div><br></div></div><br><div cla=
ss=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Mon, Nov 25, 20=
19 at 3:59 AM Frank Carver via Groups.Io &lt;frank.carver=3D<a href=3D"mail=
to:[email protected]">[email protected]</a>&gt; wrote:<br></d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">I tea=
ch programming at the local university and have found that one of the bigge=
st mental blocks which students need to overcome is the assumption that the=
re is only one way to solve any problem, and that the job of a programmer i=
s to find that way.<div><br></div><div>This mindset makes it really hard to=
 teach refactoring, particularly in the context of eager new practitioners =
of TDD who want to rush on to the next test as soon as the first one passes=
.<div><br></div><div>I&#39;m not sure where this attitude comes from. Perha=
ps the way that programming and/or software development has been reframed a=
s &quot;coding&quot;, and the implications of the name, or maybe that first=
 experiences in the field often come from poking at HTML and CSS with a sti=
ck to get something that looks right, and then copy/pasting a bit of Javasc=
ript or PHP to make something happen, or perhaps the prevalence of fill-in-=
the blanks frameworks, or perhaps that so many students prefer to learn by =
following a linear set of steps from YouTube, Who knows<br></div><div><br><=
/div><div>I&#39;d love to investigate this in more detail, as I too, can se=
e how much new developers struggle with the concept and skills of refactori=
ng.</div><div><br></div><div>If it helps, I have found that I get slightly =
better traction if I lead with the idea of &quot;code smells.&quot;</div><d=
iv><br></div><div>Frank Carver</div></div></div>



<p></p><p></p></blockquote></div><br clear=3D"all"><div><br></div>-- <br><=
div dir=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=3D=
"ltr"><div><div dir=3D"ltr">Peace,</div><div dir=3D"ltr">Tim<br>-----------=
--------------------------<br><a href=3D"http://www.industriallogic.com/" t=
arget=3D"_blank">http://www.industriallogic.com/</a><br><a href=3D"http://a=
gileotter.blogspot.com/" target=3D"_blank">http://agileotter.blogspot.com/<=
/a><br></div></div></div></div></div></div>

<div width=3D"1" style=3D"color:white;clear:both">_._,_._,_</div>
<hr>
Groups.io Links:<p>

You receive all messages sent to this group.


<p>

<a target=3D"_blank" href=3D"https://groups.io/g/testdrivendevelopment/mes=
sage/35773">View/Reply Online (#35773)</a> |


  <a target=3D"_blank" href=3D"mailto:[email protected]?subj=
ect=3DRe:%20Re%3A%20%5Btestdrivendevelopment%5D%20%22I%20think%20the%20comm=
unity%20needs%20more%20explicit%20direction....%22">Reply To Group</a>
  
    | <a target=3D"_blank" href=3D"mailto:[email protected]?subject=3DPri=
vate:%20Re:%20Re%3A%20%5Btestdrivendevelopment%5D%20%22I%20think%20the%20co=
mmunity%20needs%20more%20explicit%20direction....%22">Reply To Sender</a>
  


|


  
    <a target=3D"_blank" href=3D"https://groups.io/mt/61850834/3268755">Mu=
te This Topic</a>
  

| <a href=3D"https://groups.io/g/testdrivendevelopment/post">New Topic</a>=
<br>



<br>

<a href=3D"https://groups.io/g/testdrivendevelopment/editsub/3268755">Your=
 Subscription</a> |
<a href=3D"mailto:[email protected]">Contact Group Own=
er</a> |

<a href=3D"https://groups.io/g/testdrivendevelopment/leave/6156322/7445563=
86/xyzzy">Unsubscribe</a>

 [[email protected]]<br>
<div width=3D"1" style=3D"color:white;clear:both">_._,_._,_</div>


--000000000000f89b7605982f345a--