Friday, September 2, 2016

Sharpening / Upgrading skillsets

It's another challenging / interesting aspect of IT. New languages / platform(s) keep emerging and if one is not actively updating / upgrading one's skill-sets, it may get too difficult to learn it all once.  Irrespective of how old or young one is, the industry is competitive - one gets to wok with / compete with  college freshers, interns etc.. - who have their brains and bodies fully functional. Of-course the knowledge acquired with experience, is always valuable .

Talking / working with friends, I have figured out several efficient way(s) of upgrading / sharpening skill sets. Taking online courses is another efficient way of learning / doing things. Here are some of my collection(s) , which I have found to be extremely helpful.


https://stacksocial.com/
https://www.udemy.com/courses/
https://app.pluralsight.com/library/
https://www.codeschool.com/

I found plural sight to be the best of all these and extremely incredible. In addition tot hat having accounts with serverside, github etc.. is all good.

Rock and Roll...

Thursday, September 1, 2016

Problem Solving...

That's the most fun part about programming. Especially about interviews. Recently I had a really fun interview, with about 2 problems to be solved.

1. Given a multidimensional array , find the minimal path sum.
2. Given a list or group of X & Y co-ordinates, find the closest pair , meaning the set of pairs(X,Y) co-ordinates , which have the minimal distance between them.

The fun part was that, I managed to code them in C# / VS.net 2015 and cleared it.  Here's the wonderful code for it in my public git-hub profile:

https://github.com/srimani75/ProblemSolving


Tuesday, March 8, 2016

C# Interview Questions and Problem Solving..

It's been a crazy week so far. Interviews , phone screenings etc.. back and forth. I thought of saving all the interview questions, before I forgot the, Most of the cases, I did write solutions on Colab site, some were verbal ones etc..



  1. In C# what's the difference between action and a func?
  2. How do you make your code Threadsafe?
  3. What are Threadsafe Collection classes?
  4. MVC - how do you add actions?
  5. What are the cool features of VS.net 2015 ?
  6. How would you reverse a singly linked list without using extra space?
  7. Given an array of PUSH / POP actions in a stack, how would you calculate the max. depth? eg. {0,0,0,1,1,1,0,111,0,1} - maxDepth = 5
  8. TASK vs Thread?
  9. Async and await multi-threading prog. model
  10. Mutex / Semaphores - Do they create a system-wide lock ? (Yes Process/computer wide lock is acquired with Mutex).
  11. What is the use of Type as in System.Type ?
  12. What is polymorphism?




I will post the answers / solutions later.

Wednesday, March 2, 2016

Job Search..

That is always the fun part.


The moment we go on bench ( in consulting) or from the moment  one gets laid off from a permanent position, it's an interesting situation filled with insecurity or anxiety and curiosity. Each time one searches for a new job, one becomes like a college fresher preparing oneself for interviews, sharpening all the technical skills etc. 
Here are some tips to be successful in job search and get placed without any issues.

1. Technical Interviews - Be well prepared . As mentioned earlier securing a job is a priority but personal satisfaction after the interview is also important. Lot of times Interviews help us update our technical knowledge and be well prepared for the future. So, depending on the technology , and problem solving skills etc.. are good ones to prep oneself with.

2. Resume - Resume is the most critical part of a job search. That's like the contents of a currency - which announces itself the value to others. There are multiple views about how to prep a resume. I have heard recruiters tell me that, the resume should be 4-6 pages and any thing before 10 years could be gracefully omitted. But on the other hand in the consulting world,  I was encouraged by recruiters to add all the keywords for a given requirement. But the general rule of Thumb is that, everyone does not know everything in this Universe and as good devs we can pickup skills in the relevant areas with less starting time . But the important points to be noted about resumes are:

  1. For each Project / job one worked make sure to include all the contributions (technology wise ) made in separate bullet points.
  2. Make sure that you have atleast one line per major feature / product etc.. mentioned there.
  3. Even while you are on the job, try to do this exercise every 6 months (Member: nothing is permanent. Everything is subject to changes / termination).
  4. Make a nice precise summary of all the technical skills, degrees earned, certifications etc.. in the very first section of the resume.

3. Post your resume to Job Sites
Thanks to the consulting industry. When I came to the US before almost 15 years my recruiters taught me that lesson. On a daily basis it's good to upload / update resume(s) on the following site(s). That increases the chances of one getting an interview / noticed by the recruiters / employers around the country / globe.

Please refer to this page:

Except for resume rabbit all others are free websites. Please create account(s) there and keep uploading your latest and greatest resumes on a daily basis. But in Craigslist, you may have to apply for the jobs of your choice. Craigslist is very powerful source to hunt for local jobs while all others are applicable across the country. Linked In is also becoming popular these days for job search etc.


Note: While on a job reduce the frequency as you may not be actively looking May be once a month or something should be fine. Without affecting the commitment to you current job, it doesn't hurt to keep the eyes and ears open and for better jobs + that also gives you an assurance that you are marketable (if you get responses).

4. Certifications - Being on bench / undergoing a lay off doesn't have to be too stressful if one is motivated and have saved enough money to sustain for a couple of months (for mortgage and other payments). The best part of it is preparing for certifications and attending certifications on any new skills one wishes to add . For eg. TOGAF / JAVA etc.. or SharePoint. That certainly increases the confidence level in a person and also makes more valuable to any organization. BrainBench, w3 schools are really good ones too while others need you to attend a formal test in a testing center.


Tuesday, March 1, 2016

Tech Interviews..

Tech Interviews..

I have been asked by several of my friends to share interview information. So, I decided to make this as a separate blog , which can be used for future reference(s) etc..

These days the pattern(s), which I see is Panel interviews, where a panel of members would be interviewing. I am briefly writing here about prep / protocol for such interviews.

1. Coding Exercise (with Paired Programming).
2. DB Exercise
3. Culture / General Interview
4. Panel Interview

Especially for FTE roles, most of the local companies prefer as full day or half a day interview schedule with all of the above loops / steps.

1. Coding Exercise / Panel Interview

Here's my observation(s) on the Coding exercise.

1. Always keep watching the core logic of the code (try to observe the Unit Tests if there are nay).
2. TDD - that's the key everywhere.
3. Dont try to get disturbed - feel very calm.
4. Even though there will be two or three others watching / questioning you while you try to code / figure out the logic , work with them and try to look into their eyes to see their expressions and follow them (instead of going on a silo mode and trying to do something by yourself).
5. On purpose the logic / requirements will be very confusing / complicated - just take a deep breath and work it out very patiently.


2. Culture / General Interview

In general show your interest to work with people, as a team etc.. You dont have to open your heart and "bitch" about the bad things in previous work place etc.. - but in a nice manner express what are the striations, you will be more productive etc..

In general all developers tend to be territorial - for reasons of job-security, possessiveness etc.. Everyone understands that. But we can be team players as much as possible. - We can always have a good balance between Silo vs Team culture.


Points to be noted:

1. Each Interview gives us a chance to learn more stuff - technical, negotiation, etc..
2. If one learns good stuff and get better after an interview , that makes one a better developer for that job or next job.
3. Getting the job / not getting the job shouldn't matter as each interview acts as a free mentoring / training session .
4. As long as one feels that, one has done a decent job that's the ultimate goal. Getting selected  or not is all secondary.