Being a entrepreneur has changed my perspective towards things considerably compared to my perspectives being core software professional. I wish that someone shared them when I started as software professional or in my earlier years.
- Market yourself. Most software developers dislike idea of marketing themselves. Before my start-up, I thought marketing was bad and leads to bad reputation based on the spam emails in my inbox trying to sell things that I am not interested and salesman pushing or dumping on our head the product or service.
- When you share your learning in a blog or slide-share presentation or present the same in community or meetup events, you are actually marketing yourself to create more opportunities for yourself and boost your career on long term. Be prepared to open and embrace the idea of marketing as developer is becoming more of commodity in the economy of software development. You need to differentiate.
- Learn by Doing When you want to learn a new programming language, framework or technology, in addition to books or arranged training, spend time to apply them to solve real problems. Get your hands dirty. It is perfectly fine that you start with error and spend more time first time to go ahead of error.
- Errors leads you to ask yourself relevant questions that you want to find the answers. Now go to book to find answers for the question. This approach helps you learn more and the skill stick for a long time. It is a universal truth that when one asks a question and get information, one remembers more than when some one tells us some information( you end up forgetting it).
- Developers cultivate strong affinity towards technologies worked over years and ones that we are good at and understand well. This is barrier to learn new things. When you take action and ask question, you start by answering question “why to learn new technology?” and then learn by doing. For example when you learn mongoDB, ask where we choose mongoDB and why should we not use SQL based databases instead of mongoDB in that scenario.
- How to solve problems better? When I explore problems to arrive at software solution I have habit of developer to jump to solve the problem. You need to realize importance to spend more time to understand the problem and who faces the problem. Try to observe users facing the problem. Try to learn how they handle problem today. Your learning and observation is best when they are not aware of your observation.
- when you understand the problem and you have algorithm, start writing algorithm. Algorithm is not code and is set of sequential execution steps to solve problem. Get algorithm validated with functional experts. Involve more minds to solve problems and enhances your understanding of problem to solve better.
- Programming languages change more than algorithms. Gain better ROI by proposing algorithm based solution for a problem.
- Beware of failures. Search for success. Every problem solution includes main flow, boundary conditions and edge conditions as part of implementation. You do not need to start implementation with boundary conditions and edge conditions, but the solution needs to address them at time of delivery. First, identify boundary conditions immediately after writing algorithm to solve the problem. do not implement them as first. Second, start to implement main flow to solve the problem and get it right. Once main flow is right,edge and boundary conditions are important and are less understood by the end user of the solution. Third ask you business team to obtain feedback and start fixing edge and boundary conditions.