Tuesday, October 14, 2014

Ten Questions you'd want to consider asking when interviewed for a Ruby on Rails position

Taking a decision to move on from your current company or may be even joining a new company in itself as a fresher out of college is not a small decision. A lots of lives can be impacted directly/indirectly by the decision you'd take on which company you'd want to join. Everybody would want to make this as right as they possibly could. Below are just some pointers that I learnt from experience about the questions one should ideally ask before embarking on a journey of exploring newer pastures. Hope asking these questions would help you better decide which company would be most suitable for you going forward. Please be noted this list is not exhaustive and has no direct/indirect bearing on any company in particular whatsoever.

1. What is the version of Ruby and Rails currently being used in the project? If it is an old one, do they plan to upgrade sometime in the near future or this isn't currently on their road map?
2. What is the development environment like?. This question can prove to be quite important to ask because some enterprise companies don't use dev environments like Linux/Mac directly i.e., in other words for instance they might use a Virtual Machine or connect to a remote box(like connect to a linux box via putty) for various security related reasons which they might have.
3. One more question that I've learnt from experience that might be worth asking is does company allow access to blogs, social networking sites(like Twitter, Facebook etc.,) and video sharing sites like Youtube. Access to these sites can really prove handy as part of your day to day development when one is looking for some help through tutorials, guidance etc.,
4. Do you have download access? This is something that'll prove pretty handy whenever as a hacker you'd want to experiment with new stuff(and thereby install the related tools, packages etc.,) and whose true value you'd want to demonstrate through a proof of concept to any stake holder of the company for which you'd be working. Sometimes getting download access to install gems in big companies can also be a challenge in itself especially if they don't have any other teams within the company who are already working on projects that use Rails.
5. Can you please tell me more about the project and how much of it is rails based? Certain projects use rails but may be not completely, the core part of some projects might be some other framework or language. It's important to know how integral is rails as a part of the project as this can give you a direct or indirect idea to what extent does Rails actually bring value to the table which thereby can even give you a hint of how important could be your role or contribution to this project on an ongoing basis.
6. Do you do Test Drive Development or basically is your code driven by automated test cases. Do you use Continuous Integration(CI) tools like Jenkins etc.,
7. What source code management system do you use as part of day to day development(Git, SVN etc.,).
8. What software development models(agile, waterfall etc.,) do use for the projects? Go a step further sometimes, if they say agile for instance ask explicitly for what software development methods(like SCRUM, Extreme Programming etc.,) in Agile do they use for their day to day projects.
9. a. Are the working hours flexible?. Sometimes as a developer what you'd want most is the flexibility to work when you think you'd be most productive. Of course, in addition to this there might be a couple of times when you'd have to run some personal errands for which you'd not be able to login to office during normal working hours.
b. Is there a work from home option?(This can matter a lot if you'd really want to save the time you'd otherwise lose in traveling to office and your way back). Don't be hesitant to ask this as many startups already provide this option as they value your time. You can check if this can be provided on a periodical basis(from time to time) if not on a continuous basis.
10. What are my roles and responsibilities as part of this project and team? What would be the expectations from me once I join the team?

These are ten main questions I can think of that really mattered at least to me based on my experience of being interviewed thus far for a Ruby on Rails opening, I'm sure there are a lot of other questions that can be added on, but I hope answers to these questions help you better decide on where to join next.

P.S: Please feel free to add additional questions as comments to the blog post if you think asking these questions would prove really handy.

Thursday, October 9, 2014

Books - your next best mentor

For a long time I was of the opinion I have read a lot of books back in school and college days and I wouldn't probably ever have to read that much going forward, from thereon. With the advent of online tutorials(videos, blogs etc.,), sometimes, there used to be a feeling within me that one can learn faster through videos and similar media then why should I even consider reading books that much?. I thought reading books might be more time consuming compared to these alternate resources at my disposal. That's kinda true but doesn't really apply always. Below is an experience that I went through which may tell you why..

Recently, I had applied for a job to a company where their first round of interview was actually a coding assignment. The way this works is, you're given a problem statement and you have to solve it within two days(ideally this is taken up by a candidate during a weekend). After submitting the solution to the problem I had requested them for some feedback. The interviewer was kind enough to share the same and highlighted a couple of important pointers after reviewing the submitted code. Overall, out of all the points shared in the form of feedback by the interviewer, I was able to clearly comprehend only some of them.

Out of the points I couldn't really understand very clearly was that my logic to the solution was procedural. I did know what procedural programming is but I couldn't really get a succinct understanding of how I was writing procedural code using an object oriented language like Ruby as part of my solution. This might seem very technical, if you're a non techie who is reading this but the basic point that I'm trying to drive home here is I was for a while lost as to how can I improve further on the quality of my code or solutions that I'd submit going forward without guidance from a physical mentor.

As a work around, I took to reading this book by Sandi Metz called POODR. I had heard enough through people's reviews/recommendations about this book before I decided to give it a shot. It not only helped me better understand what I was missing with respect to my solution but also really opened my mind to looking at developing solutions differently at least from what I had learnt thus far.

This overall experience made me reflect that sometimes, when you don't have an actual physical mentor to guide you, you can with no second thoughts rely on books. After all, people who've written books also would have their experiences and them sharing it in the form of a collection of many articles is for us learn from their experiences and broaden our ways of thinking by looking at things from another's perspective.

One more thing when I look back from this experience, I realized I was actually reading some books even as part of my professional career, not that religiously but definitely I was picking up some important lessons that I could apply in my job here and there. It was just that I didn't realize the true value of those books back then.

From now on, I'm going to make it a point to read more books regularly as they can really help me not only when I need guidance but also to open my mind to new ways of thinking, sometimes making me think - "Hey!, why didn't I think about that :)". Just one thing, just make sure you choose your books wisely. So what book are you going to read next ?:).