Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

Throughout the history of programming whenever a new technology was made a application for it had to be made.

E.g. When Android came out Android Apps came out ~ giving millions of dollars in revenue to the respective developers who made the apps. (The OS came in 2008)

The beauty about computers is that it is always changing. You cannot invent a new innovation for writing as most English students learn about Shakespeare while CS students face a ever-changing curriculum.. Programmers have this advantage. They can make a lot of money if they play their cards right.

So I want to be prepared. I want to be first in line for the next promising innovation. I know many of them will fail but I think my instinct for spotting potential success is high. But how can I be prepared?

I am planning to assimilate fellow programmers, friends and offshore developers/contractors. I want to make my own start-up ~ for now as a sole proprietor. There is no way I'm pitching an idea to a large company. I want to get a BN and register a company, I believe it will give more flexibility. Plus its better working with other minds as designing something by yourself without help is a recipe for burnout.

So my question - going more specific is what approach should I take?

  • Should I start my own software company, passive as it may be in the
    beginning?

  • Who should help me? Is it wiser getting internal/external developers to help me with my ideas for the new paradigms?

I am a first year CS student, 18 years old with good social skills.

share|improve this question

marked as duplicate by Doc Brown, MichaelT, gnat, GlenH7, Kilian Foth Sep 15 '13 at 11:02

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

2  
I disagree, CS doesn't actually change that fast, the stuff you learn at university, data structures, algorithms, compilers, theory, is timeless. A linked list is a linked list whether it's running an android app or keeping track of windows in XMonad. Programming, computer engineering, this changes very fast, but it's all the same principles –  jozefg Sep 14 '13 at 17:21
8  
This is essentially a request for us to predict the future for you. –  Oded Sep 14 '13 at 17:22
3  
Dude, just finish school first. –  Steve H Sep 14 '13 at 20:11
    
As a 21-year old fourth-year CS undergrad, I admire your passion. However, a lot of this is opinion-based. Once you get to my time (probably more), maybe you can really start to consider these things. Nonetheless, I think the answers here so far have the general idea. –  Jamal Sep 14 '13 at 20:32

4 Answers 4

No you should not start your own software company, you don't even know how the business works yet. But chances are good that if you're driven enough to start your own business you won't listen to that. I just think it would be better to work with a good set of people and really learn the industry. Meaning, programming is more than just writing code. It's analyzing a domain and learning it, defining the goals clearly and creating a project around that, estimating the effort it will take, deciding what tools are appropriate and when you should start using those, and mainly - how to work well with other programmers who span all types of personalities.

- Who should help me? Is it wiser getting internal/external developers to help me with my ideas for the new paradigms?

Find some good mentors, both local and remote, that you can work with to share ideas, share code, and do reviews of that code. Local development groups are a good start.

There are truly only a few paradigms in computer software right now and if you know one you can pick up another quickly. This is the key IMHO. Learn an object-oriented language, learn a functional language, learn a procedural language. Learn all of the major data types that span across those platforms. Learn how it all works under the hood and you'll never be surprised.

share|improve this answer

Let me give you some advice:

  • The most important thing you can learn as an undergrad is that you're not as smart as you think you are. You may have had top grades in school, but all of that is now meaningless. Realizing you suck is the first step towards sucking less.
  • It is not about “playing your cards right”. Before you can start doing that, you have to acquire a deck. Good social skills are a powerful joker, but that is not enough to win any game.
  • In order to acquire “cards”, continue learning the basics. You won't encounter any revolutionary new paradigms in the first few years. But without a solid understanding of software development and CS, any shiny new ideas would be lost on you.
  • If you are more interested in doing business than CS and programming, consider switching your major. If you still are in your first year, this isn't as expensive as realizing two years later that you should have switched.
  • Never start a business without first having a solid idea what you are going to do.
  • Be curious. Learn stuff outside the curriculum. Especially: follow and contribute to open source projects. It is a great way to see experienced people in action.
  • Follow the startup scene. Reading Hacker News might be a good way to start doing that. Watch how businesses are created, why most fail, and learn lost of other interesting stuff on the side.
share|improve this answer

It's your personal choice. Do you:

  • Jump to a new technology which is just released by a company, with a potential to make lots of money because it's a buzzword and because potential competitors haven't learnt the technology yet, or:

  • Stick with stable technologies which are here for years or decades, and will probably be there for the next years or decades, which gives you stability at a cost of constant fighting with the competitors who had enough time to learn the technology.

Or you constantly learn several technologies and adapt to the circumstances.

For example, you work mostly with .NET technologies. In 2007, Microsoft releases Silverlight. It's an excellent opportunity to catch customers who like buzzwords and new stuff, want to make a web application a bit richer compared to what is possible in 2007 with HTML 4/XHTML 1.

You're happy delivering Silverlight-enabled RIA, until one day everyone loses interest in Silverlight and starts talking about HTML 5. What do you do? Stick with a dead technology, or learn HTML 5 and CSS 3?

A decade later, something happens to Microsoft ecosystem which becomes if not unpopular, at least not used as much as today. Does it matter? Well, not really, since meanwhile, you learnt Python, C++ and Haskell, so you have no problems working independently of .NET context to create web apps in Python, large-scale business-critical systems in C++ or financial applications in Haskell.

share|improve this answer

How can I prepare for the next software paradigm?

Invent it

I'm not kidding. To be in the position you describe you'd have to have significant advance knowledge of the new paradigm.

The only way to guarantee that is if you were involved in inventing it.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.