ArticleS. MicahMartin.
JackAndJill [add child]

Jack and Jill

Once upon a time there live a young girl named Jill and her next door neighbor Jack. Perhaps you've heard of them. When Jack and Jill were about 5 years old they both desperately wanted to learn how to ride a bike. Jill's father, being a practical man, bought Jill a nice child-size bike and took Jill outside to practice riding the bike every chance he got. Jill's dad would hold Jill up right and move with her while she pedalled. Within a few days Jill was able to ride for moments at a time without her father's support. After another day, Jill could ride her bike all by herself.

Now Jack's family was a bit more rigorous. Jack's father thought it important that Jack have a solid understanding of bike riding and the science behind it before he start riding a bike. So instead of a bike, Jake's dad bought various books on physics and cycling history. For weeks Jack learned from his father much about kinetic and potential energy. He gained an understanding for gyroscopic forces and much, much more. After about a month, Jack knew everything there was to know about bike riding. It was at this point that Jack's dad bought a bicycle for Jack. Jack proudly mounted the bike and promptly fell off. He mounted the bike again, peddling slowly and ended up in another painful fall. Meanwhile Jill was effortlessly riding her bike around block, feeling bad for her friend Jack.

Later in life both Jack and Jill graduated high school and wanted nothing more than to become software developers. Jack, following societal protocol, applied to a prestigious university was accepted to the computer science (CS) program. At the onset of his first semester, Jack was mildly disappointed to find that CS program alloted only one class in the first semester that had anything to do with computers. This class was called "Computer Algorithms I" and involved no programming what so ever. Other than this Jack learned Calculus, Philosophy, and other peripheral classes... lots of classes that had nothing to do with computers.

Meanwhile Jill moved to Chicago to become an apprentice for a renowned software company. On day 1 Jill was learning to write Python code as she worked side by side with an expert programmer. Like a kid in a candy store, Jill was nearly overwhelmed with all the software knowledge and learning experiences surrounding her. It was great!

After a few years, Jack had graduated. With all the calculus, differential equations, spanish, number theory, and computer architecture classes, there was no doubt that Jack was a full fledged CS graduate. It didn't matter that he had only written a couple hundred lines of code by this time... He had a bachelor's degree! Jack soon landed a programming job in the IT department of a large company. On his first day Jack was introduced to the project he'd work on. He met the team, found his desk and was anxious to get started. Later that day his project manager walked in with a thick binder titled "Data Model/Object Model" and said "Read this by next week".

At around the same time Jill already knew how to program in Python, Java, C#, and had dabbled in a few other languages as well. Object Orientated principles and pattern came naturally to Jill since she had used them extensively on a daily basis. Having worked on a few successful projects she knew a bit about managing projects and what it takes to get them done. No doubt about it, Jill was a software developer to be reckoned with.

!commentForm -r
 Thu, 4 May 2006 02:42:58, jack_some_time, 98920ns
 Thu, 4 May 2006 02:42:58, jack_some_time, 98920ns
 Sun, 23 Apr 2006 14:31:37, alwaleed, programming
 Sun, 23 Apr 2006 14:24:30, alwaleed,
 Sat, 22 Oct 2005 18:35:39, Sy, How much shallower you could be?
Jill you mentioned probably one of those who think programming is learning syntax of many languages, assimilating technologies and spending rest of the life buidling "nigh performance", "scalable", "enterprise" apps for naive users to let them do data entry. Clearly you haven't solved demanding problems in programming. Try this: write a program to find the contingeous set of elements in int array whoes sum is maximum. This problem comes up in image processing and most "programmers" (i.e. VB, C#, Java hero types) would have difficult time to come up with anything efficient. If you do come up with something, can you analyse it's performance on asymptotic scale? About learning calculus, have you (or are you able to) write cool simulations (like those in billiords game)? Do you know how and why Google's BigTable[?] structure works? Have you ever tried to write 3D rendering for choosen vantage point? Can you look at kernal code and tell me why it must manage threads in some specific way? Writing code in high level language for data entry screens is easy. Creating cool algorithms is hard. And if you didn't took a courses in CS, you probably even wouldn't know what Big O notation means or how Hashtable works internally or why Trie DS is vastly more efficient for search.

Vast majority of self tought programmers end up in mediocre jobs in big company and climb up the ledder to become a dev lead or manager in 4 years while their mates are still trieng to graduate with CS major. They might joke about CS majors wasting their years but there is stark diffrence in their capabilities and where they would finally end up. People who could answer above questions would probably be working on ground breaking projects at Google or MS or Nasa while people who can't would be still trieng to fix the bugs in their trivial so called enterpirse apps.

Discloser: I'm not CS major!! I leard this truth hard way and wasting my years developing software for insurance and financial companies for 8 years. Yeah, I'm now senior programmer, make big bucks but had been rejected twice by MS and once by Google.
 Mon, 17 Oct 2005 13:13:57, Alex Mueller, A true education never ends
I understand the alluded to point of this story. People learn in many different ways, and what works for one may not work for another. However, I do have a few comments on the importance of education, and by education, I mean the underlying desire that motivates individuals to pursue knowledge.

The point of this story is that traditional education taught in schools will not guarantee understanding, competence, and ability. Individuals will retain different aspects of an education. A true student is never finished learning. A true education extends beyond the classroom.

A traditional education conveys to me these things. One is the ability to learn new concepts, and when required, to regurgitate these. The most visible result of education is the ability of the individual to complete a project from start to finish, essentially, doing what needs to be done, when it ought to be done, regardless of whether they like it. In the world outside of the classroom, this is a valuable lesson to learn. Another lesson is balancing work and life.

Achieving the degree is an accomplishment worthy of accolades, because it is not easy. I do not want this Jack and Jill story to belittle education. For those students out there who pursue education in addition to working, tending to families, and dedicating their time to outside activities, these individuals represent the hard work and dedication needed for success. A lesson learned the hard way.

The individual is responsible for their drive to succeed, and this cannot be taught. Ultimately it is up to them to pave their own roads. Jill appears to already be successful, but this does not make her approach any more or less appropriate. Jack's education alone will not suffice, he needs to apply it.

This story compares Jill to Jack, at a time when Jill has been working in the industry for some time, and Jack has just begun a new job. Give Jack some time before condemning him. Education is perhaps better left to the individual to decide which path is more suitable.
 Sun, 16 Oct 2005 22:57:53, someone, JackAndJill
Is it any wonder Jill Advanced much faster than Jack (When jack, wanting to be a programmer, took Computer science related courses, instead of Software Engineering ?!) Did everyone here miss that point ?

Anyhow, Education is important, school is not. I know several people, who to begin with in software / computer fields were H.S. drop outs. This is not to say, I would advise anyone to do so, because I would not. However each individual needs to find thier own path in life. If you speak to anyone in the computer field, and asked if they would hire someone with experience, or someone with a degree, well, any one of you in the field knows the answer to this.

From personal experience I would say a well rounded education would/could help in any situation, but as always there are exceptions to every 'rule'.
 Sun, 7 Aug 2005 15:17:49, Bill Caputo, There is an implied premise here that is the real problem...
...and that is the increasing emphasis on College as: "Preparation for Career." In so doing, it has also become the new high school, so now adulthood is reached after college. It wasn't like this 200 years ago. Older descriptions of college seem to describe a place where one "Prepares for Life" by learning about it, and learning how to learn about it. The so-called classical education wasn't practical, but it was essential for taking one's place in "learned society." An unintended consequence of extending education to everyone? (it was once the purview of the wealthy only, some guy named Jefferson among others were big on changing that. My take on this then, is that college *then* apprenticeship might be the best path of all -- if only the colleges didn't cost a fortune, and only attract people because they might need to "get a job someday."

All I know for sure is that I didn't study computers in college, but my education serves me very well everyday I go to work with them.
 Thu, 14 Jul 2005 14:23:53, Vishal Shah (, Never reason from one example/case/situation
Picking an apple from a lot of 10,000 will not say anything about a lot. Picking an example of this->John and this->Jill gives a person nothing to reason/imply/believe. Besides we don't need just on kind of apples. We need a variety of them that suits different tastes and recipes. Every person is unique in its own and this idea can not be generalized or "reckoned".

This post hence says nothing to me. In fact I am worried as it might send a wrong statement to readers. Instead here is something that you can rely on - "Believe in yourself"

BTW. At the end of day, despite Jill being a great software developer might not be as happy as Jack because he got a wonderful wife whom he met in college. While Jill never found someone she could truly love because she did not have a chance to find the opposite type. She also missed the chance of having a college life, which once lost can never be regained. To gain something you have to loose something and it is upto that particular person to decide what he/she would rather loose.
 Thu, 14 Jul 2005 09:45:02, Suresh V., And what happens when it is time to redesign the bike...
 Sat, 18 Jun 2005 02:03:43, bookie, heres another perspective
in my experience, there are two kinds of ppl, people who build things versus pppl who build tools. both kind of people are required in any domain to function well. However, lets not typecast one over the other, maybe jack might become a toolmaker and be no good at building anything. maybe jack might become someone who proves p = np. maybe jill will write really bad c^n algorithms.

point being fitting people to their jobs is as important.
 Fri, 17 Jun 2005 09:50:06, Uncle Bob., A Learning Attitude.
At Object Mentor we practice the apprenticeship model. Young bright people from 16 years and up, are encouraged to work on real projects with real developers, in an atmosphere of learning. We teach them a lot, and (if they have the hunger) they learn a lot. There is no better way to learn a craft, like software engineering, than sitting with a master or a journeyman.

That being said, learning must be broad. We would be doing a huge disservice to our apprenctices if we channeled them to learn nothing but the craft of software. We would also be doing a huge disservice to ourselves. Learning, regardless of what you are learning, is beneficial to everything else you have learned. Your career as a software engineer will be enhanced if you learn a little American History. You will be able to understand the company you work in much better if you study a little political science. You'll have a better perspective on life, including your employment and your carreer, if you study some Philosophy. You'll have a better perspective on just about everything if you study a little Astronomy and Cosmology <grin>.

So, whether it be college, reading, mentoring, or apprenticeship, the main thing is the Learn.
 Fri, 17 Jun 2005 08:13:51, Mohan K Jadhav,
Though I have graduated in an Engineering Major other than the Computer Science, I would say that it is not the college degrees that would help one to acquire the skills. It is the learning attitude that matters most. Of course, a formal and a structured education would always help in understanding the 'how' part of anything since in the college one is supposed to study the fundementals of the various subjects. I agree with Rod, that the combination of throery and practice is a powerful arsenal.
 Thu, 16 Jun 2005 10:42:30, Phil Spitler, Could not agree more
Micah, you hit the nail on the head on this one. I have been programming for over 8 years now and until recently never went to college for one day. The one class I signed up for I dropped because it was aweful. Style guidelines (e.g. hungarian notation) were of more importance than learning to write code. Needless to say, in the future I don't see college playing a role in my programming career.

 Thu, 16 Jun 2005 10:18:14, Rod Morehead, College can be a time of Mentoring
When I went to Austin College, a small liberal arts college, I wasn't sure what I wanted to be. But I took a wide range of courses, and discovered I had talent in Computer Science.

A computer science professor there, Mike Higgs, takes all his students under his wing, and gives them a firm grasp of the experiential and the theoretical. During college I served internships, putting what I had learned to work. After graduation, his connections helped me get jobs multiple times in my career.

The combination of theoretical and experiential is powerful, it allow ideas from both areas to cross-pollinate. I have know many software engineers who excel in only one area are the other, but the ones who have both are the most useful: they can combine the how and why.

Some people can teach themselves what they don't receive during formal training, and college is not for everyone, but if you can I recommend it. Without college I would not have gained other non-computer science related skills that are invaluable in my day to day work. College helped me become a life long learner, which is a key ingredient in software craftsmanship, and gave me a mentor and friend.
 Thu, 16 Jun 2005 07:46:24, Joe Kuhn, Add on comment about Micah's Jack and Jill article
There's a critical component to riding a bike, the balance part, that you can teach your kid with a scooter before 'graduating' to a two wheeler. My kid was two when he got on the scooter I gladly bought him because I could see the opportunity. When he was three he was free wheeling all around the neighborhood on the littlest 2 wheeler we could find. It took him about 30 minutes to get the pedal coordination figured out when starting. I'll always remember his older sister clapping and yelling, "you got it Johnny" when he did it all himself. Micah's article is consistent with this concept of teaching the critical component to exclusion, if you know you want to be a programmer. College is over rated and over priced. So we can stop emphasizing the bs when hiring!

But some kids don't know what they want to do when they go to college...
 Thu, 16 Jun 2005 06:44:30, ,