I have a 16-year-old son who is very passionate about computers and
programming and not so passionate about school. He would rather just be allowed
to sit and do code all day.
Would you say that I should just go with my gut feeling and let him do this
instead of having the focus on Dogwood Diplomas and college where we are
fighting all day long to get him to do his schoolwork? Of course, I will still
have him do his Math and English.
In this excerpt from
Answercast #23, I discuss many of the things learned in a school environment
that will help with a future work career in coding. It’s best to keep up with
all subjects in school.
]]>
<
When I applied for my first job as a programmer, one of the questions I was asked during the interview was, “What kind of stuff can you program.” I answered, “Anything as long as you give me the specs.” His comment stuck with me for the rest of my life. He said “Anybody can do that, the problem is, you don’t usually get the specs. You have to get those from users who usually doesn’t know what they want.”. In other words, in order to be a good programmer, you need to be able to communicate with users who doesn’t necessarily know much about computers and determine what they need.Those communication skills paid off, as I was supplied with the specs on only on project I’ve ever worked on.
When I interviewed for my first “real” programming job, I brought along samples of my work, like an artist might bring a portfolio. I don’t know how well that would work if your previous experience had been working for someone else, and they owned the code, but up until that point, all of my code was “mine”.
As for Mark J’s comments about specs (or the lack thereof), I have also been in programming competitions where you were given specs about a week before the competition. Then, on the day of the competition, you were given “revised” specs. Again, this is closer to “real world” programming where you’re constantly working towards a moving target. (There were also points given to those who included certain features that weren’t even in the specs.)
How to communicate clearly is definitely a required skill that you can’t learn just by pounding out code. How to solve a complex problem by breaking it into manageable pieces is another. If you are producing code only for jobs that you want done you will get no experience in other areas. You can build a thousand birdhouses but that will not make you a skilled carpenter. It will only make you skilled at building birdhouses (and even that isn’t definite).
It depends on the student. We pushed our son into college instead of a ‘tech’ school because all the advisors in his highschool said he could handle it (very intelligent, but learning disabilities). The pressure got too much for him. We would have been better off sending him to a tech school (most Tech schools still teach English, just not as much). Some students start with a Tech school and when they become older and wiser, continue on with their education. If all the kid wants to do is code, he can get a job coding, but without all the other skills, he might end up just a low end programmer – maybe a good programmer, but still – not on the path for advancement. I have worked with people like that before. Only want to know their own little niche of information, and the rest of the world passes them by. Myself – I love coding. I don’t get to do as much at 60 as I did at 20, but it does make my job still fun after all these years! My job name has changed from Programmer when I first started, to Business Systems Analyst – but not many people get to do what they love to do for so many years!
I went to college to be an electrical engineer. Made a good living at it, too. But over the years, my career has zigged and it’s zagged, and I’ve done a variety of stuff only somewhat related to engineering. The one common factor to ALL of those jobs was that I was a troubleshooter. A problem solver. A professional hand-holder. And while engineering is what got me started, it was a wide range of experiences that made me adaptable to utilizing my problem-solving skills even in jobs that had nothing to do with electronics. So much so that I created my own company (which still pays me well) specifically designed to resolving other companies’ problems. As the world has evolved, I’m less attuned to electrical application, but more skilled in applying engineering principles (analysis, attention to detail, observation) to unrelated fields, including such diverse skills as repairing a company’s Customer Service program. While a lumberjack may focus on the trees, it helps to know where the forests are, and also what faciliatates their growth and survival. A variation on the inability to see the forest for the trees. There is no such thing as TOO much education, but a lack of it can only hinder a person.
My brother had the incredible bad luck to be laid off from his programming job at the same time as something like 6,000 other programmers, all thier jobs outsourced. It took him several years to find another job due to the market being just swamped with talented people. He was finally hired by a small firm, not for his skill in programming, but for his ability to work with the non-techincal staff. That job eventually led to work with a larger firm and better pay. But the reality is, if all you can do is code, no matter how good you are, your work can be outsourced.
Whilst agreeing generally with all of the present postings, I recognise Mike’s career as being very similar to mine, particularly the trouble-shooting.
Generally as an “amateur programmer” etc, I tackled the programming that my “professional” colleagues thought impossible or very difficult.
In hindsight, having studied Latin and Freench at school was extremely useful, given the precision of symtax etc required in programming.
Also, what is the son programming – is it a real-world situation responding to “customer demands”; or is it purely tackling a task of his own making – similar to the bird-box joinery?
To produce really successfull programs, one must be able to view the requrements from the user’s viewpoint – what may seem simple and easy to the programmer, may be utterly confusing and perverse to the potential user.
So inter-action with the potential users of all sorts, from the presentation of the input end, to the layout and titling of the outputs is extremely important.
And then there is the testing of the programs – a huge field in its own right.
A programmer will tend to stay within the parameters of the program when testing – but the users will accidentally or otherwise, go outside them.
At a simple level, using alpha “O” in place of numeric “0”.
With Credit and Debit cards, is the input required in the 4 blocks of four numeric characters; or should spaces be omitted; should the program automatically detect and adjust for these?
How many of you have seen the programs where the number MUST be inputted without the spaces and without explanation, followed by a confirmation presentation showing it with the spaces present?
It is a long and valuable answer. When I read “focus on programming” I assume this is a focus area, not devoting the whole life “only” to programming. Programming computers is a great field for learning logic and acquiring the confidence of every problem has a solution. Of course the boy will have to learn write, socialize, swim, love, etc, etc, in the way. but this is obvious for me. Regards
06-Jun-2012
Reading this article and the thoughtful comments obviously from readers with years of life experience brings a smile to me. Thank you so much for sharing. I studied business but eventually I become an non-institutional educator, training niche population. Imagine how amused I get each day listening to teenagers or young adults share with me their beliefs and values.