Skip to main content

Programming: Not for the faint of heart

“If you can't explain it to a six year old, you don't understand it yourself.” -- Albert Einstein

I love and hate this particular saying. I love it for the simple fact that it's absolutely right and hate it because it's one of the most aggravating sentences ever created: let me explain.

Once you explain what you're working on, people have the tendency of assuming that they can do your job as well as you can. I can instantly see their minds working and saying, "we can just hire anyone off of the street to do his job; heck, I can even do his job! Why are we paying him again?" 

If you explain it using your field's vocabulary then they start thinking you're pretentious and that you need to step back down to Earth like every other normal person. 

So, it's a lose, lose situation.

Programming takes it to a completely new level. You have to be truly passionate about what you do. Slowly, but surely, you'll find out that your programming job involves a heck-of-a-lot more than you believed. Combining every discipline is sometimes an art and truthfully can be overwhelming.

The learning curve is steep! Trust me! Stop looking at the first 2 - 3 chapters of your programming book. They're just fancy math problems. After you pass chapter 3, get ready to make that chair sweat. So now to explain a little bit about what it takes to be a programmer (web-developer to be specific).

You start off like most, learning HTML. You make a few pages and you're ecstatic! Short-lived though. You find out soon that in order to make the page look even remotely nice looking, you need CSS. So you venture off to learn CSS. You are a master now. You've created some fancy drop-down menus, even converted the site to be mobile friendly. You want to optimize, so you find out about bootstrap: what have you been missing?! Bootstrap makes everything so much easier, however, you still need that foundation of HTML and CSS. So now, what? Well you can be a web-designer...tweaking the pages to make them look nice. However, that's not you. You want to find out what happens after you press the Submit button on a form and you want to streamline your work.

You do some research and you find out about PHP. You pick up a book and boom: reality check. Holly cow is learning PHP ever more difficult than forums would lead you to believe (they're right though...it's easier than most other languages). So you spend months learning everything you can; you watch tutorials on YouTube; you join forums left and right and finally it clicks. You understand it. You create your first web-page in PHP. A year or so down the road and you're decent at writing PHP code. A few more years and you're somewhat of an expert. I'm not even going to write about SQL or MySQL since it should be understood that you pretty much will always use SQL in your PHP code.

In the mean-time, you're visiting other websites and clicking around when you notice that pages are changing content of particular sections without reloading the entire page! How? Well you find out that you have to learn JavaScript. You learn as much as you need to accomplish your common tasks. You want more! So you really get down and learn JavaScript. A year or so down the road, you're pretty awesome.

Now you realize that entire pages are receiving content without reloading the browser. You right click on the page to inspect the source and viola! Nothing! How? Welcome to AJAX. You gotta be kidding me right? Before venturing to learn AJAX you need to first know how does this thing called the Internet work. How are "headers" sent? What is this thing called the HTTP protocol. You learn that too. If everything prior to this didn't stop you, AJAX definitely wont. So you learn it; hey, another tool added to the belt.

You're finally ready to start applying to work for programming companies when you see the requirements list: Must know MVC Framework XXX (CodeIgniter, Yii, CakePHP, Laravel, Symphony, Zend). How bad could it be...you already know PHP! Get ready for another butt-whooping. Have fun over the next few months trying to unlearn a lot that you've already studied and learn the rules of MVC (unfortunately you can't just skip into MVC).

Alright, now you're ready! You apply and what happens next? Your code apparently blows chunks! Remember all those times when you read about proper commenting, code structure, etc...well it didn't matter to you but it sure does matter to your hiring manager. So you go back and start studying Software Engineering. You also have to research documentation and best code practices for each framework (i.e. CodeIgniter likes methods with underscores; Zend doesn't accept underscores: great!).

So what else could there be: Get ready to learn about Git, CMS, Product Management, jSON, extensive out-of-code documentation, etc, etc, etc)....let's not even talk about the MEAN framework and how it's slowly integrating itself into our lives.

So to be a web-developer, you pretty much have to know HTML (HTML5 now), CSS (CSS3 now), PHP (or another ServerSide language), SQL, JavaScript, AJAX, HTTP protocols and how they work, Software Engineering, MVC Frameworks, CMS, etc...and no, you can't learn it in a month.

I hope I've made myself clear-enough for a 6 year old to understand.

Comments

Popular posts from this blog

Beginner Java Exercise: Sentinel Values and Do-While Loops

In my previous post on while loops, we used a loop-continuation-condition to test the arguments. In this example, we'll loop at a sentinel-controlled loop. The sentinel value is a special input value that tests the condition within the while loop. To jump right to it, we'll test if an int variable is not equal to 0. The data != 0 within the while (data != 0) { ... } is the sentinel-controlled-condition. In the following example, we'll keep adding an integer to itself until the user enters 0. Once the user enters 0, the loop will break and the user will be displayed with the sum of all of the integers that he/she has entered. As you can see from the code above, the code is somewhat redundant. It asks the user to enter an integer twice: Once before the loop begins, and an x amount of times within the loop (until the user enters 0). A better approach would be through a do-while loop. In a do-while loop, you "do" something "while" the condition

Programming Language Concepts Questions/Answers Part 3

1. What is an associative array? - An unordered collection of data elements that are indexed by keys. 2. Each element of an associative array is a pair consisting of a _______ and a _______. - key and a value 3. True or False? Java supports associative arrays? - True. As a matter of fact, Perl, Python, Ruby, C++, C# and F# do too. 4. What are associative arrays called in Perl? - hashes 5. Why are associative arrays in Perl called hashes? - Because their elements are stored and retrieved with a hash function 6. What character does a hash in Perl begin with? % 7. In Perl, each key is a _____ and each value is a _______. - string - scalar 8. In Perl, subscripting is done using _______ and _______. - braces and keys 9. In Perl, how are elements removed from hashes? - using delete 10. In Perl, the ________ operator tests whether a particular value is a key in a hash. - exists 11. What are associative arrays called in Python? - dictionaries 12. What is a dif

Creating your own ArrayList in Java

Wanted to show that certain data structures in Java can be created by you. In this example, we'll go ahead and create an ArrayList data structure that has some of the methods that the built in ArrayList class has. We'll create 2 constructors: The default constructor that creates an ArrayList with a default size of 10. Constructor that allows an initial size to be passed to the array. We'll also create a number of methods: void add(Object x);  A method that allows you to place an Object at the end of the ArrayList. void add(int index, Object x);  A method that allows you to place a value at a given location. Object get(int index):  Allows you to retrieve a value of the arrayList array from a given location. int size();  Allows you to get the number of elements currently in the Arraylist. boolean isEmpty();  Tests to see if the Arraylist is empty. boolean isIn(Object x);  A method that sees if a particular object exist in the arrayList. int find(Object x);