Software Engineers in Startups with 5 Essential Skills
5 Essential Skills of a Software Engineer in 2020
Just like Twenty20 cricket, nowadays people expect you to deliver things quickly. Which is not bad. With the evolving nature of life, we should also evolve as Software Engineers. Not all of us clearly, as we still need Test Cricket and players who have the patience to stay at the crease and deliver.
Expectations from a Software Engineer nowadays are very different than what was there 10 years ago. Not every product is a hit, not every start-up goes for an IPO so we should also have the skills to deliver quick products and let the business decide its fate.
One of my uncles told me once:
Nothing stays constant, so if you are not trying to go up, you are going down.
All of us should always try to go up because we can't stay constant by just staying constant. In the first post of the SET20 [Software Engineer 2020] series Let's talk about the 5 essential skills that will make you one of them.
1. Don't be afraid of new technologies
Don't let your mind barriers restrict your learning. "I haven't worked with JavaScript before", "I'm only comfortable in python", "My nodejs code will be better than newly learned spring boot", "I have never used google cloud before", "I don't know machine learning"… blah blah. It won't take you more than a week to learn anything new.
Focus on what is the best fit for the product rather than your comfort zone.
2. Be ready with the Start-up Language Kit
When you are building solutions, it is important to be ready with essential toolkits. As software engineers, you should know at least 3 languages and 3 frameworks. [Bonus: 2 more languages will make you more flexible as a developer] There are multiple combinations available and the whole debate about the languages. But according to me, that is
1. JavaScript
2. Python
3. Java
4. Golang(Optional)
5. Swift or Kotlin(Optional)
3. Design solutions, not just software
We make software that going to have a business use-case in the end. There are business challenges that we are trying to solve using our software. But sometimes we lose focus. Guys, as you all know we love our code, we just love it. That eternal love towards our code and product sometimes makes us forget about the whole point of solving the problem. The focus of Software Engineers should always be providing solutions. We should always think about the people who will be using our product
We are building solutions, not creating more problems for users.
4. Perfection is a myth, focus on the good
We love perfectly written code. Everybody loves to make modules from scratch. But as the product evolves your code will become a mess. No matter how hard you try, your code will never gonna be perfect. Try to write a good quality of code. Focus on the edge cases more rather than the structure.
In future, Fixing the structure of the code is easier than fixing edge-case related bugs as with time you will start forgetting about the full context of the problem.
5. Productive mindset
When you work in a big company, most of the processes are already sorted. People already have developed tool, automation scripts are already there to increase your productivity. But when you are young and working with a Start-up you might be wasting a lot of time in processes that can be easily automated.
In startups, we are mostly occupied so we don't get enough time to work on our productive and creative side as a problem solver.
It is very important to have a productive mindset even if you are part of a big company. You can start small and start automating your repetitive tasks. It will save you time and will let you focus more on the real problems. For example "How bash profile can make life easy for a software developer". I will write about it in my next post. Stay tuned.