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