Be specialized and maintain

One of the things mentioned recently, perhaps on an SO or Joel podcast, was that the best way to be successful in business when you start is to start specializing and focus on just one thing.

If you say that you are the blacksmith of all trades; you're just another jack! If you say you are an expert, I think the example of joels is some types of faucets - then while you think you just removed most of your market; you have actually increased the chances of getting a business in a certain label, as you will stand out more against the rest; someone, somewhere, wants you to be more than if you just said you were doing everything.

Anyway, my question is: I would like to specialize in something. I have been doing C / C ++ for a long time, but have never tied to myself as win32, mfc, directx, wxWidgets, qt, boost, sdl, allegro, etc. Etc. I tried everything and did different things in each; I also started moving towards writing for linux (and now osx) as it was just related to using it, so my capabilities grew even further.

My opinion was that the more I know, the less likely I am to become stagnant and stuck; if I know the bits of each, I can get the job done anywhere and then learn more as I need it.

For the last couple of years I've also taken .NET and then PHP / LAMP; I feel quite comfortable anyway, but I think in my heart I'm still a C ++ guy (although I think I learned more commercial stuff in PHP than I did with C ++).

Another problem I feel is that the world is becoming very website and technologies like C ++ are becoming less and less used (ignoring Google's new tool - can't remember the name) and other things like both flash and flex are becoming more popular. I agree that the tools we use to browse the web are written in C ++ /, but in terms of market share, I think all bases are already covered.

I was wondering how people would decide which peg would ultimately pick and why; and this is for business reasons (i.e. makes more money) or for selfish reasons (i.e. I feel complete, writing things in C ++ like it was PHP related).

I may be asking the wrong question; perhaps I should specialize in a specific product rather than language as a service; Didn't think about it ...

Cheers, Chris

+1


source to share


4 answers


I would suggest that most people choose a reason (interest, money) to head in a certain direction early in their careers, and the rest are pretty much angry.

I am still trying to keep a general general knowledge of technology related to my current and immediate responsibilities (and my friends and colleagues so that I can understand our conversations). But I specialized in those that are necessary in order to stay "ahead of the curve" in my particular area, or not related to each other, but interesting to me, and I dared in other cases osmosis.

You noted that "the world is becoming very much a website and technologies like C ++ are becoming less and less used." This way, you can "follow the herd" and pursue new tools and techniques, or you can find a niche in the fields that create them. I chose the latter because although there may be fewer positions available, I find them more challenging and rewarding both intellectually and financially. Oh, and there's less competition!



As you progress in your career, you will find that many technologies are very similar, with a lot of overlap. Once you've covered the basics, it becomes less important to know any particular platform or language, and more important to understand the methods and processes that lead to effective, reliable, and quality products.

Good luck!

+4


source


Being on my own, and currently owning and managing a small software house, I would say that you are right to focus on a specific market for the reason that you will be able to come up with generals in the same area market. Note that I recommend specializing in a given domain rather than a particular technology, as technologies change rapidly, whereas domain knowledge tends to last longer.



It also depends on whether you intend to work as a contractor or FTE in a business or do it yourself and create your own software house. In the latter case, you will need a skill set between you and your partners, which includes analysis, development, testing, sales, marketing, and finance. That way, once you have enough development skills to meet your needs, you can focus on bringing the free skills up to speed. For example, over the past few years, I've spent a lot of time learning about effective test automation techniques rather than new development tools.

+2


source


For people who are just starting out in business, it probably makes sense to specialize because they need something to compete.

For more experienced developers, I agree with what the Pragmatic Programmer book suggests, which is that as a professional developer, you should always try to add more useful tools to your toolbox. For example. they suggest regularly collecting new programming languages, etc.

If you do, you obviously won't become a black belt in all of these areas, but you will broaden your horizons and learn to look for problems from different angels, which is very helpful.

+1


source


As someone who needs to both hire and work with different developers, I think you need both breadth and depth. You need to know a wide range of technologies and platforms to show that you are flexible, can acquire new skills as needed, and are interested in expanding your knowledge. You also need one or two areas where you have deep knowledge to show that you are capable of becoming an expert.

I would rather hire someone who has a skill set but not necessarily the exact skill set that I need instead of someone who matches exactly but can't learn anything new. One of the few developmental certainties is that what we do today will not be what we do in 5 years.

As far as C ++ is concerned, we are actively using this to develop distributed agent based simulations. Think of the hundreds of millions of agents closely connected across a couple of thousand machines. For this niche, we did not find anything that would beat C ++.

+1


source







All Articles