First Programming Language and Learning Approach Matters!

*This article is suitable for newcomers who are unsure on which language to start with and how to go about approaching learning software engineering.*

My first foray into the world of programming happened when I took an introductory class to Java. Now, if you’re a first timer in coding, Java can be a real beast. The very first Java code I saw was of course the classic “Hello World!” application and it looked really bizarre and alarming at that time:

The only part I could understand were a few things: 1) HelloWorldApp; that probably means the name of the app! 2) The curly braces surrounding it probably means that its enclosing the code inside it. 3) System.out.println(“Hello Word!”) probably means something, something about printing out that text on the screen, right?!

There’s a actually quite a lot of stuff happening in those few lines of code which are considered fundamentals but they weren’t basic enough for us absolute beginners at that point in time. Our professor just told us to ignore those two lines and simply memorize it for now. Of course, I was curious about it and turned to my best friend Google for some answers. http://www.learnjavaonline.org/ to simulate my confusion.

All those terms made zero sense to me at that time. So, I just followed my professor’s advice: just typed the first two lines of code at the beginning of all my homework assignments and continued on the happy path

Compare this to Ruby or Python:

Compare this to Ruby or Python on the left and its a world of difference. It’s very intuitive and you can start focusing on the logic rather than be bogged down by the syntax.

My first point is:

In my humble opinion, its better to start with a higher level language like Ruby, Python Or JavaScript etc. This allows you to focus on the logic and get coding more(aka more fun)rather than scratching your head over the syntax and be miserable.

Back to fun with Java, we progressed through learning the other core concepts like loops, conditionals, arrays without learning about variable and lexical scopes, mutability, custom functions etc. We did everything inside one function. We (or at least just me) declared the same function main in the class(Homeworkname) and placed all of the logic into that one function. We were not taught to search the documentation for class methods or properties nor were we taught to separate the logic into different functions to organize our code better. We weren’t drilled on exercises for each new concept covered to give us a better understanding. Instead, our professor decided it was sexier to give us homework that allows us to “apply” the new concepts. It was sort of projects that had a list of requirements for us to complete. So, we went on with our homework happily because the professor provided us with starter code to help us out. The starter code basically laid out the approach we should take with half the code done and we just had to fill in the missing parts. The funniest part about this course was the introduction to Object Oriented Programming(OOP) in Java. It was literally one slide with 4 bullet point on why OOP is important. The only thing I remembered was encapsulation…

My 2nd point is: if you’re not in a good Computer Science Program course, you should plan carefully on your learning approach if you want to make the jump into coding from a different field. There are numerous approaches:

  1. Self learning: Cheapest way in terms of money but might be expensive time-wise. It can be free if you google everything up and try to hack your way through the thick dark jungle on your own. Some people succeed, most don’t. It’s really difficult to know where to even start, how much time to spend on a concept, not knowing what you don’t know. You can be stuck in this void for years. I was stuck on this idea for a year or so because I was too cheap initially.
  2. Subscribe to a cheap online course. There are a few websites out there like Lynda, Udemy, CodingTreeHouse where you can either pay a one time fee per course or pay a cheap monthly fee(like $30 a month). I’ve tried Udemy and I gave up pretty quickly a few videos in. I felt like I was not getting the foundation I needed. A lot of core concepts were skipped or glossed over and the instructor was more concerned about showing us the flashy stuff. I can’t really vouch for the other websites since I have only tried Udemy and only 2 courses in it.
  3. Enroll in a community college: Some of my friends are doing this and paying quite a bit of money. I cannot really vouch for the effectiveness since I did not try this route. Might be a hit or miss depending on the school. I personally feel it would be the similar experience I had for my introductory to Java class back in university. Less focus on drilling the basics and more on doing homework projects.
  4. Enroll in a boot camp: There are tons of coding boot camps popping like mushrooms all over the country. My general impression is they promise too much. Its really doubtful to turn students into decent software developers in 3 -6 months unless they’re freaking geniuses. Most boot camps focus on the flashy frameworks and building clones of websites to demonstrate “proficiency.” Here’s a tip: be careful of the flashy marketing these boot camps use. I myself was nearly drawn in because I wanted to believe that this transition will be quick and painless. Also, employers are beginning to realize that they don’t really like boot camp graduates. In my personal opinion, they simply don’t have a solid foundation to learn other technologies on their own quickly. Of course there are exceptions to this case.
  5. Enroll in an online school for serious learners ~ Launch School: Its not as flowery as it seems. Its actually a rather painful process (Not as painful as the 3 CFA exams of course :-P). Be prepared to spend 1–2 years (part time) just to complete the core courses. Then, prepare to spend another 3 months to a year or more to learn the advanced frameworks, web APIs etc. Be prepared to spend hours drilling on tons of exercises, working/ feeling frustrated on projects, spending Friday and Saturday nights at home while your friends are out living life… Come to think of it, 2–3 years ain’t that bad considering college is 4 years. Its also way cheaper and you’ll have a pretty good shot at a career as a software engineer. I wish I started this first or even straight up did Computer Science in college. However, if I didn’t experience that pain I might not have the motivation to even do this. Of course, this option is not for everybody. If you want something quick or are just dabbling, the first 4 options might be a better choice.

Cheers!

Disclaimer:

  • The opinions and views here are based solely on the personal opinions of the author and has no 3rd party influence.
  • A monetary credit may be applied to this article if Launch School publishes it under its collection of articles
  • Join Launch School through this link:https://launchschool.com/join/039c4c52da and you and I bot hwill receive a one time $50 credit towards our tuition!