|if I become a programmer nobody will tell me - "Make a binary tree and find it's min value", right?|
Right, unless you're working at a core infrastructure team, and your job is to build core data structures for other programmers (but even then, you're likely to be asked to build something closer to real life needs -- lock-free container to dispatch jobs to a threadpool, custom zero-copy inter-process messaging, metaprogramming library, etc)
| Can somebody tell me what are the ordinary tasks that are given to programmers? |
Some examples from personal experience:
The disk size in the output of /bin/df on the customer's large partition gets stuck to the next column, make sure there's at least one space
gcc terminates instead of throwing bad_alloc when our application runs out of memory, fix gcc
Once a month, one of our 300 threads stops making progress although it's listed as "running" in ps, fix kernel
Pentagon bought this tape streamer and our driver fails to rewind it, fix the driver
Here's a Verifone credit card reader, figure out how to program it and work it into the product design, we have a change order to add support for it ASAP.
We need to download this giant file to 500 computes in 10 clusters all across New York city, within seconds, every day, figure out how and write software to do it.
We got this new laser scanner from SICK, write code to process the data coming from four of them, reconstitute 3D shapes even if partially obstructed, make sure it works in rain and snow, and give us start/end triggers good to 10 ms
Our client insists on using this custom programming language we invented for them 20 years ago. Port the compiler to 64-bit and make it thread-safe.. or write a new one from scratch, whatever's faster.
We're entering this new market, design a solution that could beat the competition by at least another nine (that is, 99.99...% reliability)
We have a program that takes several hours to run, it needs to finish in under five minutes, you have a year, ten programmers, and any hardware you can come up with, to make it happen.
We're going to bid on this defense contract, here are the requirements, write preliminary design, identify key personnel and provide cost estimate
I could go on forever... to put it simple, ordinary tasks amount to doing something that your company can sell so that they can pay your salary, be it a tiny bug fix or a billion-dollar system. *How* you do it, with what kind of data structures, tests, tools, and libraries, is up to you, the programmer.