Showing posts with label Work Life. Show all posts
Showing posts with label Work Life. Show all posts

Wednesday, August 5, 2015

Prepare for the Best

Formals, shoes and laptop bag are just to name a few things which students purchase before their their respective joining but there is a lot more you can do which might help you adjust better and prove your worth in a new environment.
I had previously written a blog post on how can you make best use of your onboarding sessions but that is handy when your team is giving new joinees required training however in this article I will cover a few topics which you as freshers can cover to enjoy that extra edge ! !
So here are a few topics which you must try to read about before joining for a smoother onboarding:
      1.)   Know at least one SCM
SCM aka Source code Management systems are the tools or repositories which teams use to coordinate code changes. If you are already a Github user than you may proceed to the next point but if the term SCMs sounds new to you then read about them. There a lot of such tools available such as Git, Perforce, CVS etc but git is the most popularly used. Here is the link to an article I wrote on SCMs.

      2.)   Prepare your toolkit
A lot of times hiring is done without even telling students the team’s name(specially in case of freshers mass recruitment) but there is a good probability that you would know that in which technology will you work on. Give maximum time to know what all tools/editors are available for that technology. For ex: if you going to work on Java try using Eclipse or IntelliJ. Make a simple program say to add two numbers and learn how to debug programs or view run time values on these editors.  Following are some other tools you may want to know about : Tomcat, VisualVM, Junit, Mockito, Jenkins etc.

      3.)   Acquire business knowledge
Say you will join finance based company as a software developer so you must try to know at least explore basic terms like Loans, EMI, interest, mortgage etc. Even though this information may or may not be used but still extra knowledge specially the one related to your field will never hurt. Or say, in case of e-commerce companies try to go through their engineering blog if there is any. You may find some key words.

      4.)   Search and search more for technical terms
Read architecture of well established companies like Facebook, Google, Linkedin. You will come across a lot of technical terms and latest technologies which these tech giants use such as database system, hardware layer, security aspect etc. Also when you come across these terms try to find out difference between them for ex: you may search for difference in basic terms like framework vs library, tier vs layer, component vs module etc.

      5.)   Know basic Linux commands
I can not emphasise more on this point but irrespective of the fact which platform you work on: windows, mac or Linux you will some or the other time end up using Linux commands or relying on shell scripts. Learn basics command such as sudo, ls, directory related commands, SSH, SCP etc. You may also install VMWare and ubuntu image and play around with basic commands.

      6.)   Development cycle strategies
There are standard strategies which each company/teams follow like some may follow waterfall, some may follow Agile development. Read about these strategies and what is the ideology behind them. Also there are softwares used to track progress of product ex Jira, Murmur, Trello to keep track of work and fisheye for code reviews. Introduce yourself to these tools.

      7.)   Basic of  Software architecture
If you have already covered all the points mentioned above then you may want to go ahead with learning Software Architecture. You may begin by knowing difference between Software Design and software architecture. Then move on to understand architecture of famous technologies like Hadoop, Mongo or Cassandra. Study about SOA and micro-services architecture.

Disclaimer: Once you are done with this basic preparation, join your team with an open mind and try to learn as much as possible. Make best use of orientation session.  These points will definitely help you to adjust yourself better amongst new people but the list is not exhaustive. These topics are just tip of an iceberg there will be a lot more for you to learn, implement and explore. All you can do is to prepare and hope for best ! !


Wednesday, July 22, 2015

Pride Management ? How much to ask ?

About a week ago, a group of freshers joined my team as software developers. I was asked to conduct their training on technologies like Java, tomcat,  maven and a few concepts like continuous integration and continuous development etc. Through out my life I have been very enthusiastic and proactive about helping my juniors or colleagues but this was for the first time when a group of naïve technologists, sitting in a semi circle with pens in their hands, ready to jot down every word I said were looking forward to not just casual help but but also to form a foundation to prove their worth in the team. This reminded me of my Onboarding days also know as “Honeymoon” period when I started working, super excited to make a difference and to prove my worth in the team just like these freshers. My mentor helped me checkout latest code from the repository and introduced me to a tech term - “SVN”.  I searched online what SVN meant and found a plethora of other technologies which were almost same as this SVN. Then I starting exploring the folder structure and with every java file I read, with every design pattern I recognised (Factory pattern or Builder Pattern) I felt as if I was unraveling a mystery. Now coming back to the Onboarding session I was conducting in a meeting room I decided to put Java, CI/CD pipeline concept on hold and shared some lessons with them which I learnt in my “Honeymoon period” .

Should I follow my pride and sit back or should I get up and ask for help.
This was the dilemma I faced during the Onboarding days. I thought that asking for help in very first few days of my job will portray me as a lackadaisical fem-engineer. I thought I might end up give the impression that I am not inquisitive at all and believe in running for help for every minor question. So, I made an “intelligent” decision and I chose the extreme that is to prove my worth with smart work/extra work and not ask a single question to any of my senior.
This was not as intelligent as it appealed to me when I was a fresher. Not asking questions or trying to figure out everything by yourself just portrays an fresher as a solo-worker and not a team player. It might even convey an unintended message that the fresher is uninterested in the on-going. Do some pride engineering to come up with a balanced approach which will help you bring out your best qualities.

What to ask and what not to ask
This point may act as an input to do that optimised pride engineering I just talked about. Bothering your seniors with every single question or every minor tech question may make you sound like an amateur who doesn’t respect the fact that you might be a newbie but others do have deadlines and product to deliver. So, how should you maintain that delicate balance ? The simple approach is to categories your question into technical and business related questions. For ex: Say you are asked to run/write new unit test cases (which is the standard Onboarding process followed by a lot of companies) and you get an error say “No tests found with test runner JUnit 4”. So there is no point running to your seniors for this. Search StackOverflow or other technical blogs for such minor issues you will surely find a solution. Do some hit and trial. But if you are issues related to business or domain logic, take a note of 3-5 doubts and then take it to your seniors. It will bring out a shade of your professional qualities.

Disclaimer: If you are unable to resolve a tech problems after trying 5-6 different approaches, better tell about it to your senior. But be prepared to list of various methodologies/resources you followed to resolve it.

Do Not underestimate the impression given during “Onboarding”
Human beings are often dictated by preconceived notions or ingrained ideas in their minds. The intentions or the ideas conveyed about your personality are not easy to override in your subsequent months. Often freshers find it hard to understand “corporate” culture mainly because not everyone is alike. Not all colleagues are as easy going as your college friends neither all colleagues are malefactors. So join the team with an open mind don’t expect people to be saints or wrongdoers just on basis of what you hear around. Try to bring out best colours of your qualities.

Just “Keep calm and Do your best”.

Tuesday, January 6, 2015

Google Women Techmaker - 2014 - My experience :)

One of the aim of this blog is to encourage women in technology. So, I thought that it is best time to write my first post specially targeting this aim. What can be a more motivating than getting a chance to get training from Google and  a chance to interact with Google's employee while enjoying Google food.

Since my college days, Google has been one of my dream company and so it is for almost every software engineer. But I did get a chance to visit Google Bangalore office, get training from Speechless and join the Google's cause to help motivate women in technology.

This all began around October, 2014 when I came across a form from Google saying it is inviting applications for women/girls who are in technology and feel for the cause of motivating others. I was super delighted to see the form because I was thinking about doing something to help budding technologists and this seemed to me a perfect opportunity. So I read on, there were two essays with no word limit which the candidates were supposed to fill. One of the questions was what was your motivation  that you made you women in technology and what are your goals/objective another question was why do feel for this cause of helping the female technologists.
I submitted the application and then waited and waited. After around 15 days or so I received a mail congratulating me for getting selected in Techmakers program. They selected 10 girls from all over India.
Then a Program Manager scheduled a call with all the selected techmakers individually and we were supposed to confirm the dates. As I was supposed to fly from Delhi to Bangalore twice once around November beginning and next time around December beginning.

Skipping to the day of training. This time the aim was to introduce the techmakers to each other. Meet the PMs involved in this program. I also met the Country Head of Startup Support ecosystem at Google and other employees of Google Bangalore. There was also a team which had come to the Bangalore's office from Google Hyderabad. Another aim of this visit to give us public speaking training which would ultimately help us to motivate women in technology. The best part about the training was that no matter how much it sounds non-tech but there were a lot of technical discussions going on there.I came across other programs in which Google acts a technical support for start up ecosystem. I interacted with software developers there to know what exactly do they work on in this office.
For the training purpose. Actors/comedian from Speechless had come to India specially. That training was the best of all the trainings.The training began with a weird game in which all the candidates and PMs of Google were made to stand in a circle and we were supposed to innovate various sounds or body actions. Then the aim was to pretend that we are giving something delicate to someone else in different styles. After every one hour we would get break time. In which we used to explore every corner of Google's office. From Oatmeal to super amazing but unhealthy giant brownies. From a toffee to ice-cream, fruits we had so much to chose from. Note - lunch was altogether a different meal. In our next training session, we were divided in groups of 2 and we were asked to come in front of presentations. We didn't know what was there in the slides but we knew the story line around which we were supposed to speak. We chose Hindu mythology Ramayan. So, a random slide used to come on screen, say an exploding bulb or tree inside a house or green star and we were supposed to speak using the objects shown in slide and sticking to the story line we had picked in the beginning. Then we had an amazing lunch.
After lunch each techmaker was asked to come on stage and tell her story. THIS WAS THE BEST PART OF THIS ENTIRE PROGRAM. The stories were so different yet so encouraging and motivating. I prepared a story of around 9 min in my head but once I went on stage I skipped the unnecessary part and finished it in merely 4 min. I was given the feedback to include the details and go more in depth. Then we had dinner with Google team :) and we headed back to our hotel.

Next day real work began. Target was to shoot a a 4-5 min video. The content could be or could not be in line with our final video's script. This time aim was not to get the script right but to get us friendly with the camera. Each one of us got a chance to become director, producer, camera man, mic man, make up artist etc. It was fun to play all these roles that too with a professional camera and editing system right in front of you. In one of the practice session, a techmaker was speaking somewhere around the middle of her script another girl said CUT,STOP IT. We all were shocked and literally scared. It was like we were lost in the silence of the room with just one voice speaking. We asked her what happened and it turned out the speaker was not wearing a mike while the camera was rolling. We had an amazing time.
At the end of the day, 3 best videos were replayed. We were given a book/reading material and a super cool Women Techmaker logo stickers shown on the top of the screen. I have these stickers on both of my laptops to remind me about objective of this program every time I look at my laptops.

After I came back to Delhi, merely after a week our so, we started getting mails to prepare for the main day. We were sent literally 10 TB of videos/articles etc to help us make our final script. And each week we used to have around an hour call with Google Hyderabad PMs who met us in Bangalore. The first script which I wrote and the final one had only "is", "was", "the" common in them. The script went through so many changes. On the day of shoot, I was so tired because of flight and all that I asked all girls - present on that day to get their videos shot before me. Finally when my turn came I gave my best shot with a minor fumble in one word. They asked me to give another shot but I don't know was it the lights glaring right on my face or was it the relief that my first video was pretty good, I could never speak more than 15 sec. I either used to fumble badly or used to discover a new word while speaking the script. One time rather than saying opportunistic I said oppotunityyyIstic and then I was wondering  whether it is a word or not. Finally, after giving 3-4 such 15-25 sec shots I gave up and said I am okay with first video itself.
Then I was given a logitech camera to shoot videos and a shrug with [W] logo.
Next day I took my flight to Hyderabad, to meet a friend and then came back to Delhi.

We get mails from the PMs now and then suggesting us some good reads.

No doubts the experience was amazing, innovative, technical, funny and unforgettable. I met the one of the finest people in technology who were not only professional but also down to earth. I met with such fine other female developers and discussed with them what all problems I feel that I faced being a part of minority group in the technical industry and got their advice too.

Once again thanks Google. This time not for the pic or URLs but for one of the most amazing learning of my life.And for actually taking a step forward to motivate women in technology rather than sitting back and just publishing statements on newspaper that "companies should aim for diversity."


Tuesday, December 30, 2014

How do software engineers work as a professional ? ! ! ?

The following image pretty much sums up my college life when I was in 3rd year.


Third year of college is the most important year in one's life because it is then when we have to decide whether we want to continue with the technical domain and wait for some computer giant companies to hire us or should we switch to some other domain and leave computers behind by giving a management exam like GMAT or CAT or should we go abroad to pursue M.S in computers and live the American dream.

NOTE :- I have intentionally written "we" because our seniors/alumni/classmates/batch mates are also a part of this decision.

THE ASSUMPTIONS ERA

I too faced the same dilemma back in college when more than one half of the class started preparing for GMAT/CAT ,  about 5% of my class started preparing for M.S and the rest started preparing for the campus placement session. I belonged to this third category There were the students who were also preparing for CAT/GMAT side by side and kept the option for tech/non-tech placement open for them.
I had no interest in MBA - by the way I figured this out after I joined a well known MBA classes in Delhi area. It had nothing to do with the teachers/coaching classes but lets say it was my inner voice. I didn't have the courage/money to pursue MS from U.S and leave everything behind. So, by following the method of elimination I figured out that the only option I had was to prepare for placement session and hope to get placed in a super amazing tech company. 
Browsing, through the websites like Geeksforgeeks or Cracking the Coding interview.I often used to wonder that how software engineers work in big tech giants like Google, Microsoft and Adobe. Another important question which used to linger in my head was how do sites like GeeksforGeeks and CareerCup help us become a better engineers once we get placed. So I assumed that all questions like reversal of link list, maximum sub-sequence problems are miniature of real life problems which software engineers face everyday. And I started solving algorithm/programming problems on daily basis and continued with my research based projects.  

REALITY
In my opinion when a fresher joins a company, the fresher is already afraid and the rest who are working on some projects will make sure that the freshers gets even more uncomfortable and they start throwing new words/technical Jargon/domain knowledge on you for the sake of "Ramp Up" session. Now there will be one person in the team who will be serving the notice period and will have all wrong things to say which a fresher does not want to listen. And the fresher will think I literally killed myself for this job and this guy is leaving this job seriously ? What is wrong with him ? The answer to this question or rather I should say truth of life is no wonder which company you get in from your campus placement there will be a hundreds of people leaving the company on your joining day and other hundred who will be preparing to become your colleagues in near future. So this outflow and inflow of employees is not big deal.

Now coming to the topic of today's post that how do the software engineers work. 
First of all you need to understand a general structure of a team.
A company is composed of a numerous teams. Your future with that company depends on that team and not on the company's name itself.
Now this team generally consists of  :-
1.)  Senior Manager  
Now this person does not code but is usually the most intelligent person in the team.This person knows all the domain/business knowledge and is the face of your team for the outside world.

2.)  Program Manager (PM)
If you have studied that topic of Requirement Engineering as a part of software engineering course in your undergrad then you have your answer. This person gathers all the requirements of what the product/API is supposed to do. Refer image below

3.)  People Manager
The person who makes sure that you are happy in the team. This person approves your holiday and reimbursement requests. If you have some permission issues or need a new laptop from the company or want to get an early cab he should be our contact person. They are also involved in making sure that you are assigned work as per your expertise/interests.

4.)  Software Architect
Decides technologies to used. Does software design, mentors you to manage the software and deployment process extra. Unlike college, where getting some output on console was considered more than enough, in professional world you should also know the response time of your service. In other words in college/placement sessions it is enough to know whether insertion in a link list will take O(1) – assuming you have tail pointer or will it take O(n) – you just have start pointer. But here you need to know response time of your service exactly. You need to work on scalability of the service/product etc. You need to work in coordination with testers to find how much time will the 99% of the requests take. One of such parameters is called TP99.

5.)  Software Development Engineer
This is where you come in picture. The one who rights the code from the requirements as given by the requirement set from Program Manager and the architecture/design as decided by the software architect.

6.)  DataBase Engineer
Writes stored procedures, manages DB be it on Sql or NoSql technology. Has the entire knowledge of database architecture. Will never give you the admin rights to insert or delete a column at your own free will. Writes queries for you which you didn’t even know exist in the world. Personal Experience – I didn’t know that I can search a database to get a list of table which contain a column name with something like “xyz”. The query can be easily be found at stack overflow - just in case you are wondering.

7.)  Software Test Engineer
Person who files bugs on your name in Jira or Trello as per your companies standard directions. Tests the application/service you made either manually or the technology stack which your company follows.

Having introduced you to various roles and responsibilities you can find in a team. Now let me touch upon the process of work getting assigned to you. Most companies these days have started following Agile Development

Though I have never heard of a company where Agile development is followed ideally but this is what companies aim to achieve. One of the component of Agile development is Excessive Preparation/Planning also known as Sprint planning.
Sprint in simplistic terms means a cycle. A company may follow a sprint of one week or a month. Two week period is assumed to be idealistic. So a PM sends engineers, architect/lead a meeting invite. PM opens a Jira/Trello/similar issue tracking software dashboard. So, for ex if you are supposed to design a restful Java API so that a user can insert a record. If you have completed insertion API without testing or performance number. So now backlog will contain to two stories 1.) Test the API
2.) Get performance number of API. As per the capacity or number of man hours available in the sprint stories will be picked.

NOTE :- Stories consists of tasks. Tasks is something doable like code/review request etc. After breaking a story into a task, these tasks get assigned to the software developer/tester/architect/database architect.
So next day onward of  the sprint planning meeting you have daily meeting of 15 min. Now this is where the actual work gets discussed. Engineers discuss what issues they are facing. Or if they need some kind of database permissions etc.


FINAL COMMENTS
That is how a software engineer gets allocated the work and finally they start writing the code/documentation/class diagram as required. A software engineer’s job is not necessarily all about just writing the code blindly in isolation without getting any acknowledgement. It involves understanding requirements and which of these requirements require immediate attention and which of them can be delayed to next sprint. It involves proper justification of why your method/approach is better.
Software engineers play table tennis, foosball, snake & ladder and sometimes chess too. Though we never meet the clients of our product directly but this does not means we live a life never seeing light of the day.

P.S – This lifestyle is more about a product based companies where a development is going on. Service based companies have a bit different lifestyle and Startup culture is totally different and is super fast. And if you are working in a team where even though you are a software engineer but your work involves mainly the maintenance of an engineer's life might be pretty different.

P.P.S – Special thanks to Google for the images.