What’s in an Interview?
August 12, 2010 on 12:28 am | In Uncategorized | No CommentsAfter my last blog post let budding developers know how to get their name out into the world, I thought I would spend a little bit of time looking at one of the most terrifying, trying parts of getting a co-op job. “The Interview”. Everyone who goes through the Mohawk College Job Center will have a short course that outlines some obvious things about interviews: Know your stuff, dress nice, speak fluidly, etc. But there are some things that you can’t really be taught in a classroom, and I’m going to give my best shot to outline them here.
Conversation is Good!
Every interview will start the same, at least in the beginning. You will sit down in front of one (or several) people, and feel like they are testing, dissecting, and (for some reason) accusing you of every possible tidbit of information you’ve provided them. Once you’ve had a few interviews you get used to this, but the interviews will always start the same way. Scientific. The interviewer will come at you with a rigid set of questions meant to see if you know what you claim to know. But there’s a second part to an interview; a conversation. If you sit down for an interview and it changes from an interrogation into a conversation, then you’re doing well. This is the point where you can take the lead, and impress everyone in the room with your captivating speech and strong domain knowledge. Don’t show off, but keep the conversation at a high level and relevant to the job at hand, and you’ll do great.
Please, don’t lie…
According to some articles, upwards of 40% of people lie on their resumes. Don’t be one of them. It makes you look bad, and it makes the college look bad. You’re better of spending the two hours before the interview doing a few basic things:
- Study The Company: Learn what they do, what they make, and where they came from. This information makes good conversation fodder, and will help you keep the ball rolling when your brain decides it’s time to take a nap without warning you.
- Learn the Domain: If you’re applying for a Web Developer position, don’t spend 2 hours researching COBOL. Research Web Development, learn some neat tricks (jQuery is always a good place to start), and most importanty, learn technology that the company uses. This will show initiative, and if the interview turns into technical discussion/tests, you’ll have a solid footing.
- Check References: Just give them a call and make sure they still know who you are. Let them know you’re applying for some interesting jobs, and just politely inform them they may or may not receive a call.
Be Prepared
This one is taught in class, but it can’t be stressed enough. Always bring anything you might need. If there are going to be 3 people interviewing you, bring 7 extra resumes. Bring 7 extra cover letters. Bring 7 reference pages, transcripts, portfolios, etc. Always bring more than you could possibly imagine needing. It is very likely that your interviewer will be staring at your resume at one point during the interview, and if he brings something up you may have forgotten, just excuse yourself for not understanding and pull out a copy to look at. Bring a pen to write down some interesting things (This ties in to my first point. If the interview changes to conversation, write down some neat projects or libraries and check them out later). Think up three questions you want to ask them. Keep your mind sharp, don’t stay up all night playing Starcraft 2 beforehand.
It’s impossible for any teacher, employer, employee, student, family member or friend to prepare you for the icy cold hand that will very likely grab and twist at your stomach in the first second of your first major interview, but if you keep a few things tucked in the back of your mind, prepare properly, that icy cold hand will melt away within the first few minutes.
The Value of Open Source Software
July 20, 2010 on 12:18 am | In Uncategorized | No CommentsWhen I first started this Blog, it was intended to document my experiences throughout the co-op program at Mohawk College. Since then, I’ve graduated the program, and have started my full-time career. Thinking back on things I may have struggled with when getting started has led me to change the content of the blog a little bit. Rather than talking about what I’m doing now, I’m going to try and start talking about what you can do to get started on a career. If you have any comments, feel free to email them to me; my contact information is available in the “About Me” section.
In a lot of fields, networking is going to be the hub of employment. Who you know could end up mattering more than what you know when trying to hook an interview. Luckily, the field of Software Development has a lot of opportunities for you to get your name into the open, and those opportunities revolve around Open Source Software.
Open Source Software, if you don’t already know, is software that is free for anyone to use, and the source code for it is available for anyone to see, modify, and contribute to. Most people use a piece of software that falls into this category every day. As a developer breaking into the field, you can network with your peers and get valuable work experience by contributing to some of these projects, and it’s a huge help in every way when you do. Here’s how to get started:
Find a Project
You need to find a project that interests you. I happen to be a Ruby developer by profession, so I decided to do a Ruby on Rails Gem for my project. Once you’ve got your project in mind, make sure to set well defined goals and milestones. These are going to be accomplishments for you, and examples you can point to in the future.
Get Started
To get started you’re going to need a place to distribute your code to the world. The most popular method of doing so right now is by using Github, and I highly recommend it for two reasons. First, it’s the current trend, so it’s expected of an open source developer to have code hosted there. Second, it teaches you how to use Source Control; an invaluable tool in the industry. Once you get started, it’ll all be a breeze. Commit your code, and watch as the masses peruse and download your life’s work.
Don’t Give Up
There will be bugs. It will be broken. People will complain. These are all good things! Everything is a learning experience , so treat it as such. As a developer of open source software, you provide no warranty to the people who use your code, and don’t need to feel bad if it breaks. Keep in mind, however, that this doesn’t mean you can’t fix it. You’ve released a project that people are interested in. People know who you are. Don’t let them down; finish what you started, and get a working project done. Keep it up to date with bug fixes, code refactoring, and optimization.
Summer Time
June 29, 2010 on 8:13 pm | In Uncategorized | No CommentsIt’s finally summer time, and that means heading out camping, going to cottage country, relaxing on the deck, summer vacation (for a lot of you), and apparently earthquakes and riots if you live in or around Toronto, ON.
On the business side of things, I’ve got a lot going on. Fluid Media Inc. recently revamped their website, and we now have a blog where all the employees can contribute. Feel free to check it out any time, and you’ll be able to see what kind of projects I’m working on, and what I’m learning in my day-to-day experience at Fluid Media.
Fluid Media also sent the entire development team down to Baltimore for the fifth annual RailsConf. It was a great experience, and I learned a lot of new things I didn’t know about before. On the same note, I got a lot of ideas that could improve existing projects, and have a better understanding of how many things work. Bart Jedrocha (A very talented developer at FMi) and I attended the Google Hackathon, where we got free food, beer, and networked with some of the Google Engineers. It was great fun all around, and I fully expect to be there for next year.
So what exactly am I working on now? A lot of things. After I do my 9 to 5 at work, I come home and am trying to get a nice design down to replace the one currently in use at mtrpcic.net. I’ve also got some open source projects I’d like to both start, and contribute to. If only there were 30 hours in a day, I might have enough time to get it all done.
Now, it’s time for me to succumb to one of my newer addictions. I’ve started watching Lost, and it’s consuming every waking moment.
All Work and No Play
April 6, 2010 on 3:26 pm | In Uncategorized | No CommentsDuring classes, I always found myself thinking about how I was so busy. I had homework to do, final projects to complete, and even some studying here and there. “Oh boy,” I would think, “When I graduate, I’ll have much more time on my hands!” Ahh, the naivete of youth!
Working full time is just as time consuming as my coursework was - if not more. An 8 hour day, with ~2 hours of transit throughout the day is quite a bit, and with other things to do (keep in touch with friends, go to the gym, play videogames, etc), it leaves little time to accomplish all the things I told myself I would do in my last few weeks of school.
Keep in mind that I’m not complaining. It’s just an observation; something I noticed and decided I’d point out to anyone making the same promises to themselves. Don’t expect life without homework to be easy and full of spare time, because it never is. It seems that no matter how much time I have available, I have about 10 hours too little to accomplish everything I want to get done.
I’ve got personal projects on the go, and ones that I’ve yet to start but have been scrawled in my notepad for months. I’ve got games for the Playstation 3 that are piling up on my floor. I’ve got McMaster applications, Passport renewals, and taxes.
The only thing I don’t have is time.
A New Year
January 11, 2010 on 10:16 pm | In Uncategorized | No CommentsNovember came and went, and December decided to quickly follow suit. We’re not approaching mid January of a new decade, and I find myself available to spend my time writing another blog post. I’m truly well and done my tenure at Mohawk College, and am in the process of deciding what I should do with the rest of my life. Through the co-op program, I managed to secure what may be the best job I could have imagined, and I plan to be there for the next few years at least. But right now, where exactly do I go?
Well, I’m fairly sure that I’m going to be applying to McMaster University to be a part of the Bachelor of Technology program. It is a great opportunity to great a Bachelors degree, which never hurts. If I’m so inclined, I can even go for a Masters afterward, but that’s another decision entirely. It’s an option that I encourage any person in the Software Developer program to consider, and there are many programs of a similar nature for other courses at Mohawk.
As far as work goes, I’ve already mentioned that I’ve been fairly lucky when it comes to employers. My first co-op was excellent, although quite a ways away. My second one (and current full time job) has blown me away in ways that I couldn’t even imagine. It’s a fantastic place to work, and somehow gets better every month.
I’m working on a few side projects of my own, and will be releasing some open source code within the next 6 months. It’s nice to have a static 9 to 5 schedule now, since it allows me to plan weeks in advance without having to worry about homework, changing class schedules, etc. It’s a hidden bonus that a full time job provides, and it’s one you don’t realize until you’re in the throws of the job.
Other than that, there’s not much to mention. School is done, life is starting. I hope everyone had a happy new year.
I’m out, possibly for the last time.
Later.
Whoops…I Forgot
November 2, 2009 on 1:03 pm | In Uncategorized | No CommentsIt’s hard to imagine that someone could entirely forget about something that was meant to be a weekly endeavor, but it happened. I’m almost positive that this isn’t the first time I’ve forgotten to write on my Mohawk College Blog. Seasons have come and gone. I’ve started my final semester of classes at Mohawk, and have ended my last co-op term.
Over the last few months I’ve been incredibly busy with work and school, and have been setting up my website for some projects of my own as well. Classes this semester aren’t particularly hard, but there’s a fair amount of work, which makes balancing school, work, and a personal life difficult at times. It’s a delicate balance, which I doubt I’ll perfect before I graduate.
As far as work goes, we’ve been doing some pretty fantastic things. We’re all learning a lot about system architecture, and some changes around the office have made it an even better place to work. If anyone in the Software Engineering and/or Software Developer program is hunting for co-ops, I highly recommend applying at Fluid Media.
In regards to my personal stuff, well that’s been going pretty good as well. I’ve got a blog in the works on my website that I’ll start using once I graduate. I’m also in the process of getting a few projects set up on my server, along with a TRAC instance and/or public Github accounts. We’ll have to wait and see how things go with those though, as my spare minutes are few and far between.
In the mean time, I think I’ll get back to work. These websites don’t build themselves.
The Benefits of Classes
July 29, 2009 on 11:33 am | In Uncategorized | No CommentsI’m roughly 75% of the way through my third (and final) co-op work term. The time continues to fly by, and week after week brings me that much closer to heading back to classes. I’ve been thinking recently whether or not I prefer working full time, or going to classes full time, and it’s definitely a difficult decision to make.
During classes I often sleep in late (sometimes due to my schedule, sometimes due to my not-wanting-to-wake-up-that-early), and have a lot more spare time to spend with friends and on personal projects. There’s also the guarantee of seeing friends on a near daily basis, which you don’t have during a work term.
On the other hand, there’s a strong financial incentive to want to stay working. The experience is great, and if you luck out and get some great co-op positions like I did, you have coworkers who are as much a friend as they are a colleague. Don’t forget that you don’t have to do any homework either (other than your weekly co-op log sheets, but that’s not so hard).
Either way, I’m looking forward to seeing my new timetable, hanging out with friends after class, and to getting back into school for my one final semester.
Where is the time?
July 16, 2009 on 11:14 am | In Uncategorized | No CommentsProgramming is fun. I would hope that anyone that goes into my program should feel the same way. The only problem with this is that there’s never enough time to do all the things I want to do. I’m currently working full time, as well as part time, and in the near future I’ll be heading back to class for my sixth and final semester of classes. All this work and school leaves very little time to work on projects that genuinely interest you on a personal level.
At my fulltime job I’m doing interesting work creating all sorts of functionality for web applications in many different fields. My favourite so far would be Skinnyboard, which was mentioned in my previous post. At my part-time job at Storeimage, my current project is an interesting one relating to business applications. At Fluid Media I get to use Ruby on Rails (which I find fun), and at Storeimage I get to use ExtJS (which I find fun as well). This means two things. One, both of my jobs are cool. Two, I get distracted by work too often, and forget to do what I want to do. I sometimes forget to eat.
I think the real challenge is finding a healthy balance between work-coding and personal-coding, and then fitting that balance somewhere in your schedule. It’s definitely a hard thing to effectively balance out, and I haven’t seemed to figure it out just yet.
Old Dog, New Tricks
July 5, 2009 on 8:05 pm | In Uncategorized | No CommentsOne of the great things about the co-op program at Mohawk College (and, presumably every other college with one), is the inevitable learning experience a student will go through during his/her work terms. The great thing about both of my co-ops thus far is that I’ve been introduced two technologies that don’t get any coverage in my program. This is no fault of Mohawk College; there simply isn’t enough time to cover such broad a topic as “Computer Programming.” There are hundreds of programming languages, a plethora of paradigms, and a figurative ton of frameworks to accomplish nearly any task.
After working through roughly half of my current work term, I thought it’d be a good time to let everyone know what I actually do at my current job, what I’ve worked on, and what technologies I use.
Skinnyboard.com
Skinnyboard is a tool for agile development teams to plot goals, deadlines, tasks, priorities, and more. Every project has a board, and every board has stories. These stories represent a stage in the development process. For example, one story may be “Build mock interface,” while another is, “set up database indexes.” There’s no limit to the number of stories on a board. You can then prioritize the stories in the order that seems most important at the current point in time. You take it a step further by adding tasks to your stories. You can assign users to a task, and give it a value, in hours, to represent how much development time has been alotted for it. Doing this allows a development team to stay on schedule, and to stay one step ahead of the game. You can find more information here.
CouchDB
Most of the well known database are what you call a “Relational Database.” What that means is that data is organized into rows in a table, and you can tie one row to another via the use of ID’s. For example, you can say the car with ID # 123 belongs to the person who has ID # 456. Every database we’re taught at Mohawk college falls into this category. However, CouchDB is a step outside the box. It’s a “Document Oriented” database. There’s no schema, no organization of your data. You simply have “documents”, and you can put whatever data in them you like. The hardest part of learning how to use this has been unlearning everything else I know about how a database is supposed to work. It’s a definite learning experience, and even after 3 weeks of working with it, I still have no idea how to do some things.
jQuery
jQuery is by far one of the coolest technologies that I’ve ever seen. It’s a javascript framework that allows incredible manipulation of web pages, specifically via the “Document Object Model“. It allows you to do some truly amazing things, with very little effort. I’ve used this at both my current and previous co-op positions, and am glad that I’ve ahd the opportunity to play with it. Anyone who’s interested in taking this program should be happy to know that this is used in the semester 5 “Programming for E-Commerce 1″ class, and presumable the semester 6 edition as well.
ExtJS
ExtJS is an incredibly powerful framework for building rich Graphical User Interfaces inside the browser, entirely with Javascript. It’s cross platform, and supports all modern browsers, as well as many of the older ones. The amount of functionality that comes bundled with this framework is mind boggling, and community behind it is constantly coming up with extensions, modifications, themes, and plugins. It’s my favourite frontend web technology, and holds that crown for good reason. You can see examples of some of the amazing things it can do here.
Ruby on Rails
When I first learned that I’d be working with Ruby on Rails for this co-op, I was a little bit conflicted. On the one hand, it’s a pure MVC Framework that follows strict rules and patterns to stay consistent, has a very committed community, and is widely considered to be a powerful tool in the web deveopment field. On the other hand, I had heard rumours about it’s sluggish benchmarks, bad design choices, and nearly religious fanbase. After 2 months of working day in and day out with Ruby on Rails, I’ll admit that I’ve become a fan. Ruby is easy to learn, and has some amazingly convenient built-in features. Rails is a genuinely fun framework to develop in, and has the functionality built in to generate half of your code for you. All of the above, combined with the plugins and gems allows you to develop rich applications in short order, with little to no hastle.
As you can see from the list above, I’ve learned and used a lot of new technologies in the roughly 1 year I’ve accumulated on the job. I encourage everyone who’s interested in this field to look at the pages I’ve linked above, as all of them helped me figure out what I was doing, and how to get started. I’ll try to keep this updated as new technologies pop up, and as new projects start to eat up all my time.
Graphic Design is Clearly Not My Forte
June 22, 2009 on 9:36 pm | In Uncategorized | No CommentsI’ve been spending my spare time working on the GameStats project (which was mentioned in my post from earlier today), and have realized one thing in particular. I am a horrible designer. I know how to implement the design. I know how to write the Cascading Style Sheets. I do not know how to make a design look passable. Somehow, I can start with a design full of vibrant hues of light blues, greens, and teals, and end up with a black background and two shades of gray for text and borders. It’s a mystery, and a curse.
Since I’m working on these new side projects to have some interesting experiences, add to my resume, and learn how things are done, I was thinking, “Maybe somebody else out there wants to do the same thing.” So here’s my open request to any graphic or web designers (particularly students at Mohawk College) to email me at mike@mtrpcic.net with some basic information about yourself (name, age, etc). You’ll gain valuable experiences, such as (but not limited to):
- Working in a team environment
- Working with Source Control (such as CVS, SVN, and Git)
- Integration between design/development
- Learn new technologies (Ruby on Rails, jQuery, ExtJS, et al)
- Be awesome
If you’re interested, drop me a line and I’ll get back to you as soon as I can. Keep in mind that I’m not going to be dropping passwords to anyone who emails me; you’ll have to show me that you’re qualified enough to learn before I get you started.