Wednesday, January 18, 2017

How To Be a Good Developer and Professional

Hello and welcome to third blog of the series "Freshers to Professional" blog. In case you missed previous blogs, you can read here.

Part 1 : Because All The Leaders Were Developers Once
Part 2 : Some of the Greatest Programmers of All Time

This blog is about self evaluation. After reading this blog, you will realize  if you have what it takes to be a great developer and if you are have not this symptoms ,you have to find out your Knack.

You Should Have Knack Of Technology.

According to definition in dictionary meaning of Knack is.

  • A special talent or skill, especially one difficult to explain or teach
  • A skilful, ingenious, or resourceful way of doing something
  • A particular talent or aptitude, esp an intuitive one
So yes you need to have special talent and clear aptitude and particular attitude to be a good developer. In short you should have Knack of Technology like Little Dilbert

So yes you should be like Little Dilbert to be a great software engineer.  You should have Knack of technology and if you don't have it then you have to find it or develop it. Next we will see some questions that you have to ask yourself and find out if you have that knack or not. 

Do you like sitting in front of computer for long time? 

This if the first and foremost requirement to be a developer. Because as a developer you have to sit in front of computer and write code of long time. As you will be given a task and deadline to complete it and you have to meet that deadline. So you have to sit for long time and complete it. Sometime you may have to skip lunch, tea or dinner, you should be ready for it. In short it will be your "RACE AGAINST TIME" and you have to win it.

 Do you like to learn new things?

This is another most crucial requirement to be a good developer. Your learning will not stop after your college course. If you think I have studied enough and I will not invest my time to learn something new, you are at the dead end of your career. Because technologies come and go. Nothing is permanent. What is hot technology today will be out of the market tomorrow and something new will come and if you are not willing to learn new thing, you will be out of the race. Take an examples of programming languages.

There was a time where developers were using languages like C, C++
Then comes Java.
Then comes VB.NET,
Then comes PHP

Earlier there was VB script, then we have JavaScript

Earlier there was Objective C and now we have Swift

Earlier there was no cloud computing, now we have Cloud Computing

So things are constantly changing and if you are not willing to except change then you can not be good developer so you have to learn new things and adopt and survive it.

Can you keep calm in worst condition?

Coding is an art that we have to do with calm and composed mind. You should not be short tempered. Because while coding you may have to face situation where no matter what you do error is not resolved, you are trying for hours to get something working and it's not working as expected, you are not getting proper output. In this situation if you loose you calm and get angry then it will get worse and you will never be able to solve your problem. Do you know one missing semi colon in code can create nightmare for you. In this situation you should not get angry and search for error. Debugging is the process which needs lots of patience. You have to debug step by step and it is real time consuming.

Sometime you may have to face situation like your work is over written due to mistake or it's rejected by your leader or client and he asked you do do it again. In this case you should not punch into face of your leader or client but KEEP CALM AND CODE ON.

Do you think twice before start working?

Whenever some task is assigned to you, you have to think twice and look for the best possible solution to achieve it. Don't just start working on it with first thought come up in mind. It may be possible that you end up with disaster and you have to redo everything. And at start of your career, you could be fired for not performing well and this can ruin your career. So be careful about it and think twice before you start working on it.

Do you listen to others?

It's about being team player. In your career hardly it will happen that you will be the only person working on the project, there is always a team and when you are working in team, you have to listen to others because everyone like to give opinion and you have to deal with it, It may be possible that you gave solution to some task but from your team someone else come up with better solution. so you have to listen to them and understand what your team members are trying to say. So be a good listener, keep your ego aside and be a good team player.

Do you communicate with others?

Communicate with others is as important as listening to others. That is again a quality of team player. Your team members should be aware of what you are doing and what problems you are facing. It's possible that your work is affecting someone else's work. You have to communicate with them and inform about it. Same way if you are working on someone else work then you to ask them first about it understand it and then work on it. This will lead to less errors.

Do you like Algorithms and Flow Charts?

Most of the course on software development includes algorithms and flow charts. When you are studying it you may find it worthless and waste of time but it's actually not a waste of time. Algorithms and Flow charts are key elements of development. When you will be working on any task you have to break down it to smaller tasks and setup the flow as per the domain you are working. For example if you are building online selling website then to place an order there is a flow like

Customer registered
Customer add billing and shipping address
Customer makes payment
If payment is successful, place an order else show error. 

so that's the flow and for that you have to make up a flow chart in your mind and code as the flow. 

Same way for the difficult task you have algorithm, which is nothing but a plan to solve the problem and you have to create that plan. If you don't like algorithms then you will not be able to solve complex problems.

Do you know how to search on Google?

In the era of internet and Google, there lots of websites and forums and blogs where developers like you and me write about the problems we are facing and others in the communities give solution to this.

So it's possible that problem you are facing is already faced by someone else and there is solution already but you have to search it and find it. For this you should know how to search effectively on Google and find out solution and save your time.

Do you consider worst outcome while coding?

This is one common problem I have seen in all the developers. When they are working on some tasks, they just consider the best outcome and assume that all the inputs will be available. But this is not the case always, you have to make sure that you consider worst scenario as well and handle it properly. Do not assume that you will have all the possible inputs. If you don't consider worst scenario there will be lots of problems.

Do you take responsibility of your work and do not blame others?

As I mentioned, it's team play and in the team whenever something goes wrong, blame game starts. Nobody would like to receive criticism and try to blame others when project failed. But as a good ethical developer, you have to accept your mistake and take responsibility of your work and be open about it. There is no shame in accepting your mistakes. 

If your answer is Yes to above all the questions that means you are going to be a good developer. If your answer is NO for some questions that means you need to improve in that area but if your answer is NO for all the questions, I am afraid that you are not qualified to be a developer.  Go for other career option.

No comments:

Post a Comment