Wednesday, May 20, 2015
Done with the basics and now on to roaming the big big Web
There is one big mistake I made when I started out my coding journey.
I went to hackathons, where I met a lot of cool developers who introduced me to cool languages and tools. When one guy tells you Javascript is the thing to learn for web, the next guy is already telling you he's using this really cool library in Python that allows you to do magic.
Finding what you need to learn is always one of the biggest challenges for any coders, not to mention aspiring coders. When you're new, it's very easy to get lost when everyone tells you to start with X or do research into Y. I ended up installing a bunch of things on my computer with the idea that after I try studying a little bit of everything, eventually something will stick.

Huge huge mistake! I did not touch 95%+ of all the tools I grabbed from the Internet, at least in a meaningful way. And I was still lost and had no idea how things work together. When you're a beginner, it's essential to do a great foundation course to equip you with basic CS theory. Then you're free to branch out and do your exploration. Referencing an actual college CS degree could be helpful but that is hardly what's needed in the real world, where programmers don't bother as much with theory (plus, you can't wait to get your hands on a real world project right?).
I feel lucky I found the MIT course. However, before that I've tried numerous programming resources with no luck. This course is certainly not the end and be all but it prepares me for using internet resources more effectively and I'm now able to say that I can figure most things out on my own, given enough time and effort.
I'm hanging out in the world of Free Code Camp along with other tutorials on the two areas I'm interested in: data analysis and web. I can't wait to release a project some time this summer, something hopefully much better than the air advisor app, so stay tuned.
Thursday, April 23, 2015
What if I want to do a tech job but not a programmer-type job
I realized I've never shared on this blog where I come from and what I'd eventually want to do in tech. In short, I work in non-tech consulting doing economic and market analysis and still explore where my future roles could be in the tech industry. One could be in marketing, product management, finance, etc. However, if one wants to move up in the ladder, I believe an understanding of technology and the business model are absolutely key no matter where one starts in a tech organization. Not to mention coding is really fun in itself!!
It's just that after a few months working on my MIT class, it starts to dawn on me that becoming a great programmer by learning during the evenings and weekends will take some very very long time. Coding is hard to learn when you are a full-time student. It's even harder when you work a 10+ hours per day job where you don't use any coding. It doesn't mean I give up on learning code, since it's quite enjoyable. But I also open myself to resources for beginner techies or people who really hope to stay close to what's latest in technology but don't necessarily want to build an engineering career.
This video from the Darden School of Business for example is golden. When recruiters come to MBA candidates they don't look for programmers, but passion for the product and understanding of the business problems tech companies and their clients face.
I also found the CS50 class's MBA version quite interesting. Their regular CS50 is already one of Harvard's most popular courses. The MBA version incorporates more design and architecture concepts and is great for people interested in the strategy or product management side of things. Compared to MIT 6.00x the Harvard course is less theoretical but is just as much of a gem in the world of MOOCs and open online course materials.
Read the course blurb:
It's just that after a few months working on my MIT class, it starts to dawn on me that becoming a great programmer by learning during the evenings and weekends will take some very very long time. Coding is hard to learn when you are a full-time student. It's even harder when you work a 10+ hours per day job where you don't use any coding. It doesn't mean I give up on learning code, since it's quite enjoyable. But I also open myself to resources for beginner techies or people who really hope to stay close to what's latest in technology but don't necessarily want to build an engineering career.
This video from the Darden School of Business for example is golden. When recruiters come to MBA candidates they don't look for programmers, but passion for the product and understanding of the business problems tech companies and their clients face.
Read the course blurb:
This course is a variant of Harvard College's introduction to computer science,CS50, designed especially for MBA students. Whereas CS50 itself takes a bottom-up approach, emphasizing mastery of low-level concepts and implementation details thereof, this course takes a top-down approach, emphasizing mastery of high-level concepts and design decisions related thereto. Through a mix of technical instruction, discussion of case studies, and weekly programming projects, this course empowers students to make technological decisions even if not technologists themselves. Topics include cloud computing, networking, privacy, scalability, security, and more, with a particular emphasis on web and mobile technologies. Students emerge from this course with first-hand appreciation of how it all works and all the more confident in the factors that should guide their decision-making.
Happy learning!
Saturday, April 18, 2015
Are you more qualified than you think?
My conversation with my programmer boyfriend:
Me: You know, they are hiring junior people with stats background and experience in X, Y, and Z. (still in disbelief. Why would anyone expect kids out of college to be great at all these things?)
Him: I think you've learned enough to say you know all of that.
Me: I'm still taking intro to computer science. People sure are overoptimistic these days.
Him: Well I mean you can learn more once you're on the job...
Do women really have the tendency to believe they don't have enough experience to compete for certain jobs while men just don't care as much? I'm far from confident in my coding skills, having only nearly completed the one semester edX course on computer science. Coding is hard and my incompetence at it makes me ask questions like: geez, should I even include it on my resume? What if people ask me a question and I can not answer? I wonder if this is one of the barriers that keeps more women from pursuing programming as well as other scientific areas. Most guy programmers I know embrace their own incompetence, believing they can always improve on their job and they'll deal with whatever they're thrown at. What do you think?
Me: You know, they are hiring junior people with stats background and experience in X, Y, and Z. (still in disbelief. Why would anyone expect kids out of college to be great at all these things?)
Him: I think you've learned enough to say you know all of that.
Me: I'm still taking intro to computer science. People sure are overoptimistic these days.
Him: Well I mean you can learn more once you're on the job...
Do women really have the tendency to believe they don't have enough experience to compete for certain jobs while men just don't care as much? I'm far from confident in my coding skills, having only nearly completed the one semester edX course on computer science. Coding is hard and my incompetence at it makes me ask questions like: geez, should I even include it on my resume? What if people ask me a question and I can not answer? I wonder if this is one of the barriers that keeps more women from pursuing programming as well as other scientific areas. Most guy programmers I know embrace their own incompetence, believing they can always improve on their job and they'll deal with whatever they're thrown at. What do you think?
Saturday, March 21, 2015
4 myths about coding you ought to know as a beginner
1. Coding can be learned within a few months since I read about people starting from zero and they all have good jobs or start great companies within months
Regardless of what you read on the Internet, learning to code is a difficult journey. I feel I made incredible mental progress (and went through lots of late nights and sacrificed lots of time for stupid movies) just jumping from "Hello world" to recursion to object oriented programming within the last few months in my CS Intro class. In addition, even if you're super smart, how you learn to code also affects your pace too. Do you have a mentor or do you work on your own and only run to your programmer friends when needed? Do you rely on remote pair programming? Do you learn to code full-time or part-time? There's a reason why CS grads still have an advantage over non CS grads even when so many tutorials are available for free and short-term boot camps spams your mail 5 times a day: it pays to just learn code for four years and have an army of professors and tutors when you start out. It's very different from reading an online tutorial and getting checks for watching 5 minutes of a lecture.
2. I would know how to relate to technical people after this intro class
Maybe you're a marketer or designer or journalist learning to code. You take a class, thinking I'll be making smart conversations with engineers from now on. Can't be further from truth. The body of CS is so great that you'll still likely face a ton of trouble conversing with programmers at a deeper level about any issue. I'm interested in business but I know I'm far from confident enough to do things like hire programmers for a company despite getting a good grade in 6.001x. Again, it takes a lot of time to grasp CS concepts even just an intuitive level.
3. Coding is solitary. At least my job is more social than that.
Perhaps coding is still largely a haven for the nerdy introverted awkward kids. You may have heard things have changed so much these days due to the popularity of pair programming and teamwork in software groups. But social interaction begins much earlier than that. I realized that when I started the first few CS lessons, I felt a very urgent need to reach out to a someone technical so I can ask questions (which can be really dumb at times) or maybe just tell them what I'm doing. I know there's StackOverflow and all that but it doesn't beat having someone knowing you are struggling to learn foreign concepts and they'll be so much more interactive!
4. There's a linear route towards becoming an engineer
This is just like there's no linear route for anything. You saw someone going to school for four years and become a programmer. Someone may just rack up on tutorials and free online classes before he/she scores that first start-up gig. Well, it's at least "linear" in concept. You soon realize that in CS there are so many ways to achieve the same goal. You can use different languages, implement things differently and yet still get the same outcome. That's great but what that means is figuring out which way to take and what to learn often tend to manifest themselves as trial-and-error. There are no tutorials or curricula right for everybody. That said I'd still recommend free sites such as Free Code Camp or The Odin Project. But even those sites won't give you enough handholding to become a very good engineer. Be strategic about what you learn, but don't forget to maintain the beginner's curious mind.
Tuesday, March 10, 2015
6.00.1x Done, MOOC Reflection and What's Next
I know I've been disappearing for a while, but most of that is simply due to my self-enforced social isolation necessary for coding mastery...Just kidding :)
Finally I'm done with 6.00.1x!!
When I hit the submit button for the last problem, I felt I've accomplished a great deal. Yes, it's my first official foray into coding, but the final exam has been challenging. So if you're thinking any 101 class is supposed to be easy, do be prepared to work hard on this one! The course in my opinion rushed to cover object-oriented programming and trees, which I believe leads to my struggle with finishing the last problems. When I read the final exam was only supposed to last 3 hours, I did wonder if I'd done something wrong in the course (my record was closer to 3 hours per problem). My loving boyfriend, who happens to be a software engineer, wonders why I look so vaguely confused about linked lists and such, yet can work on certain problems on the final (no he didn't help me out!).
This course taught me how to program. And how to complete a MOOC. Critics complain few people actually complete courses they started, and it's not an easy deed. Not without certain best practices.
It needs persistence. Even just a bit everyday. I spend 0.5-2 hours everyday listening to lectures, doing finger exercises or working on problem sets. Plus I make sure that I am focusing on one class only. It's very tempting to do more than one at a time and hope that you can somehow squeeze everything with a full-time job. However it's not a sustainable strategy given most MOOCs are still university classes. Something I found is you can register for more than one, listen to occasional lectures at more than one, but really need to work on exams and assignments for only one. That is, if you really want to get something out of the MOOC. Focus pays.
I'm currently thinking of what's next for me to learn in coding. I've started 6.00.2x but am thinking of technologies I may want to learn in the long term. Web? Data science? Feel free to suggest in the comments.
Finally I'm done with 6.00.1x!!
When I hit the submit button for the last problem, I felt I've accomplished a great deal. Yes, it's my first official foray into coding, but the final exam has been challenging. So if you're thinking any 101 class is supposed to be easy, do be prepared to work hard on this one! The course in my opinion rushed to cover object-oriented programming and trees, which I believe leads to my struggle with finishing the last problems. When I read the final exam was only supposed to last 3 hours, I did wonder if I'd done something wrong in the course (my record was closer to 3 hours per problem). My loving boyfriend, who happens to be a software engineer, wonders why I look so vaguely confused about linked lists and such, yet can work on certain problems on the final (no he didn't help me out!).
This course taught me how to program. And how to complete a MOOC. Critics complain few people actually complete courses they started, and it's not an easy deed. Not without certain best practices.
It needs persistence. Even just a bit everyday. I spend 0.5-2 hours everyday listening to lectures, doing finger exercises or working on problem sets. Plus I make sure that I am focusing on one class only. It's very tempting to do more than one at a time and hope that you can somehow squeeze everything with a full-time job. However it's not a sustainable strategy given most MOOCs are still university classes. Something I found is you can register for more than one, listen to occasional lectures at more than one, but really need to work on exams and assignments for only one. That is, if you really want to get something out of the MOOC. Focus pays.
I'm currently thinking of what's next for me to learn in coding. I've started 6.00.2x but am thinking of technologies I may want to learn in the long term. Web? Data science? Feel free to suggest in the comments.
Sunday, February 22, 2015
CODE 2015
This weekend I participated in a hackathon called CODE (which stands for Canadian Open Data Experience). I've had good momentum participating in a long-haul hackathon series working on DC Action for Children's Data Tools and here I am making apps using open data for social good again!
For this hackathon I used R and was my own one-person team. Why did I choose to use R? Well that's the only language I feel relatively comfortable with. Still I had to resort to the help of Excel/Access/SQL as I use these everyday for work. I feel humble at a lot of hackathons being one of the few in the rooms not coming with a page-long slate of technologies that I can use. RStudio has a nice web app framework for non-web developers and within the course of a few weeks between my registration for CODE and the actual hackathon that was the only reasonable technology I could manage to learn!
So here is my app. It's the first web app I've ever built all by myself. Basically it looks at 2014 air quality health index data provided by Weather Canada and tells you what times of the day have best air quality! I hope it's going to be helpful for people looking to take advantage of cleaner times of the day as well as local governments interested in improving overall air quality (quite a huge statement right?). I've seen some news about a personal air quality sensor attached to a phone and think it's a pretty cool idea. The average person can't care less about NOx or SOx levels (unless you're in energy or environmental consulting) but air quality data could inform things like retrofits or maybe choosing clean commutes or running trails. So much to dream about.
The top 15 of CODE will be invited to present in front of a panel of judges some time next month. While I'm pretty sure I'm not gonna be one of them, I'm glad I got something pretty cool to add to my personal portfolio that I could use later in my career, not to mention I learned a bunch of new commands and tricks to deal with data, i.e. all the fun stuff :-).
For this hackathon I used R and was my own one-person team. Why did I choose to use R? Well that's the only language I feel relatively comfortable with. Still I had to resort to the help of Excel/Access/SQL as I use these everyday for work. I feel humble at a lot of hackathons being one of the few in the rooms not coming with a page-long slate of technologies that I can use. RStudio has a nice web app framework for non-web developers and within the course of a few weeks between my registration for CODE and the actual hackathon that was the only reasonable technology I could manage to learn!
So here is my app. It's the first web app I've ever built all by myself. Basically it looks at 2014 air quality health index data provided by Weather Canada and tells you what times of the day have best air quality! I hope it's going to be helpful for people looking to take advantage of cleaner times of the day as well as local governments interested in improving overall air quality (quite a huge statement right?). I've seen some news about a personal air quality sensor attached to a phone and think it's a pretty cool idea. The average person can't care less about NOx or SOx levels (unless you're in energy or environmental consulting) but air quality data could inform things like retrofits or maybe choosing clean commutes or running trails. So much to dream about.
The top 15 of CODE will be invited to present in front of a panel of judges some time next month. While I'm pretty sure I'm not gonna be one of them, I'm glad I got something pretty cool to add to my personal portfolio that I could use later in my career, not to mention I learned a bunch of new commands and tricks to deal with data, i.e. all the fun stuff :-).
Friday, February 13, 2015
Just starting out...
A few days ago I had the idea of penning an entry on how I'm starting to educate myself on coding and app development skill. Things happened so I didn't have the time to ever get to it. I always feel there's a need for a skill development journey for newbies in tech (especially girls ;) ). Growing up with a great programmer - my brother, I've always been intimidated by coding, thinking I'll never become great at something like this.
And then I discovered you don't really have to be great to make coding useful in life. The skills of code enable me to retrieve data, think computationally, and solve problems logically. All the great things right? It gave me an edge over other people who do repetitive things by hand at least and many people do that in a typical office, non-programming environment.
So I started out with a bunch of different free introductory resources. You name it: Codecademy, Udacity, Coursera, etc. I know everyone's experience differs but since I have a math background, intro courses that only cover programming but not the basic mathematical thinking behind it generally don't work for me. I got through the lessons easily without even thinking much and the concepts escaped my brain just equally easy :) Eventually I picked edX's 6.000x Intro to Computer Science and Programming with Python thinking MIT is a great institution and they tend to make more challenging math and science classes.
Overall, I really enjoy the class so far. Some theory, lots of exercise, rigorous design. Only con is it's a lot of work for someone with a full-time job. However I don't regret starting out with it. It definitely made me a better programmer even as I've only completed the first half, which culminated with the midterm exam I did last weekend.
Topics covered include basic programming, efficiency, intro to search and sorting, OOP. How do I ever get to that with Codecademy and similar resources? To be fair, I don't think those are bad sites. It's just that if you already know basic computer science (stress the science part), you'll get more out of those sites as they teach mostly syntax and rules of the language not how to think computationally. With the MIT class I'm taking I'm building the foundation to solve problems using programming. The boasting of how many languages I can write in will comfortably come at a later point.
As of now I'm at lecture 10 working on memory and search. It's definitely challenging for first-timers even with a math degree! More on my plan of how I work to get to this point or complete MOOC classes later.
And then I discovered you don't really have to be great to make coding useful in life. The skills of code enable me to retrieve data, think computationally, and solve problems logically. All the great things right? It gave me an edge over other people who do repetitive things by hand at least and many people do that in a typical office, non-programming environment.
So I started out with a bunch of different free introductory resources. You name it: Codecademy, Udacity, Coursera, etc. I know everyone's experience differs but since I have a math background, intro courses that only cover programming but not the basic mathematical thinking behind it generally don't work for me. I got through the lessons easily without even thinking much and the concepts escaped my brain just equally easy :) Eventually I picked edX's 6.000x Intro to Computer Science and Programming with Python thinking MIT is a great institution and they tend to make more challenging math and science classes.
Overall, I really enjoy the class so far. Some theory, lots of exercise, rigorous design. Only con is it's a lot of work for someone with a full-time job. However I don't regret starting out with it. It definitely made me a better programmer even as I've only completed the first half, which culminated with the midterm exam I did last weekend.
Topics covered include basic programming, efficiency, intro to search and sorting, OOP. How do I ever get to that with Codecademy and similar resources? To be fair, I don't think those are bad sites. It's just that if you already know basic computer science (stress the science part), you'll get more out of those sites as they teach mostly syntax and rules of the language not how to think computationally. With the MIT class I'm taking I'm building the foundation to solve problems using programming. The boasting of how many languages I can write in will comfortably come at a later point.
As of now I'm at lecture 10 working on memory and search. It's definitely challenging for first-timers even with a math degree! More on my plan of how I work to get to this point or complete MOOC classes later.
Subscribe to:
Comments
(
Atom
)