Wednesday, November 21, 2012

5 Tips On How To Choose a Company To Work For

Today with many software organizations (and growing), its required to make a smart decision to choose the right organization to work for. The company is a platform where you can showcase your talent. So having the right platform is very essential. Different companies work on different domains. The domain is nothing but the area of work. For example, when we say 'engineering', it could be mechanical engineering, electrical engineering, software engineering etc. Under software engineering itself there are various areas such as telecom domain, banking domain etc. The companies are broadly categorized into product companies and services companies. And there is clear difference between a product and a services company. In this short article, I'm going to write a little on how choose a company that matches your competency.

1.      The Company's Reputation : Its important to see the companies track record and past performance. The consistency in delivering the best products or services to the customers and winning more investors is essential for a good performing company. The company's reputation talks about company's sustainably during tough times.

2.      Size of the company: The company headcount should not, according to me, matter. However people have opinion that the smaller is the company the better it is for employees. May be because employees get more attention by the management. In my opinion this is not really true. The bigger companies have several divisions and each division is a line of business. Usually the employee of one business needs to bother or need to know about the other. Different business may operate independent of each other.

3.      Companies Working on Technologies of your interest: This is an important aspect to consider while choosing a company. There are several technologies and businesses today. It’s essential to understand kind of the technologies that the company deals with. It so happens in Services Companies that the technologies used may change very often and they do not stick with a single technology; because the business is driven by the customer demand. Its recommended to stick to single technology to master it completely for quite a time before you want to learn a new one. Though people say that an employee should be able to adopt new technology in less time, but employee will not be expert in a particular technology.

4.      Company Work Culture: Its not only about just the work and but its about having fun and enjoying the work. Look for what work culture the company has that best suites your interest. It could be about flexible working hours, employee benefits, about the career paths or about employee welfare. Find out if your friends/relatives are already working in the company and get the real good feedback on the work culture.

5.      Good Pay: Probably the most important criteria for choosing the company but it may not be the first criteria. Everyone works for money at the end of the day, so it does really matter and most of the times the good salary and good hikes are the best motivation factors for employees.

Its said wisely that "It is a biggest mistake to assume you are working for somebody else" and this is true. Company is just a platform provided for you. You are actually working for yourself, to meet your life needs. The job that you are doing does not interest you, then you will not continue with the job any more but always find a better platform (company) for you to perform and grow yourself personally and professionally. 


Tuesday, November 20, 2012

Job Oriented Study Tips for Engineering Students

In today's world of diverse systems and technologies, the engineering education system plays an important role in shaping the future of Engineering Students.The students will be taught the subjects that their college University has decided for different branch of studies. Since deciding what branch of engineering to choose is on the student’s themselves, actual goal of what does the student want from engineering study is an important aspect during the course of the study. It so happens that what is taught in the academics is not complete for what is required in the engineering students' job that they are going to pursue in their future.  Most of the time this gap is not realized by the students during the course of their study, because they are not connected to what's happening outside.  Students are lucky if their teacher has worked in the software industry and then taken up a teaching profession. However this is rare. In this post I'm going to talk about the Gap that may exist in engineering education system and how can students tackle it.

Where is the gap in the System?

If you look at the pace that new technologies, solutions are being adopted by various companies, you will see that there is drastic change as opposed to traditional way of development. For example, it’s the era of smart phones/tablets and their apps. It’s the era of cloud computing and software services being ported to the cloud and marketed as SaaS (Software as a Service). It’s the era of adopting new software methodologies such as Scrum (Agile). These are just few examples in the field of software engineering and there are many more for different branches of study. None of these methodologies are there in Engineering Syllabus. As a matter of fact the software engineering syllabus does not change as per the real world technology trend. And this gives raise to the gap in the engineering education. There can be some subjects that are not used at all in the real world. I'm not saying that it’s a pure waste studying the subjects; however, more attention can be given to the subjects that are really used practically in the future engineering jobs.

How should the students deal with this situation?

  • Having said there are gaps, here are some thoughts as what students can do differently to fill this gap. Students have to be clear in the first place that what are their interests and what is their field of interest in engineering and they must stick to that. For example, a student's interest is Computer science, and then the student has to concentrate only on that field of study. I'm saying this because some students change their minds during the course the study and that sort of causes the disruption.
  • Obviously students can't change the subjects that are being taught but they can always see the trends as how the technologies are evolving. It’s not just enough to complete the engineering subjects and get a better grade but its encouraged that the students can always think towards the recent technology trends and keep a pace with those and at least try understanding why the companies are adopting the new technologies/methodologies. This is important because, it’s a general tendency that the students will not think ahead of their study.
  • Talk to your teachers often to find out the practical use of what's being taught to you. Read technical news papers, articles, and new methodologies apart from your engineering study. Take up few hobby projects (out of your engineering study scope) and execute those using new practices that software companies are using.
  • There are no rules here as to what exactly students have to do here. It’s just important to identify and realize the gaps as early as possible and think on their own what can be done to fill those gaps and make the most of the Engineering Studies.

Monday, November 19, 2012

Dealing with Team Dependencies in Agile-Scrum Software Methodology

Complex software development projects will have internal and external dependencies. The project itself might be getting executed by multiple teams. A typical example is that a product involving hardware, firmware and a software. And there is real customer value when all these three components are ready. There are three teams here, one for hardware development, second for firmware development and the third for software development. To carry out a potentially shippable increment, it should be decided that what work each different team will be doing in order to deliver the potentially shippable increment. A working software that the end customer can see.

In these kinds of projects, the (PSI) planning needs to carefully identify the dependencies among different teams once the features have been marked for execution in a PSI. The best way to handle these team dependencies is that making sure no one waits wanting some deliverable from other teams. This means that for example the hardware has to be ready ahead of time. Similarly the firmware has to be ready before the software development begins. (Assuming that prerequisite for software work to begin is the availability of hardware and firmware).

Sometimes, it makes sense to execute tasks in parallel. For example, both firmware and software can be developed parallel. If software requires firmware as mandatory input before the software runs, then something called firmware simulators/stubs can be created. So the software runs on simulated environment and Sprint Demo can be given. However, it cannot be claimed that the feature is completed unless all the dependent modules have been built and ready.

Its also the product owner responsibility to sequence the product feature priorities that have less or no external dependencies right in the PSI planning itself before the Sprint starts. Different product owners (across different systems) meet together and discuss the dependencies before they decide upon taking up a software work.

In spite of prior thinking and making best efforts to resolve the dependencies during PSI planning sessions, new dependencies may come up during actual execution of the tasks(during Sprint Execution). These dependencies have to be taken care during scrum of scrum (SOS) meetings that happen regularly between scrum masters of different scrum teams. And this is what is 'agile' exactly. Identify and resolve the team dependencies, capture problems faced during retro meetings and think what's needed to do differently in the next sprint so that the problems faced will not re-occur.

Related Posts Plugin for WordPress, Blogger...