1. What do you think is the most essential to be an software developer (not only iOS)?
2. How long does it take for you to grab the flow of developing and programming a full fledged software?
If you don't mind, can you share some of your experience when you are getting started learning developing and programming.
There are countless things I believe are essential to being a software developer, but I’ll highlight a few.
The best developers put people first. They realize that the code they’re writing is going to be used by people, smart people and not-so-smart people. They’re willing to put in the hours and go the extra mile to make the experience for their users easier, quicker, and more intuitive, even if it’s a few seconds being shaved off. They help their users use their product.
Working on open source projects not only gives you practice, but you learn a lot by having the ability to see someone else’s work and see how they coded their way through certain problems. You also get good at writing clean code because this time it’s not just you looking at it; every contributor and user of the open source’d project is using your code, so you learn to write descriptive and intuitive code that won’t get you yelled at. It also gives you exposure to other processes that you may not have been familiar with before, even if you didn’t directly contribute to it. Reading someone else’s code is the best way to learn code.
Be curious and don’t take no for an answer
Never stop asking “What if?” or “Why not?”
I can’t stress this enough. If someone ever tells you something can’t be done, spit in their face and shoot them in the foot because it’s not that it can’t be done, it’s that they’re not willing to do it, and ultimately that’s what differentiates a good developer from a bad developer.
Make something you want to use
Being passionate about what you’re working on is unbelievably important. It fuels the drive you have towards whatever you may be developing and I believe that’s the most important aspect when looking at a software developer. Whether or not they exhibit passion in their work is vital because at the end of the day you’re more likely to make the best product if you’d want to use it.
Amazing programmers are ridiculously hungry for knowledge. They’re always reading a ton about new methods and love to try out things learned from their peer’s experiences. They’re not afraid to try something new.
A typical process from idea to product can vary immensely. I’ve started and finished a product in three months and I’ve started and finished a product in three days. It all depends on complexity, experience, and code. I say code because more often than not if I didn’t spend much time on the product, I didn’t spend much time writing clean code.
I learned a lot of my skills from looking at open source projects and seeing what happens if I change something, but I’ve also learned a lot from reading online, getting help from other developers, and a little bit of reading. I was recently turned onto The Pragmatic Programmer which I think is essential to any new developer. I wish I had read it earlier in my career as it’s a godsend in terms of just how much you learn about how to be a good programmer and thinking critically about your work.