Years before, when I was on my last year of high school in Egypt, I had taken a couple of programming classes. My father knew of my love for computers, so he did his best to expose me to technology as much as possible.
I went to high school in the morning, and in the evening I went to the American University of Cairo. There I took two classes: Data structure and problem solving using C. These classes were hard for me, they were in English and I had not signed up for the TOEFL class yet. I was only fluent in French. I did pass the class however and it gave me a good foundation for coding.
Well mine works.
I didn't really know how to respond to that. So she opened the dot js file in TextPad and hit the print button. 200 lines of
monospace code wrapping around is neither pretty nor fun to read. This was the most I was going to get out of her. I only ever asked her one more question after that: what is the keyword
Sometimes the best way to find a solution is to put it aside and comeback later with a fresh mind, and I did just that. When I came back, I narrowed the issue to a smaller part of the code, then a few yahoo searches revealed the problem and I was on my way to the next assignment.
Solution: In case you are wondering what the problem was, using
This is the mentality I developed eventually:
If you can restructure the problem into a series of simple yes or no questions it is much easier to deal with it. Accumulation of small annoyances will stress you and make you react poorly when facing a challenge.
The next assignments were much easier to deal with. I completed all the exercises from our book in a month and went on to tutor the rest of the class for a modest price per head. At the same time I looked for freelance jobs.
At the end of this class, we had to make a group project. We had to use everything we learned from each chapter. Unfortunately, the rest of the class couldn't finish all the book so the chapter 6, 10, 11, and 12 were not included. But I completed them. So in our project, I made use of Ajax which was only taught in chapter 12. Using Ajax on a local file system came with its own sets of problems. I didn't understand HTTP status code at the time but I read that you would need a local server running to make use of it correctly. Since all the computers at school are equipped with Visual Studio and IIS I did just that. Our project titled "The Coral Reef" received the highest praises, my teammates and I all got shiny As.
I liked programming. I didn't care if the teacher was good or bad, because I could just register for a class and learn on my own. So I took a Server Side programming class with C# in the following semester. It was the same teacher. It was much harder, and there was no way in hell I was going to ask her to help me with anything. I learned about server side technologies and practiced on my own. When homework was due, I would just copy and paste code and send it... No I wasn't cheating, she provided the code. I got an A.
So I learned client side and server side programming. For web development, it was all I needed to get started. My financial situation wouldn't even allow me to continue going to school, so I had to be on my way to find real work.
Two years and many gigs after, I worked in a large company. It was a stable job. I knew that every other Friday there would be a paycheck waiting for me.
I learned to write better structured code. I was surrounded with good mentors that helped me learn more and received real world experience. I worked on projects with hard deadlines. I had the opportunity to write enterprise level tools from scratch. Designed the database schema, wrote the web server rules, wrote a caching strategy. I built fancy reports both on the back end and front end. I was the go to guy, for any obscure bug encountered, whether it be on the client-side or server side. It was exciting. Even though everyone complained about how low the pay was, I was getting priceless experience.
Then came a Monday morning when I got a call from an old classmate. She was still in college and she was an assistant to the old professor. They needed my help regarding our old group project. A couple days later, I received an email from the professor asking me if I could come to one of her class with my final project if possible. I responded with enthusiasms.
I went to school. My old classmate was now the teacher's assistant. We had worked on that final project in the good old days. The problem was that the teacher wanted to show her students an example of a working project that they could do for their final. They tried to run my project and they couldn't get it to work. If only she had taken the time to debug it.
Instead, they had me come in to fix it. IIS was disabled. Instead of trying to fix the code, I pushed my USB drive in and copied the new code. She asked me what was the problem. I explained that the response code for the Ajax request was 0 when you try to make a request on the local file system. For it to match the book I had to use a web server like IIS.
WHAT?! You used a web server?
I answered yes of course and she freaked out. Then she added: "Students are not allowed to use a server. You guys CHEATED!"
I laughed and thought, "OK, where are the cameras, you guys got me". There was not a shadow of a smile on her face, she was dead serious. Deep down I knew why she was mad. She was ashamed. She was mad because she wanted to show her students a good working project and she couldn't. She tried to debug it and she couldn't. So to look good in front of her class, she has to blame someone, a student, not her inability to figure out code like any respectable hacker would do.
After all the accusations and threats of taking back our grades, she cooled down and said she will let it pass this time. Her reason was, I helped a lot of students pass her class. So I spent the rest of the class presenting the project and gave advice to work in the field.
After class, I met with the teacher's assistant to discuss the ordeal. She was afraid she was going to be expelled from school for a project she only slightly contributed to. I didn't care much since I had already dropped out and was working as a programmer, but I was a little concerned. But since we had the teacher's "forgiveness" we were fine.
At work, when I find clever hacks to get something to work I am applauded and in some occasions even given a raise. In school, I used a solution that was taught in a chapter the teacher didn't get to yet and I was called a cheater. You go figure!
So the verdict is simple. I cheated. I found a clever way (not so clever) to make Ajax calls on my school project.
When I was learning programming in my high school years, the teacher was an experienced programmer. He had real software in the market. He would open his IDE on the projector make modifications and show us the results. You couldn't copy and paste from the book because there was no one universal solution to the problems. Some students would use
(n(n+1))/2 to find the sum of an array of numbers, while others would use a for loop and add each number. You are free to use the method that makes sense to you. The computer is the machine doing the science and student tells it what to do.
Unfortunately Programming is not really taught in school. If it is, it is viewed as a science. It is not. Programming and computer science are two different things. Most students graduating with a Comp Sci do not necessarily know how to program. I would know, I interviewed and worked with a few of them. Programming is an art. It is the art of solving a problem with code. Programming is not just the code part, like any language it is a also a culture.
So this is my story of how I cheated in school. I have to make a confession though. I cheat everyday. I also use other people's code. I don't even ask them. I find it on their website and I take it. I use it at home, at work, or when I teach someone else. I can't stop it and I won't stop it. Every time I meet a new graduate, I tell her to cheat. I tell her to use her creative mind to find a solution to problems. If she can't then she can use Google. Ask a question on Stackoverflow. Find a working solution even if it is unconventional.
That is how you learn. That is how you advance in your career. That is how you become a programmer worth is salt.