3

I keep getting curious about all the new technologies and kept spending short times in each tech. At the end of the day, it gives the sense of personal achievement but I couldn't concentrate on one or master it.

Is this right behavior or will it be helpful to be a jack of all and master of none?

More info: I had to spend most part of my 6yr career in legacy technologies and that had the effect on me to learn. Now I am at crossroads, I have to choose a path.

closed as primarily opinion-based by DJClayworth, Masked Man, gnat, user42272, Draken Mar 15 '17 at 9:07

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    Most jobs are going to look for skills in one technology. – paparazzo Mar 15 '17 at 5:43
  • @Paparazzi most jobs will look for high proficiency in one technology (or two), but would love someone who has some moderate experience in others (the webstack developer is perhaps the most obvious - PHP5/7, HTML5, CSS3, JS, SQL, Apache - but there's cross-skilling happening across many teams and techs these days) – HorusKol Mar 15 '17 at 7:22
  • 1
  • @HorusKol I don't have a question – paparazzo Mar 15 '17 at 11:14
  • Every developer contract I've ever seen has listed as one of the duties of the role "keeping your technical knowledge up to date" or similar. Learning different technologies is your job. – Jonathon Cowley-Thom Mar 16 '17 at 10:43
6

Is this right behaviour or will it be helpful to be jack of all and master of none?

I recommend being a jack of some trades and master of one (or two). That is, curiosity is great and you never know when something you learned by testing out the new shiny thing will be useful, but depth is also important to progressing in your career. Without expertise in at least one area, you'll very likely start hearing "Well, you're okay, but we really need an expert in ____ to lead this project."

You'll also learn things by going deep in one area that you won't learn by trying out the next new thing. Building larger projects and working with the same technology for longer will reveal details you just never would have picked up by playing with it for a few days. The more tips and tricks like that you learn, the easier time you'll have finding the same sorts of issues when you try out new things.

  • Definitely support focused knowledge on one (or two) technologies - but sometimes seeing how this work in one technology can lend to a better understanding or implementation of a different one. – HorusKol Mar 15 '17 at 7:24
3

Curiosity is fine, but don't let your curiosity become a distraction strategy for avoiding the real work and your eventual mastery of at least one programming language.

You will at least need one programming language to get yourself started, this will become the firm ground you need to stand on to do actual work and to propel yourself to learn the other fundamentals of programming like data structures, algorithms, etc.

And after mastering that initial programming language, your speed working on projects will increase dramatically, since you won't have to stop yourself and google for a solution every time you run into a little bit of a syntax problem. Now don't get me wrong, you will still need to google for stuff from time to time. It's just that you will stop wasting time on googling for the same information over and over again. And if you do enough exercises, you'll find that some core syntax at least becomes an integral part of your fingers muscle memory.

That being said to get yourself started, you should measure yourself against other developers (which can be a very sobering and a very humbling experience).

Use the following:

  • http://codewars.com (easy, I like it because it's crowdsourced, its hides spoilers from the comment section of each problem, and it shows you the many different working solutions of others, after you've successfully completed a particular problem. This site will only allow you to register and look around once you've completed two or three super easy problems)

  • https://leetcode.com/ (harder, use the free parts)

  • https://pramp.com/ (much harder, as this site makes you pair up with other job hunters to practice technical coding interviews with a shared code editor and over video conference. This is the closest thing you'll have to a real technical interview. And this lets you experience technical interviews from both the perspective of the interviewer and the interviewee, as you both take turns switching roles and the website supplies each of you with a technical problem and the solution).

Just don't let yourself get discouraged. You can become a productive developer, even before reaching the stage of the Pramp website. It's just that you need to learn honestly how wide of a gap there is between yourself and the developers who work for top tech companies.

Use spaced repetition to master the syntax of that initial programming language. Take a formal course if you can. If you can't, there are free online courses online. That kind of structure helps. Work on your own personal projects. It's easier to learn when you're trying to solve an actual real life problem. Pair up with others to form a study group. Teach others how to program in real life, or through a blog. Get a job using the programming language you've learned. And don't stop practicing. It's very easy to slide back if you don't actively maintain your gains.

After which, feel free to explore any other technology or tools you want. In fact, it is important that you keep up with the latest best practices and other tools of your profession, and adapt your skills to the ever changing market conditions.

Of course, our profession is full of people evangelizing easier paths, magic pills, and the latest hyped technology. And you'll reach many dead ends following all those leads, but it is still important that you take some time to investigate what's out there. Over time, your BS detector will become better. And over time, you'll find some tools/technology/practices that may indeed be worth switching to or adding to your toolbox. But again I must caution you, all of that will be wasted time if you don't master the core syntax of at least one programming language initially.

  • As a note: a Developer is not always a Programmer. You may want to reconsider this answer. – Weckar E. Mar 15 '17 at 7:46
  • @WeckarE. You mean like a web developer who only needs to know HTML and CSS. That's kind of pushing it these days. I would still argue that a web developer should at least master one programming language. Cutting and pasting javascript without understanding the code can only get you so far. – Stephan Branczyk Mar 15 '17 at 7:56
  • The role of "Developer" in many contexts also includes functional designers and testers. – Weckar E. Mar 15 '17 at 9:17
  • Well perhaps, jeyaganesh can tell us in which context or in which country this is in, because I've never heard of a software tester being considered a developer unless he programmed or automated his own tests. – Stephan Branczyk Mar 15 '17 at 9:36
  • In this context I meant a programmer (.net). – Jeyaganesh Mar 15 '17 at 18:22
1

First, I think it's great you have the urge to explore new tech. That means you're in the right field (I know many people in the field who don't have as much curiosity).

That being said, try and focus on one thing at a time. I can say from experience that bouncing around from one technology to another frantically trying to keep up with the crowd will do little to solidify the ideas in your mind.

It obviously takes time with a specific technology to become an "expert". But that doesn't mean you can't spend a modest amount of time focused on, say, the latest javascript library and actually be become proficient enough to develop in it.

You may already do something like this, but using something like Pluralsight or Youtube to get the basics is great to get up to speed on something. But after that the best way to solidify the information is to actually produce something with it.

0

You aren't going to impress anyone by being able to write a Hello World program or a loop in 20 different standard languages or eso-langs. There are a ton of people who can do that with a couple hours of work, and it really doesn't provide anything of substance to a client or an employer. Pick a few things, get really good at them, and have those be your bread and butter. Outside of those, have fun learning new stuff on the side to satisfy your need for intellectual stimulation.

However, you are on the right track in a certain sense. One of the most valuable skills someone can have is being able to pick up something they know nothing about, learn how to use it, understand its pros and cons, and then communicate that information to others. Don't lose that ability and actively cultivate it. An employer would most likely rather have someone with an intermediate knowledge that can pick up new things quickly, be flexible, and learn instead of someone who is an expert in one thing and is terrible at learning anything other than their specific domain.

0

I think the issue with the Software field currently is that there is simply too many things coming out for any person to be able to keep up with.

Generally though, jobs will have a "Main Tech". Be it JS/Particular JS Framework/.net/PHP etc. Most jobs have the main skill then the supplementary skills.

I think also for you to grow, you also need the "main skill". As this would then drive which new technologies you pick up. If you are a .net developer by trade, used to dealing with SQL databases, you can then look at NoSQL databases and objectively work out when a NoSQL database may be more beneficial than a SQL database (for example).

I try to learn technologies that offer a different perspective to the types of problems I need to solve in my work. So for example I am a .net guy who is moving more towards HTML/JS type work. Therefore i'm now learning to write an API in Node.JS with Swagger (to document it). Once I have completed the task, I have the skills in writing .net REST API's I can make a comparison and build an idea of the advantages of .net or node.js.

The takeaway lesson, I suppose is this:

If you are learning new technologies and never feeling the need to implement them, then was it worth learning them? The only way you will really learn the advantages of a new tech are to use them in a project and see the benefits. of course you need to keep relatively up to date with new technologies, but maybe try and be more selective and pick ones you know you will get chance to use on a decent sized project. You'll find that the knowledge will stick better and you may find that you go back to use it again.

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