0
$\begingroup$

I'm a programmer, and I want to continue as such, but I want to explore new areas. I know the future is in the big data, and virtual reality (for example), but I don't know if they have less coding and more of other knowledge. To explain it:

  • In big data or machine learning, I need to know statistics, but will I use it more than python and/or R?
  • In Virtual Reality or Video Games I need to know Unity and there's a lot of 3D in it, so, will I do modeling in 3D more than programming on C++?

I want to explore other things of current interest that do not include web design but I can't see clearly what is required for each option.

What do I need to learn or do to work in currently interesting ("hot") areas, but remain primarily a programmer?

$\endgroup$

closed as off-topic by ctrl-alt-delor, Gypsy Spellweaver, TuringTux, Safirah, thesecretmaster Nov 16 '18 at 7:56

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "This question does not appear to be about Computer Science education, within the scope defined in the help center." – ctrl-alt-delor, Gypsy Spellweaver, TuringTux, Safirah, thesecretmaster
If this question can be reworded to fit the rules in the help center, please edit the question.

  • $\begingroup$ What resources do you have available? Just books and the internet, or are you a student also. If not a student, are you near a school or university that can help? $\endgroup$ – Buffy Nov 6 '18 at 13:20
  • $\begingroup$ Books and internet, maybe I can do some courses in a academy or something similar. But nothing that takes too long (less than one year maybe), I can't go to the university right now, I'm 40 years old and I need to work. $\endgroup$ – user6160 Nov 6 '18 at 13:35
  • $\begingroup$ If I understand the question, you want to continue as a programmer, but in some "interesting" and maybe "hot" application area. And you are looking primarily for how to get the background in one of those areas. Is that about right? $\endgroup$ – Buffy Nov 6 '18 at 13:39
  • 2
    $\begingroup$ This does not seem to be a question about teaching. $\endgroup$ – ctrl-alt-delor Nov 9 '18 at 11:11
  • 1
    $\begingroup$ I agree with @ctrl-alt-delor. While this is an interesting question I don't believe this is the right forum to ask it. I wish I could vote to close on this one. $\endgroup$ – Onorio Catenacci Nov 12 '18 at 18:47
4
$\begingroup$

This depends a great deal on how you want to drive the ideas of the programs you write - and on who drives those ideas. Pretty much any application area of CS requires some deep knowledge of the domain, not just the techniques and mechanics of programming. Even game programming is pretty deep stuff these days. As you say, both VR and Machine Learning requires background far beyond programming, both in CS (algorithms and such) and in the application area and associated tools such as statistics or ray-tracing or whatever.

If you want to be self driven in the development you will just have to face the need to get that background. Online courses might help, or evening classes in a local university.

However, if you are willing to let others drive the direction of the project, then you can build stuff quite happily though the vision will be that of others. Agile software development is especially well suited to this, separating the specifiers and the developers quite comfortably. At a large company like IBM, there are separate departments for idea development and refinement and the developers who build those ideas into code. The "idea department" is full of graphic designers, business specialists, product testers, etc., while the development department is full of skilled programmers and database specialists. In an agile workplace these two groups of people work closely together over the life of a development project in a way that is flexible so that goals can be changed along the way.

It can be rewarding to do this, though the vision driving the project isn't your vision. The others are, then, responsible for having the deep domain knowledge that you don't have.

But if you want to do it all yourself, you need to develop that knowledge too. You can probably do it incrementally, but you still need to obtain it.

It might be true that you already have domain knowledge about some things. If you can also come up with problems that need solving in those domains you may have the basis for building things. At least for a while.

If there were an easy path through this, it would already very likely be well travelled. Not many of us have a brilliant idea that will open a completely new domain along with the skill to develop it. Both Steves were needed in the development of Apple.

$\endgroup$
  • $\begingroup$ "Both Steves were needed..." such a beautiful turn of phrase! $\endgroup$ – Ben I. Nov 6 '18 at 19:00
  • $\begingroup$ +1 For: "Pretty much any application area of CS requires some deep knowledge of the domain, not just the techniques and mechanics of programming." I emphatically second that as a software engineer with a CS degree who often had to acquire domain knowledge on the double while working in industry. In my experience it's (much) easier to have the domain knowledge and learn whatever kind of programming is needed than the other way around. $\endgroup$ – njuffa Nov 12 '18 at 17:31
1
$\begingroup$

What's "hot" changes. And, as Yogi Berra said: "It's tough to make predictions, especially about the future."

However, fairly often, kids (high school, college, or even school drop-outs) are among the ones who spot (or create) the "hot" trends earliest. So, one possibility is to attend "hackathons" and "code camps", ones that attract a fairly young audience (but preferably not the commercially sponsored ones that are an attempt to exploit some free coding), and find out in what areas the "kids" are coding, as well as what tools they are using. Hopefully, you've learned to hunt down and learn from online resources, as these things can happen a year or years before physical books and corporate courses appear.

And the "hot" coding trend can die out fairly quickly as well. By the time a shelf full of books on some coding language or toolkit appears in the stores, they might well be on their way to the remainder bin to make room for some newer "hotter" current tech trend.

$\endgroup$
  • 1
    $\begingroup$ Re "hot", also keep Wayne Gretsky's words in mind: "Skate to where the puck is going, not where it has been". $\endgroup$ – njuffa Nov 12 '18 at 17:32
0
$\begingroup$

Learning is not a zero-sum game.

Learning about statistics does not mean that you can't, or won't, learn Python or R. Learning about C++ does not mean you can't, or won't, learn about 3D modeling.

In fact, learning one thing often makes it easier to learn other things, even if they seem unrelated at first. For example, maybe somebody with a background in statistics can learn more about Python using a statistics library. Or maybe somebody who knows C++ can learn about 3D modeling by importing their models into a graphical engine.

All of these things are tools, just like a hammer or a saw. A carpenter doesn't learn about a saw instead of learning about a hammer. They learn about both, and part of their expertise is knowing when to use each.

In big data or machine learning, I need to know statistics, but will I use it more than python and/or R?

It completely depends on the specific role. There are some machine learning roles that are more statistics than programming. There are other machine learning roles that are more programming than statistics.

In Virtual Reality or Video Games I need to know Unity and there's a lot of 3D in it, so, will I do modeling in 3D more than programming on C++?

It completely depends on the specific role. There are some game development roles that are more 3D modeling than software development. There are other game development roles that are entirely software development.

You've cherry-picked a few examples of some skills you might need in some of these roles, but it's a false dichotomy. Machine learning requires people from many different backgrounds: programming, statistics, ethics, management, customer support, API development, etc. Game development requires artists, programmers, level designers, sound engineers, writers, colorists, etc. Not every game is made in Unity. Not every game is 3D.

So, do what you enjoy the most, and stop worrying about it. I'll repeat the advice I just gave in this question:

Give yourself an achievable goal. The goal should be fun and interesting to you, and it should be achievable in a reasonable amount of time. A single weekend is a good starting point. Finish that goal, and then iterate. Explore topics that you're interested in, but do it with short achievable steps.

$\endgroup$