Complex software projects like NGRPulse, NGRERP, etc, have a long development cycle. You are passionate about technology and someone has to nudge you to start the project. Then you start understanding the domain a bit. The first people who you talk to will sow seeds that will go very deep and will form the genesis of the project. You start giving form to your ideas.
Then you start finding "how" to execute the ideas. You learn about software development, you learn about databases, you learn about web servers and web frameworks. Somewhere down the line, you don't like the frameworks out there so you start to write your own. After a while a prototype is emerges. You are forced to implement it immediately because the legacy software has crashed and the original developer has left the country. You work on your prototype, fixing bugs under pressure and veiled threats from users.