Saturday 30 May 2015

How To Improve Your Skills As A Programmer

Programming is one of the most versatile skills on the market in this age. From being able to create company websites to knowing how to easily fix a redirecting error, these skills can be invaluable to an employer and yourself in many ways. However, staying the way you are will never let you be the best Programmer you can be, read on to learn how to improve your skills as a programmer.

1.Analyze the problem clearly.

2.Think twice about how to solve that problem

3.Gather complete requirements. 
Take the time to write down what goals the end product needs to achieve, and who your user base will be. Clarity of thought at this stage will save a lot of time down the line.

4.Write a thorough implementation plan (or model).
- For something small and self-contained, this might be just a basic flowchart or a simple equation.
- For larger projects, it helps to break the job into modules, and to consider the following:
  • What task each module must perform
  • How data gets passed between modules
  • How the data will be used within each module
- Although gathering and planning requirements can be tedious and much less fun than diving straight into coding, it is even more tedious to spend hours debugging. Take the time to design the flow and structure of your program correctly up front, and you may even spot more efficient ways of accomplishing your goals before you write the first line of code!

5.Comment your code liberally. 
If you think that your code might need explanation, comment it. Each function should be preceded by 1-2 lines describing the arguments and what it returns. Comments should tell you why more often than what. Remember to update the comments when you update your code!

6.Use consistent naming conventions for variables. 
It will help you keep track of each type of variable, and also what that variable's purpose is. This means more typing than simply x = a + b * c, but it will make your code much easier to debug and maintain. One popular convention is Hungarian notation, where the variable name is prefixed with its type. For example, for integer variables you might use intRowCounter; strings might use strUserName. It doesn't matter what your naming convention is, but be sure that it is consistent and that your variable names are descriptive. (See Warnings below).

7.Organize your code. 
Use visual structures to indicate code structure. For example, indent a code block that sits within a conditional (if,else,...) or a loop (for,while,...) Also try putting spaces between a variable name and an operator such as addition, subtraction, multiplication, division, and even the equal sign (myVariable = 2 + 2). As well as making the code more visually elegant, it makes it much easier to see the program flow at a glance.

8.Test everything. 
Start by testing each module on it's own, using inputs and values that you would typically expect. Then try inputs that are possible but less common. This will flush out any hidden bugs. There is an art to testing, and you will gradually build up your skills with practice. Write your tests to include the following cases:
  • Extremes: Zero and beyond the expected maximum for positive numeric values, empty string for text values, and null for every parameter.
  • Meaningless values. Even if you don't believe your end user would input gibberish, test your software against it anyway.
  • Incorrect values. Use zero for a value that will be used in division, or a negative number when positive is expected or when a square root will be calculated. Something that is not a number when the input type is a string, and it will be parsed for numeric value.

9.Practice, practice, practice. 
Programming is not a stagnant discipline. There's always something new to learn, and - perhaps more importantly - always something old to relearn.

10.Be prepared for change. 
In a realistic working environment, requirements change. However, the clearer you are at the start about the requirements, and the clearer your implementation plan is at the outset, the less likely it is that changes will be the result of poor planning or misunderstandings.
You can take an active role in improving the clarity of the process by presenting your requirements documentation or your implementation plan well before beginning to code. This will help to ensure that what you are planning to create is actually what's been asked for.
Structure the project as a series of milestones with a demo for each block, and manage the process one milestone at a time. The fewer things you need to think about at any given moment, the more likely it is that you will think clearly.

11.Start simple and work towards complexity. 
When programming something complex, it helps to get the simpler building blocks in place and working properly first. For example, let's say you want to create an evolving shape on screen that follows the mouse direction, and changes shape depending on mouse speed.
  • Start by displaying a square and getting it to follow the mouse; i.e., solve movement tracking alone, first.
  • Next, make the size of the square relate to mouse speed; i.e., solve speed-to-shape tracking on its own.
  • Finally, create the actual shapes you want to work with and put the three components together.
  • This approach naturally lends itself to modular code writing, where each component is in its own self-contained block. This is very useful for code reuse (e.g. you want to just use the mouse tracking in a new project), and makes for much easier debugging and maintenance.


Source from :
http://www.techgig.com/tech-news





Saturday 23 May 2015

10 Indians Who Are Heading Top Tech Firms

There are very few professions in the world where Indians have not excelled in. From drivers, teachers, to scientists, astronauts and CEOs heading global companies, Indians have proved their mettle in every sphere. 

Another impressive achievement is that 15 per cent of startups in Silicon Valley are founded by Indians, according to a study by Professor Vivek Wadhwa.

There are more Indian CEOs than any other nationality after Americans in S&P 500 companies, finds a study by Egon Zehnder.

The technology sector has been the biggest platform for Indians to showcase their talent and capabilities.

1. Satya Nadella
CEO, Microsoft

One of the biggest success story of an Indian in the technology space comes from Microsoft CEO Satya Nadella.

After working for two decades, Nadella made history by being the first Indian to head the world’s biggest software company.

The highest paid executive in the United States, Nadella himself admitted that heading Microsoft was ‘beyond his dreams’.

"After joining Microsoft in 1992, Nadella quickly became known within the company as a leader who could span a breadth of technologies and businesses to transform some of Microsoft’s biggest product offerings,” according to Microsoft.

One of the most influential technology wizards of our time, Forbes magazine recently ranked Nadella among the world’s 72 most powerful people.

Nadella, who hails from Hyderabad, holds a bachelor’s degree in engineering in electronics and communication from Manipal Institute of Technology.

Nadella did his Masters in Computer Science from the University of Wisconsin, Milwaukee and an MBA from the University of Chicago Booth School of Business.

Nadella was a member of the technology staff at Sun Microsystems before he joined Microsoft.

2. Sundar Pichai
Senior Vice President, Google

The soft-spoken Sundar Pichai has become one of the most important executives at Google and heads its biggest products.

A topper in Metallurgical Engineering, from IIT Kharagpur, Pichai has seen a meteoric rise in his career to become the second-in-command at Google.

Pichai , who is from Tamil Nadu, worked in engineering and product management at Applied Materials and at McKinsey & Company before he joined Google.

After joining Google in 2004, Pichai led the product management and innovation efforts for key products including Google Chrome and Chrome OS and Google Drive.

Pichai is hailed for building a great team and outstanding products that gives a lead over other companies.

He holds an MS from Stanford University and an MBA from the Wharton School of the University of Pennsylvania.

3. Sanjay Kumar Jha
CEO, Global Foundries

Sanjay Kumar Jha who hails from Bihar is now the CEO of Global Foundries, the world's first full-service semiconductor foundry.

One of the highest-paid Indian executives in the US, he was earlier the chief executive officer of Motorola’s mobile devices business.

Prior to this, he served as the chief operating officer at Qualcomm.

He has a PhD in electronics engineering from University of Strathclyde, Scotland.
 
4. Shantanu Narayen
CEO, Adobe

Shantanu Narayen who’s from Hyderabad heads one of the world’s leading software companies, Adobe.

Nine years after joining Adobe, Narayen was appointed as CEO in 2007.

One of world’s top paid tech CEOs, he is lauded for his leadership qualities, technology insight and operational proficiency, which helped Adobe expand its products portfolio.

Narayen holds an electronics engineering degree from Osmania University, MBA from the University of California, Berkeley, and Masters in computer science from Bowling Green State University, Ohio.

5. Nikesh Arora
CEO, SoftBank Internet and Media Inc

Nikesh Arora, one of Google’s most high profile employees quit last year to join as vice chairman of SoftBank Corp and CEO of SoftBank Internet and Media Inc.

As CEO of SIMI, he is responsible for overseeing Internet, telecommunications, media and global investment activities.

Hailed for his financial and strategic acumen, Nikesh is also likely to be the successor to Softbank’s chairman and CEO, Masayoshi Son.

Before joining Google, Nikesh was a telecom analyst at Putnam Investments. He then went on to create his own mobile data start-up in 2000.

Nikesh who graduated as an Electrical Engineer from IIT-BHU, has an MBA from Northeastern University, a Masters degree in Finance from Boston College and
 
6. Francisco D'Souza
CEO, Cognizant

One of the youngest CEOs in the IT industry, 46-year-old Francisco D'Souza joined Cognizant as a co-founder in 1994, the year it was started as a division of The Dun & Bradstreet Corporation.

He took over as CEO of the company when he was just 38 years old.

Considered one of the best CEOs, Francisco D'Souza has nearly 25 years of experience in the information technology industry.

Francisco, who hails from Goa,  is a member of the Board of Directors of General Electric Company.

He serves on the Board of Trustees of Carnegie Mellon University, the Board of Trustees of The New York Hall of Science and the Board of Trustees of the US India Business Council.

He received his Bachelor's degree in Business Administration from the University of East Asia and his MBA from Carnegie-Mellon University.
 
7. Dinesh Paliwal
CEO, Harman International

Dinesh Paliwal has been the chairman of Harman International, a leading provider of premium audio and infotainment systems for the automotive, consumer and professional markets since 2007.

As CEO and chairman of Harman International, Dinesh Paliwal transformed Harman International into a customer-centric and innovation-oriented company.

Dinesh who is from Agra, was instrumental in building a diverse board and strong leadership team, expanding the company’s business in high growth markets.

He did his BE from the Indian Institute of Technology, Roorkee; MS in Applied Science and Engineering and MBA in Finance from Miami University (Oxford, Ohio). 

8. Padmasree Warrior
CTO, Cisco Systems

As a child, Warrior wanted to become an astronomer. She left India with just $100 and a one-way ticket. She believes a leader has to have ‘a vision of where we want to go and take bold and tough decisions’.

Padmasree Warrior is one of four rising stars on its Most Powerful Women list, according to Fortune magazine.

The chief technology & strategy officer (CTO) of Cisco Systems is listed as the 71st most powerful woman in the world by Forbes.

During Warrior's tenure as CTO, Motorola was awarded the 2004 National Medal of Technology by the President of the United States for the first time.

Warrior received a bachelor's degree in chemical engineering from the Indian Institute of Technology, Delhi in 1982.

She holds a master's degree in chemical engineering from Cornell University.

On 4 December 2007, she left Motorola to become CTO at Cisco Systems.
 
9. Sanjay Mehrotra
CEO, SanDisk Corporation

Sanjay Mehrotra is co-founder, president and chief executive officer of SanDisk Corporation, a global leader in flash memory storage solutions.

Earlier, Mehrotra served as SanDisk’s president and chief operating officer starting in 2006.

Under his leadership, the company expanded its focus to include solid state drive (SSD) solutions for the enterprise, as well as new growth strategies for the mobile and client computing segments.

Mehrotra received his Bachelor's and Master's degrees in Electrical Engineering and Computer Sciences from the University of California, Berkeley, and is a graduate of the Stanford Graduate School of Business Executive Program (SEP). 

10. Rashmi Sinha
Entrepreneur, designer, scientist. That’s how Rashmi Sinha describes herself.

She is better known as the co-founder of SlideShare, which allows people to upload and share their work in the form of power point presentations. The site became very popular that it had 50 million users every month.

The company was acquired by LinkedIn for $119 million in 2012.

Prior to Slideshare, Sinha co-founded Uzanto, a company that worked on projects for tech companies.

Rashmi was named one of the 'World's Top 10 Women Influencers' by Fast Company.

Rashmi did her Masters and PhD in Psychology from the Brown University.
 
 
Source: Rediff 

7 Mistakes You’re Making In Your Programming Career

As a life and career coach for software developers, I’ve had the opportunity to talk to many programmers about how they can improve their careers and accelerate their growth.
Time and time again, I run into the same mistakes that many programmers are making over and over, and they aren’t even aware of them.
I thought I’d list what I’ve found to be seven of the most common mistakes programmers are making in their software development career.

1. Not having a clear goal

Without a destination in mind, you’ll just drift through life, going wherever the wind will take you.
If you want to have a successful career in software development, you need to know exactly where you are trying to go.
It’s not good enough to have a vague idea of what you want to accomplish in some distant time frame.
Instead, you should have solid goals—and at any given point one large over-arching goal—that clearly defines what you are aiming for.
I’ve known many programmers and other professionals who have virtually had the same job with the same responsibilities for decades—yes, decades!
It’s sad when that happens, but it’s the default choice.
If you aren’t clearly setting goals for the future, for your career, that will most likely be you.
So, what can you do about it?
Today, right now, take some time and think about your programming career and decide what your immediate goal is.
What I mean by this is, what is the primary thing you want to aim for, right now?
Once you hit this goal, you’ll select a new one, but for right now, what is it that you’d like to accomplish in your programming career?
You might want to write this down and put it somewhere you can see it every day, so that you are continually reminded of what you are aiming for.

2. Not investing in non-technical or “soft skills”

I know a lot of programmers who are really good at writing code.
I know a lot of programmers who can algorithmically run circles around me. They can understand and think about complex architectures in their head at a level that I can’t even hope to compete with.
But guess what?
Over the course of my software development career, I passed right by them, not just in terms of a promotion or job responsibility, but in pay, productivity, performance, and just about every meaningful measure.
I’m not saying this to brag, but just to illustrate the point of how important soft skills are to your programming career, rather than just those technical skills that so many programmers focus on.
As a software developer, I’m sure you know, it’s not all about writing code.
There are many other important skills that are necessary to succeed.
We have to constantly deal with people, so people skills are a must.
soft skillsTight deadlines and rapid changes require mental stability, focus and self-motivation.
In an ever-changing environment full of so many possible things to work on, we have to learn how to prioritize andhow to be as productive as possible.
And let’s not forget health and fitness as well as financial acumen, which if ignored can both lead to ruin.
I could go on and on, but just read my book “Soft Skills: The Software Developer’s Manual” for a complete treatise on the subject.
The point is, in life, regardless of what you are doing, soft skills are almost always more important than hard, technical skills—so make sure you learn them.

3. Not being part of the community

One of the things that benefited my programming career, more than anything else, was getting involved in the community.
Not only did becoming part of something larger than myself, help me to not feel alone and to feel that I belonged somewhere, but it also helped to improve my skillsmake new connections and to set my aspirations a little higher.
If you are not in someway involved in the programming community, I’d highly encourage you to get involved.
If you feel like your software development career is stagnating, there are very few things that will help you jump-start it better than joining a community of like-minded people who share your struggles and can offer advice to help you overcome them.
Being part of a community is also a great way to get noticed and make connections that can greatly benefit your career.
But, how can you join a community?
It’s simple. There are plenty of Meetup groups all around the world, that you can simply join and attend a meeting.
You can also attend a Code Camp, which is an annual, free, local event where lots of software developers get together and share what they are working on. Usually anyone can sign up to present on any topic they want. It just so happens that I first learned about the opportunity to create Pluralsight courses at a Boise Code Camp speaker’s dinner a few years back and then went on to create fifty-five courses for them.
If you don’t want to meet up in person, you can also join virtual communities.
For starters, join the Simple Programmer community. There are plenty of great developers who comment on this blog and help each other out with questions or problems.
But, there are also plenty of other great communities online. Look for popular blogs, forums or even chat channels for software development related topics, you are interested in.
You can also join the community, by contributing to it directly. Start your own blog and start writing about what you know and what you are learning.
This blog was the first thing I ever did to become part of the larger community of programmers out there.

4. Not specializing

If you follow this blog and the content I put out on my YouTube channel and other mediums, or if you’ve read my book, you are probably sick of hearing about this topic, but it’s so important that I’ll talk about it every chance I get.
Pick a niche for yourself and specialize in that niche.
It doesn’t mean that you can’t have a broad base of knowledge as well—I’m a big fan of being a polyglot—but, also pick one area to focus your efforts on and dive deep.
It’s very important, especially early on in your career, to be a specialist of some sort.
Specialists are always in much higher demand, they can get higher salaries and hourly rates, and they are able to build a reputation much faster.
Plus, there is a certain satisfaction in knowing that you know some software development area or technology very deeply.
You always want to be the big fish in the small pond and not the other way around.
You might eventually outgrow your pond—at which point you can venture out into deeper waters—but, starting out with a specialty is a great way to build up a name and reputation for yourself in the software development industry. (Which we’ll talk more about next.)
And you can’t really specialize too deep. In all the years that I have been giving this advice, I’ve never run into anyone who was too deeply specialized.

5. Not investing in your personal brand

Throughout your life many things will come and go. You might change jobs. You might evenchange spouses. You might be rich or you might be poor. You might be fit or you might befat, but regardless of what happens to you in life, one thing will stick with you forever…
Your name.
brand
So, since your name is going to be with you for your entire life, don’t you think you should put some effort into it?
Your name, or your personal brand, is an extremely valuable asset that many software developers aren’t even aware that they have.
A name, or personal brand, is an extremely powerful tool for getting a job, getting a promotion, landing a client or even starting your own business.
You could literally not have a pot to piss in and be dirt broke, but if you have a good name and reputation, you can turn everything around with a simple handshake.
I know plenty of software developers who will never have to worry about job security again, because they have invested the time and effort to build up a solid personal brand for themselves. They know that no matter what happens, they can get another job in hours, because they have a reputation and are well-known.
It seems natural to market products and services, but have you ever considered the value of marketing yourself?
To build a personal brand in the software development industry, I’d recommend starting out with creating a blog, picking a specific niche or speciality that you are going to be known for, and learning how to spread the word and get your name out there.
One of the best ways to do this is to create content that is useful to other people.
Take this blog, and this blog post, for instance. This blog is building up my personal brand and reputation on the internet. If you find this article or even my site valuable, you’ll probably share it. You may even bookmark it and come back to it, or sign up for my email newsletter, so that you don’t miss any posts.
That is just one way to grow a personal brand.
I also create YouTube videos, have my own podcasts, appear on lots of other people’s podcasts, write guest posts, write magazine articles and books and speak at events.
That doesn’t mean you have to do all those things, but that should give you a pretty good idea of what is possible.
If you are interested in really diving deep into the subject for building a personal brand and marketing yourself as a software developer, I put together a complete package that shows you exactly how to do it.
If you just want to start out with a blog—which is a great first step—sign up for my free blogging course.

6. Not working on a side-project

You should always have some kind of a side-project you are working on.
A side-project has many benefits you might not be aware of.
First of all, working on a side-project is a great way toimprove your skills, especially in areas that you might not be able to work on at your regular job. Working on a side-project can help you grow your skills at a much faster rate than you would just working your 9-to-5 job.
Working on a side-project is also a great way to develop new skills and learn new technologies that can benefit you if you ever need to look for a new job. I talk to plenty of programmers who complain that they don’t get a chance to work on new technologies at their current job, so their skills are not relevant to the current job market. I always advise those programmers to work on some kind of a side-project, using the new technology they want to work with, as a great way to develop relevant skills.
And, let’s not forget about the possible financial benefits of working on a side-project.
You might not start a side-project to make money, but a side-project can be a great way to make some extra income.
I started working on a running app for Android and iOS as a side-project about 4 years ago andI’m still making some money from it today.
I also know plenty of software developers who started side-projects that eventually became their full-time jobs.
In fact, I’m one of those developers. This blog itself, and the other components around Simple Programmer, is now my full-time work. I like to call myself a life-coach for software developers, but I suppose you could say that I am a full-time blogger.
A side-project can also be a lot of fun.
Sometimes a side-project can be nice stress relief from the work you have to do, but don’t necessarily enjoy. A side-project can be a good outlet that gives you something to look forward to each day and makes you feel more relaxed or to unwind.

7. Not having a plan for self-education

Whenever I interview a software developer, one of the first questions I ask them is about their plan for self-education or continuous self-improvement.
What are they doing to better themselves?
I often ask about what they do to stay up-to-date in the ever-changing field.
I often ask about what books they have recently read and what they consider the best book that all software developers should read.
I’m looking for answers that tell me they have an actual plan for educating themselves and constantly growing, because I know a person dedicated to continual self-improvement is not only going to be successful, but is going to make people around them successful as well.
Yet, so many programmers have no plan at all for any kind of self-education.
If you don’t have some kind of plan for how you will continually learn new things and sharpen your skills, you need to develop one right away.
Want a simple plan?
Just commit to reading one technical or career-development book each month.
In a year you’ll have read 12 books.
I personally devote at least 45 minutes a day, while I’m walking on my treadmill, to reading something that will help me further my goal of personal development.
Remember, little things add up over time. Just setting aside even 30 minutes a day, each day, can make a huge difference over a year or two.

Take some action

Hopefully you found this list of common mistakes useful, but it won’t do you any good if you don’t take action.
So, don’t just read this article and nod your head, instead take action—today.
Pick at least one mistake that you know you are making and commit to fixing it.
Leave a comment below and share what you are committing to.
If you are really brave, tweet out your commitment to make it public.















source from  :

w.techgig.com/readnews.php