“Part of what attracted me to software engineering in the first place was an interest in “how things work”, and being able to move between levels of abstraction (e.g. I know how IP, DNS, TCP, HTTP and JSON works, but most of the time I can just treat it as “sending objects”). So it was a bit of a eureka moment for me to realize that running a company is really just expanding the levels of abstraction that you operate with. It doesn’t matter how well you code if people can’t understand the user interface, so I got an interest in UX and usability. But it doesn’t matter how user friendly it is, if it doesn’t solve the right problem for people, so I got an interest in product development and customer research. It doesn’t matter how good a product is if people never hear about it, so I got an interest in marketing and sales. And it doesn’t matter how well I do all of that if I can’t pay the bills, so I got an interest in pricing and monetization strategies.

Juggling all those needs, and trying to shape the company and all its aspects into a cohesive whole is just as demanding and interesting as doing the same for a software project - it’s just expanding the scope of which requirements and concerns you bring into the equation. For me at least, it’s also been very rewarding to do the whole thing end-to-end, and it’s felt like more of a natural extension of my ever-broadening interests than I would have expected. Bookkeeping can be as annoying as debugging, but in the end I’m really grateful that I understand how each detail works.”

Source: https://news.ycombinator.com/item?id=31508770