Software Development is one of the top career choices in the world at this moment. I speak to many people who aspire to be a Software Developer, but they aren’t sure about the skills they need, to be a good Software Developer. I will write what you should start learning, but in this write-up I will focusing on pre-requisite to be a good developer.
I thought I will give my perspective and start a conversation. There’s no one way or one direction to be successful in this field. I have worked with different people who travelled through different paths but are successful in their own ways (using Success as a relative term). So, let’s start with the list of what I think would help to be a good Software Developer.
Comfortable with computer
This is definitely one of the most critical skills. You should be comfortable using a computer, skills required would be definitely above average. In addition to normal browsing, MS office skills for once, Install an operating system, set up a virtual machine, play with control panel and different settings.
The more resources you have to learn from, the better it is. You should understand your methods of doing R&D like how to approach a new concept, how to search it over the internet, read it and understand it.
Good communication skills
In India, Good Communication Skills and Good English is always mixed. I would say, Good English would definitely help but clear Communication Skills, in any language, are very important. Ability to explain yourself, ask your questions properly, communicate your goals & progress efficiently is the key.
Also, Listening to different perspectives, reading and writing are very critical to your success.
Passion towards adding Value
One should be passionate about adding value at every step. Software Development is not only about coding. It’s about understanding requirements as well as working with business to help them understand technology. Understanding technical requirements and hence, providing its feedback is the cost to the business. Development, deployment, testing, support and various other steps require passion.
I have seen developers feeling low during the other stages of the Business Process. They feel they can only add value during SDLC. But that’s not true, a different perspective to business can also add value. So, One should have the passion to add value to the life of their clients at any stage.
As a Software Engineer, we will be solving a new problem every day. We solve one step only to jump onto the next problem. One can feel frustrated with it or can enjoy the small progress with big challenges.
It’s essential that you enjoy the never ending Problem-Solving process.
This would help a lot. Especially in the beginning, the number of tools/ technologies/concepts/terms that one has to learn can be a bit overwhelming. A positive attitude and ability to see your progress would help a lot to stay focused.
Basic mathematical skills
Basic mathematical skills, in other words, a good aptitude is very handy. As a developer, you will do basic math most of the times.
Ability to learn new concepts and experiments
There are so many ways to skin a cat. That statement is so true once it comes to software development. You would see so many different ways to solve the same problem. You can either settle on the first solution you find or can read new concepts and experiment in all other ways. I would recommend the latter approach. Even under pressure situation, the will is necessary to ensure that the right concept has been used to solve the particular problem. This would help you to be a better Software developer for sure.
Please remember, this would be at a cost. No one would push a timeline for your experiments, you would be doing it at your own cost. I usually consider this time invested as my Tuition fee to learn something.
Ready to improve and adapt
I say this to all my colleagues; if you feel the technical design/architecture/ code you have done 1 year ago, is the best you can do today, You haven’t learnt enough. This industry is moving at a crazy speed. The stuff we learn today is already outdated in one year.
Please note, this doesn’t mean what we did one year ago is wrong today. What we did at that point, was best in that situation. But we must have the ability to criticize, adapt and improve our own stuff. We can’t fall in love with our code.
Ability to define SMART Goals and Keep focus
This is true for a Developer, but also true for any goal in the life. We have so many items in our To-Do list. But it would be more handy if we define those items in To-Do list in SMART framework.
SMART stands for Specific, Measurable, Achievable, Relevant, Time-bound. Google for more on this framework.
An ability to track our goals under this framework is very important. Because as a developer we are always chasing goals in our projects. So, if we can’t track our personal goals, how would we track the project goal under teams.
Sometimes, A developer is remembered with the bugs, missing features or items he broke, rather than the Features, Screens he delivered. It can be a thankless Job. Don’t get me wrong, it happens only sometimes. As a Developer, we need to have the Self-Motivation to deliver. The focus on Solving a problem, not for a compliment or promotion, but for the love of it.
Above points are my personal opinion that I have established over the years. I would love to hear comments or anything you don’t agree with.
I am planning to write the next part of this series in coming few days.