Beginners and experts (Batchelder blog post)

bartc bc at freeuk.com
Thu Sep 28 07:12:10 EDT 2017


On 28/09/2017 03:33, Stefan Ram wrote:
> Larry Hudson <orgnut at yahoo.com> writes:
>> Hopefully NOT like this person...
>> <quote>
>> Since I teach nights at a local community college
> ....
>> a programmer who couldn't program
> 
>    It is not clear what »this person« refers to:
> 
>    Do you hope one is not like that teacher who
>    publicly is shaming one of his students, though
>    without actually giving the name of the student.
> 
>    Or do you hope one is not like that student who
>    did not turn in the assignments?
> 
>    The fact that programmers can't program is
>    known since the invention of the "FizzBuzz"
>    programmer test. But in the case of the student,
>    one actually can't know for sure whether he only
>    had problems with the /upgrade/ of his education,
>    but still can program in his everyday job.
> 
>    So, what was the question? Quoted from earlier in
>    the same thread:
> 
> |The question is, what should a person "know" when hiring out
> |as a programmer? What is 'know" and what should be "known"?
> |Specifically with Python.
> 
>    Some areas of knowledge follow, a programmer should not be
>    ignorant in all of them:

I can probably manage the following, even if I hate some of it or some 
might be advanced:

>      - writing FizzBuzz
>      - writing GUI software [My own]

(Writing a GUI system or using one? I've done both and try and avoid GUI 
completely if possible.)

>      - writing software to analyze text files
>      - writing software to generate images from data
>      - writing software to analyze images
>      - how to program operating systems via system calls
>      - algorithms and datastructures
>      - numerical mathematics
>      - how to write a recursive descent parser
>      - maths (how to transform to polar coordinates or
>        what the use of a fourier transformation is)

And I have little interest in most of this lot (my eyes glaze over just 
reading some of these):

 >      - writing GUI software [Other people's]
 >      - writing software to analyze data bases
 >      - writing user interfaces for data bases
 >      - how to use operating systems
 >      - how to administer a computer
 >      - how to use the command languages of operating systems
 >      - how to use an editor well (e.g., vim or emacs)
 >      - how to use UN*X tools (grep, uniq, sed, ...)
 >      - regular expressions
 >      - a source management tool (like git)
 >      - design patterns
 >      - design by contract
 >      - OOA/OOD
 >      - the most important libraries for Python (standard and other)
 >      - data base design / normalization
 >      - style (e.g. "Clean Code" by Robert Martin, pep 8, ...)
 >      - refactors
 >      - software engineering
 >      - being able to read and write EBNF
 >      - software-project managemet (e.g. Agile, "Scrum")
 >      - computer science (complexity, NP, grammars, ...)
 >      - test (e.g., unit test), TDD
 >      - programming interviews (there are many books about this topic!)
 >      - Using a real Newsreader (not Google Groups)
 >      - common algorithms/heuristics for global optimization
 >      - common types of statistical analyses and neural networks

It seems the first group is more pure coding (and fun, a lot of it), and 
the second is the usual lot of tools and technologies that programmers 
seems to have to know about these days (and not so much fun).

-- 
bartc



More information about the Python-list mailing list