What’s Your Career Plan?

I’m currently reading Gayle Laakmann’s “Cracking the Coding Interview” so I could perform better in technical interviews (and also increase my knowledge in a lot of Computer Science related topics), and one of the things that she suggests is to make a career plan. She makes an obvious (or maybe not obvious?) point that what we want to achieve in our professional lives should depend on the career plan we made for ourselves.

Here’s the snippet of what Laakmann said in her book:

Career Path: Make a plan for your career. What do you want to do 5, 10, and 15 years from now? What skills do you need to develop? Which company or position will help you get there?

Before starting at a company, devise a career plan. What would you like your career to look like? What will it take to get there?

However, if you want to run a company one day, or move up into management, you should stop and check your career plan. Is another year at your job going to help you get there? Or is it time to move? You, and only you, can decide.

That being said, here’s my current career plan. It’ll probably go through a few iterations but, I think it covers much of what I really want to do with my career.

Now
– Get an entry-level web development job, video game development job or a mobile application development job.
– Continue developing in Android, and learn Swift/Objective-C in order to develop for iOS.
– Improve in all the languages/technologies I am currently experienced in.
– Learn Ruby/Ruby on Rails, PostgreSQL, and Django.

In 5 years
– Continue improving in all the languages/technologies I’m currently experienced in.
– Continue gaining valuable experience at the job I have.
– Ship at least 1 Android application to Google Play.
– Ship at least 1 iOS application to the App Store.
– Ship at least 1 Wix application to the Wix App Store.
– Become a LinkedIn influencer.
– Generate a larger following on my blog in order to establish my web presence.

In 10 years
– Hold a Chief Technical Officer or Project Manager title at my full-time job.
– Begin serving as a mentor for fellow Computer Science majors in college.
– Ship at least 1 more Android application to Google Play.
– Ship at least 1 more iOS application to the App Store.
– Ship at least 1 more Wix applicaction to the Wix App Store.

In 15 years
– Explore through my Entrepreneurial ideas, and start a company.
– Ship an indie video game.
– Begin giving business/technical talks at Universities.

What’s your career plan? Feel free to post it on your own blog! Please reference my blog post (or whatever WordPressers do when referencing other people in their blog) if you do decide to do so!

“Swift” – Apple’s New Programming Language for iOS and OS X

Has anyone read up on what Apple unveiled at the World Wide Developer’s Conference earlier today?

The thing I was most excited about was the new “Swift” programming language. Hmmm, maybe it’s a good thing I haven’t learned Objective-C yet? I am definitely picking up on Swift right away and I’m gonna dive straight into Apple’s iBook and other documentation. I’m really excited because I want to learn how to develop iOS apps, and I could possibly get started with a start-up who is looking to jump into Swift right away. The only thing is… I’ll need a Mac to program on. Can’t really practice developing iOS apps if I don’t have one…

What do you guys think about Swift?

Article here:

http://techcrunch.com/events/wwdc-2014/

Why You’re Not Hearing Back From Start-ups on AngelList

I’ve been very active in my job search over the past few months and one of my main resources for jobs has been AngelList (www.angel.co). It’s an absolutely great resource to use when looking for start-up jobs, and I only have great things to say about it. While there’s a lot I could (and want to) say about AngelList, I’m going to focus on one topic for now: why you’re not hearing back from start-ups you expressed interest in. This will be the first in a series of articles I’d like to write about AngelList and my experience in using it. If you’d be interested in reading more later on, be sure to follow my website!

I’ve used AngelList enough to explain what I think makes a great application. In fact, I applied to 8 start-ups over the past 2 weeks using AngelList, and despite all the competition and not having a lot of work experience under my belt, I heard back from 3 of them so far. In my opinion, that’s pretty good. While I know what it’s like on the job seeker’s end to express interest in a start-up, I have seen for myself exactly what it looks like on the company’s end. Consequently, I learned how I could improve my chances at hearing back from a start-up. I compiled a list of possible reasons as to why a start-up didn’t contact you back after you expressed interest in them on AngelList. If you haven’t heard back from a start-up after 2 weeks of expressing interest, it could be for any of the following reasons:

1. They’re not hiring or using AngelList.
Plain and simple. And this could be for a few reasons: they already filled the positions they were hiring for, or they just don’t have enough funding at the moment to bring more workers aboard their ship.

2. You weren’t qualified for their job openings.
Not everyone is a perfect fit with a company, whether that be culturally or professionally. If you applied for a start-up who needs Ruby on Rails developers, but you’re lacking in Ruby on Rails (and have no work to show for it), you probably won’t be getting an e-mail or message back. The best you can do is learn and improve.

3. You didn’t explain why you’re interested in working for them.
There’s feature on AngelList where you can leave a note for the start-up, explaining when you’re interested in working for them. This feature is there for a reason. From the start-up’s point of view, the person who is in charge of their AngelList account receives an e-mail that shows a list of applicants who were interested in working for them. On that list, he/she can see who left a note for them. Most start-ups won’t waste their time (and for good reason) looking at your profile to see how you might fit in with their team. In other words, they might rely on your note to do some of their work for them. Do yourself a favor and make sure that you explain to the company why you’re interested in working for them. If you don’t explain why you’re interested in working for them, they may pass on you even if you have a fantastic resume and professional profile. And the main reason: they don’t have the time to look at your profile.

4. You didn’t follow up your interest with a resume and cover letter.
When you express interest in working for a start-up, think of that as your application. Will you ever, in your entire life, apply for a job without sending in your resume and cover letter? While a lot of start-ups will contact you even if you didn’t send in a resume/cover letter (heck, it happened to me), it’s not the ideal approach to take. You increase your chances of getting the start-up to contact you back if you send in a resume/cover letter. Many start-ups value their time and if you can spare them the time it takes to ask you for your resume/cover letter, you’re doing the start-up, as well as yourself, a ton of favors. If you don’t know where to send your resume and cover letter, check out their Careers/Jobs/Contact Us section on their website.

In summary: express interest in a start-up, explain why you’re interested, and send them your resume and cover letter.

Have you used AngelList in your job search? How many start-ups have you applied to, and how many have you heard back from! I’d love to hear any stories!

Advice For Inexperienced Programmers and Computer Scientists

There are so many companies out there looking for computer scientists. Over the last three months, I’ve spoken with a lot of recruiters and other companies for Software Engineering positions, Full Stack Web Developer positions, and the like. But, I haven’t accepted a job yet. However, the job opportunities have been right there in front of me; and because of that, I think I am a credible source for advice in this field. I’ve learned a lot since I began hunting for jobs, and my advice will come from experience, online research, career counseling, professors and professional connections.

Here’s where reality sets in: if you’re an inexperienced programmer and you don’t have any professional connections, it’ll be tough to find a job. Some quick advice for inexperienced programmers:

  1. Look for internships/opportunities at start-up companies (for experience).
  2. Use your available resources (books, internet, etc) to learn some new programming languages on your own.
  3. Think of fun side projects (maybe a personal website?), work on them, and finish them.
  4. Network. Network. Network!
  5. Get a LinkedIn and GitHub account, and use them.

I know you’ve probably heard much of this same advice before, but it’s true. I cannot stress how important these points are.

#1. Start-ups, in my opinion, are one of the best ways to get experience. This is because you typically work with a smaller team, and you are typically assigned a variable amount of tasks (as opposed to working on one specific task at a large company) throughout your tenure. Also, many start-ups are willing to take in all levels of programmers as interns, and they could potentially offer you a full-time job if they like you and your hard work. There are many resources out there for finding opportunities at start-ups. These include AngelList (www.angel.co), WhiteTruffle (www.whitetruffle.com), your school’s career services department, and other sources. My favorite in particular is AngelList. On AngelList, you’ll find information on a lot of start-ups such as their size, their mission, how much funding they have, and what job opportunities (and range of salary) they currently have (Note: this could be different from what job openings are on their website). There have been a few start-ups who reached out to me through AngelList, so not only would you be looking for start-ups, start-ups would be looking for you, too. If you’re currently hunting for job opportunities, I highly suggest that you check out AngelList now and create an account.

#2. This is very important (and also fun!) because many jobs out there require candidates to have a wide range of knowledge in programming languages. For example, when you apply for a full stack web developer position, you’ll probably need to know something along the lines of HTML5/CSS3, JavaScript, jQuery, AJAX, PHP, and MySQL. Or, maybe there’s another full stack web developer job that requires HTML5/CSS3, Python/Django, and PostgreSQL. If you want to market yourself to a lot of employers, I highly suggest picking up new languages. Not only will you be able to put these skills on your resume, but you’ll also show employers that you are capable and motivated to learn. For resources on learning new languages, Codecademy (www.codecademy.com) is a good resource for learning web technologies like HTML5/CSS3, JavaScript, jQuery, PHP, Ruby/Ruby on Rails, and Python. Also, Lynda (lynda.com) is a fantastic resource (assuming you have an account) which contains video courses on countless subjects. I taught myself PHP, JavaScript, jQuery and AJAX through lynda.com.

#3. Honestly, this is really fun if you love computer science. If there are any program ideas that you have right now, then write them down right now (or in Notepad), and get to work. Not only will you be practicing, you’ll also have programs to show to employers (that you can post on GitHub or on your own website!). Remember the cliche: “show, don’t tell”. Showing your work to employers will give you a leg up over someone who “tells” employers about their work. Be sure to write your code as professionally as possible. Some jobs out there will pass on you if they skim through code that isn’t up-to-par with their expectations, even if you wrote your code a few years ago. This has already happened to me. So: write your code professionally, and if necessary, refactor old code that you wrote.

#4. You’ve heard this a million times before, but it’s one of the best pieces of advice that any fellow computer scientist can give, and it’s one that can’t be emphasized enough. Networking is important because it connects you with other job opportunities that you otherwise might not have found on your own. Not only that, but your network can vouch for you and give you recommendations. One of your professional connections could potentially help you land your first (or next) job. Also, your connections will be able to pass on a whole lot of knowledge to you if you ask.

#5. As a computer scientist, having a LinkedIn and GitHub account is absolutely crucial. Not only will you be able to keep in touch with your professional connections on LinkedIn, but you’ll also be able to find job postings and get in touch with other people in your field. Showcase your professional portfolio on LinkedIn, and showcase your projects (professionally written!) on GitHub. I can’t count how many job inquiries I’ve received through LinkedIn. I just know that LinkedIn is the reason for much of my success in finding job opportunities so far.

 

Any questions? Inquiries? Comments? I’ll be happy to get in touch with you!

Wix Hackathon 2014 #WixHackathonSF

Blog entry to be updated later. For now, I’d just like to post this short entry here to chronicle my first real experience at a hackathon 😀 (the Facebook hackathon didn’t count because I did homework… sucks).

Prototype of ‘Twitter Says…’ app:
– Widget: http://cs.usfca.edu/~jpbullalayao/WixApps/TwitterSays/Widget.php
– Settings: http://cs.usfca.edu/~jpbullalayao/WixApps/TwitterSays/Settings.php

To be published on Wix Market App soon!

Java Tutorial #1 – How to Write to a Text File (Part 1)

Courtesy Note: If you found this tutorial helpful, please take a few moments to comment below!

The following notable Java built-in classes are used in this tutorial:

1. “BufferedWriter”
2. “FileWriter”


Java Tutorial #1 – How to Write to a Text File

This will be a very simple code example on writing content to a file. This example writes a simple integer to a text file. It creates a file named “numBlinks.txt”, and outputs “100” to the text file.

// Author: Jourdan Bul-lalayao
// Purpose: Small program that logs generated data into a text file

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class DataLog {

  private int numBlinks;

  public DataLog() {
    numBlinks = 0;
  }

  // Function: gen()
  // Purpose: Generate data to be logged
  public void gen() {
    numBlinks++;
  }

  // Function: log()
  // Purpose: Log data into a .txt file
  public void log() {

    // Make file for # of blinks
    File blinkLog = new File("numBlinks.txt");

    // Try/catch statement necessary for FileWriter
    try {
      BufferedWriter writer = new BufferedWriter(new FileWriter(blinkLog));

      // If we don't use String.valueOf, it will output string equivalent of numBlinks.
      writer.write(String.valueOf(numBlinks));

      // ALWAYS CLOSE THE WRITER, file will be empty if you don't close it
      writer.close();
    } catch (IOException e) {
      System.out.println("Unable to write to file!");
      e.printStackTrace();
    }
  }

  public static void main(String[] args) {

    DataLog log = new DataLog();

    // Generate data
    for (int i = 0; i < 100; i++) {
      log.gen();
    }

    // Log data into txt file
    log.log();
  }
}

Questions? Feedback? Please leave a comment below!

Inside the Computer Hardware

I just wrote my first few programs in the assembly language. It’s really interesting to see how computers execute instructions under-the-hood. I recommend to you computer programmers that you try out a few of your own programs in assembly. It can be a pain, but you’ll understand the basics of what computers are doing behind the scenes! You can download MARS here, which is a MIPS Assembly Language IDE: http://courses.missouristate.edu/KenVollmar/MARS/

Having said that, I probably won’t write assembly again after I graduate. But, who knows.

I’ll post my assembly programs in my “Code” section soon!

Dilemma

I’ve had the motivation to work on my blog the past few days… but I’ve been too preoccupied with school.

That’s where this entry ends.

Glad I was able to take a three minute break by writing this blog entry.

いま日本語をべんきょうしなければいけません。

Bonus points to anyone who understands what I wrote!

日本語

I’m thinking about making a separate section on my website for Japanese writing to further supplement my learning. I think it’d be really helpful for those who are looking for some Japanese to read, so that they can practice on reading and recognizing the hiragana/katakana/kanji characters. And it’d be helpful for myself as well in writing it and applying the grammar and vocabulary that I’m learning.

Sound like a good idea?

19 Hard Things You Need To Do To Be Successful

My roommate gave me a copy of “19 Hard Things You Need To Do To Be Successful,” and I thought it was a great read. Pass it along bloggers. I don’t know which site originally posted it but  regardless, it’s worth the one minute read!

Source: http://www.businessinsider.com/hard-things-you-need-to-do-to-be-successful-2014-1

You have to do the hard things. 

  • You have to make the call you’re afraid to make.
  • You have to get up earlier than you want to get up.
  • You have to give more than you get in return right away.
  • You have to care more about others than they care about you.
  • You have to fight when you are already injured, bloody, and sore.
  • You have to feel unsure and insecure when playing it safe seems smarter.
  • You have to lead when no one else is following you yet.
  • You have to invest in yourself even though no one else is.
  • You have to look like a fool while you’re looking for answers you don’t have.
  • You have to grind out the details when it’s easier to shrug them off.
  • You have to deliver results when making excuses is an option.
  • You have to search for your own explanations even when you’re told to accept the “facts.”
  • You have to make mistakes and look like an idiot.
  • You have to try and fail and try again.
  • You have to run faster even though you’re out of breath.
  • You have to be kind to people who have been cruel to you.
  • You have to meet deadlines that are unreasonable and deliver results that are unparalleled.
  • You have to be accountable for your actions even when things go wrong.
  • You have to keep moving towards where you want to be no matter what’s in front of you.

You have to do the hard things. The things that no one else is doing. The things that scare you. The things that make you wonder how much longer you can hold on.

Those are the things that define you. Those are the things that make the difference between living a life of mediocrity or outrageous success.

The hard things are the easiest things to avoid. To excuse away. To pretend like they don’t apply to you.

The simple truth about how ordinary people accomplish outrageous feats of success is that they do the hard things that smarter, wealthier, more qualified people don’t have the courage — or desperation — to do.

Do the hard things. You might be surprised at how amazing you really are.