Monday, September 8, 2014

End of Week 4

Well, this post is supposed to mention my specific impressions about a personal impression about the use of the Object Oriented features of Ruby, and if it felt any different from a more direct, procedural approach.

Well, I passed through this week's assignments without that much difficulty, mainly because OOP in Ruby is what I was studying before coming to Launch Academy, and since OOP involves a lot of concepts that I'm now kinda familiar with,  I only had to worry about implementing classes instead of trying to understand all the concepts behind them. I guess that OOP is more useful for bigger projects instead of small stuff; it has been around since the 70's if I'm not mistaken but only became a trend on the industry around the mid 90's, when the software sector (and the size of the software used on products) was growing exponentially.

I was told that OOP design is a little more subjective than a procedural approach and this becomes clear when trying to implement a class.  Finding the best approach, how many classes to build, how many methods, which methods, wheter or not an attribute will be readable/writeable/both, these are all very context-sensitive and a lot of things must be taken into consideration; I imagine that selecting which attributes would be writeable is specially important for security issues as well.

Even though I don't see OOP as 'fundamental' for any of the activities which required to implement classes so far, I guess that when we start working with Rails the OOP approach will be way more desirable since Rails tend to get a little confusing sometimes and a file to store working methods and attributes would be specifically useful in that situation.

Tuesday, September 2, 2014

End of Week 3

Well, after all, I've decided that my 'Final Considerations on Learning How to Learn' would serve for my 'End of Week 2' post, since if I wrote a specific post about the end of the second week, it would be very redundant with the ideas already written and therefore a little useless.
So, I've struggled a little bit with some of the assignments in the second and third weeks but I'm recovering the pace. I've completed all the last assignments (which the challenge is supposed to be cumulative) without any major problems. In fact, I'd even risk to say I've completed them with some considerable time advantage.

The systems check was not at all problematic this time, it was an easier version of some assignments passed this week; I guess the systems check of week 2 was way more complex to solve, related to that week's subjects. Both are completed, I've added the folks I needed to add to the GitHub repository as soon as I've finished it but still did not officially submitted my response in the Apollo system, so I guess it is better to point that out in case a potential employer check my date of submission against the date the assignment was posted.

After commenting in a 'discuss-your-problems-so-far' session at LA that I was a little disappointed by not being in the same condition as my colleagues to compete for a job placement in the tech industry, the instructor said that I could still try to find a position in the Canadian area, so I guess that this will keep me motivated for the rest of the course; I still won't give up on sending resumes to European companies though, but I would prefer to start my career in North America, since the economical scene and technology vanguard are stronger here at the moment.

Wednesday, August 27, 2014

Final Considerations on 'Learning How to Learn'

Well, as the title of the blog obviously suggests, this blog will be a journal of the progress made in my months in Launch Academy. However, there is a Coursera class I'm taking on 'Learning How to Learn', and the final assignment was about how the information given in the course is being applied and it also needed to be written in either a PDF file or a public website, so I guess that, since the course is an important variable in my efficiency in learning stuff at the bootcamp, it was appropriate to post the assignment here.

The course helped a lot to understand certain brain mechanisms regarding the learning process, and by growing some conscience around them, I guess it will help to rationalize and improve this process. Not only knowing about the Pomodoro technique is also really useful and focused on taking the max out of a direct approach to a problem, but I've understand more or less how a diffuse thinking process worked. As it happened a lot of times during the course and outside it, sometimes the solution is right there, but the cognitive focus needs to iterate over a lot of possible solutions, some completely meaningless, some plausible, until striking into something that may work. Taking some short breaks to do 'useless' stuff while keeping the mind still a little at work is a very good strategy to improve the rational function efficiency.

Visualizing information in a 'representation engineering' way also make things easier. I used the term 'engineering' over there because it has become clear to me that engineering is the art of conversion and functionality, and representing a concept in ways like an allegory or with a visual, graphic representation are sometimes the difference between full-comprehension and plain old memorizing (which is also something very useful to full-comprehension, but you get my point). This website is a very good example of that, with a lot of gifs representing in a graphical manner some mathematical concepts that takes classes and classes to explain in an alternative, simpler and clever way.

Last but not least, procrastination. I've always postponed to tomorrow the time when I would finally try to see how the procrastination process works, but the course material covering it on a very objective, well-explained manner in a way that only specialists in the best ways to learn could do, I've taken conscience of some vices in my behavior. The biggest 'cling' I guess was on the 'Process X Product' part, I guess I've always focused on the product, tried to comprehend a whole lot of new concepts at the same time to try to finish something quickly and this approach did not always work really well. By focusing on the product, setting internal deadlines as personal challenges to myself and other strategies, I'm beginning to maybe manage to overcome the procrastination process, or at least know how to do it when the method is needed.

Speaking of which, I still haven't posted about the end of Week 2, but this was due to Internet-connection issues, I'm posting this from the house I'm staying right now and will do the same thing for the blog post, after all, when I'm inside the bootcamp's office, it is best to focus on the code to avoid procrastinating.

Friday, August 15, 2014

End of Week 1

The motivation to write this post was to complete a part of the end-of-the-week assignment for the first week in Launch Academy. The assignment consisted of doing a brief, very simple coding exercise consisting on creating three functions in Ruby, one to return the smallest element in an array full of integers, the second to return the biggest element and the third to return the average of those elements. The objective of this post was to describe if and how my way of thinking changed this week, and the fact that the programming exercise is already finished is already a good example.

I always had a problem with procrastination, but I'm not having this problem at all yet. Actually, it's quite the opposite: having something to do that is not yet done is greatly bothering me.I also have another exercise to complete, the fourth of the 'extra practice' topic,and the only exercise that is not complete yet (apart from the 'comet' exercises, that I'll do systematically on the weekends to keep my mind always focused on programming), that I'll start to work on as soon as I finish this post.

Another thing that has changed (actually improved) is that I'm way less willing to give up a hardship. So far, the exercise that I had to struggle the most to complete was the first challenge given. I was late and it was also the first day, so I was really nervous and not that immersed in development, so I'll excuse myself for this almost-failure as long as I keep being able to do a good job. Being in Launch Academy always keeps me on the edge - seeing all these people trying to finish the same thing as me, knowing that I have instructors to provide me with insights and feedbacks, the internal pressure to succeed in the course-, I just feel that I MUST finish what I started, because it is a growth opportunity of a lifetime. However, having my mind focused so much on programming kinda makes my language skills drop to a level that even I am able to notice that they are not very good (I was born in Brazil, entered the US as a Spanish citizen). People I've met on this trip have always complimented my English speaking ability, and this has not happened once in LA (I even won a 'Best Accent' weekly award, and I'm not sure if that is a very good indicator that I can express myself clearly).

On the technical part, I opened my mind a little to try new approaches using more the tools that are available to me, and I'm also better able to judge them. I've been using (and struggling with) OS X for the course, which does not change a lot my working environment since I started to study programming using an Ubuntu, but some new and unknown features are kinda annoying and I'm still getting used to them and really starting to like the Mac. I'm also using the Sublime text editor, but I sincerely miss my Ubuntu text editor, that limited itself on having the very convenient feature of text highlighting based on the language being used; I've heard that some text editors have features that makes you dumber,lazier and less focused on the code, and I'm still inclined to believe that. I also started to learn programming using Python, and I was really stubborn when it came to using Ruby's unique features like blocks, but I have realized that I'll have a better understanding of Ruby if I embrace instead of fight against these peculiarities, and in the short term, I'll be better able to comprehend the course material and to 'speak the same language' as my colleagues, who mostly seem to be newer in programming than me and learning to 'computer think' in Ruby.

One thing that is letting me down a little is realizing how hard the dream of working in the US actually is. Sure, after I leave LA, and by keeping up the hard work through the course, I'll be very able to pursue a career in a country with a better life standard and more developed software industry than Brazil, but I guess I'll achieve the most as a professional in a place with a high-quality standard, top technology pole and sophisticated economic activity such as the US. Well, as being in the middle of such a great personal challenge, I can't allow myself to lose balance now and must keep focused on becoming a better professional, maybe I can make a few contacts here that pass me some interesting freelance jobs and try to go to Ireland or the UK, wherever the IT industry is growing more.