Should I be looking for developers with specific skill sets or generalists that need to learn? [closed]

Thanks to the great help of this site and SO, I’ve been able to make a prototype of a software I want to sell but unfortunately although the prototype works I think my code quality is very low. I didn’t use much OOP or design patterns so although my code is understandable to me, I think a normal developer would faint if they had to read it.

So I wanted to hire a developer to make it a bit more better quality and improve some of my implementations of API’s that I may have not done correctly. I’m having problems hiring a developer though.

I have met 2 developers and had them read my software specs.The problem is, they lacked my business’s domain knowledge(which is completely understandable and no biggie) but they also lacked knowledge of the underlying tech systems I used such as Hadoop, Hbase, Cuda, etc..I spent alot of time explaining map/reduce, bigtables and other technologies I used. I thought it was common knowledge because of my interactions with people on this site but the people I met with mentioned they never had to deal with these things so they didn’t know it.

My question is, for software projects that are hiring contractor developers is it a danger if the developer does not have experience with the underlying technologies? or can a general developer who is accomplished in another area realistically pick up new technologies? I did a very very quick back of envelope calculation and I think the upfront costs would be similar if I hire a student or developer with no experience in my technologies who will work many hours versus hiring a highly experienced developer who charges double but finishes in half the time but what other risks should I be considering or worried about? Also, should if I do hire a generalist, should I be paying for the time it takes them to learn hadoop or cuda if they are contractors(seems to make business sense but not sure how fair it is to them if they do not use the skill again).

I’m a bit confused so any suggestions would be great.

6

is it a danger if the developer does not have experience with the underlying technologies?

Yes. (Learning takes time, and making mistakes is often part of the process.)

or can a general developer who is accomplished in another area realistically pick up new technologies?

Yes. (Picking up new technologies is something that generalists do all the time. You don’t last very long as a programmer if you can’t learn new things.)

I think the upfront costs would be similar if I hire a student or
developer with no experience in my technologies who will work many
hours versus hiring a highly experienced developer who charges double
but finishes in half the time

Note that there’s a big difference between ‘no experience with technology X’ and ‘no experience, period’. It’s one thing to have to learn some new framework or language, and quite another thing to start your first job as a developer and not have someone with some experience to point you in the right direction.

what other risks should I be considering or worried about?

Decisions that get made during the design and development process can be difficult and/or expensive to change later. A smart, experienced developer may save you a lot more than just development hours. On the other hand, someone who’s really good at what they do will be able to charge accordingly.

I’m a bit confused so any suggestions would be great.

Perhaps Joel Spolsky’s article will help: The Guerrilla Guide to Interviewing. In a nutshell, Joel says he looks for two things: 1) smart, 2) gets things done. Beyond that, I’d suggest looking for someone who you can work with, and who will understand what you’re trying to accomplish and work toward that with you.

0

I guess if a novice can do the exact same things for half the price in twice the time, it all works out. Realistically, there are going to be problems your novice won’t solve and pitfalls they can’t avoid. I don’t think you’ll get similar code. You’re going to end up lowering your expectations.

This is more likely to be the case when it comes to design. Pay the extra fee for the experienced developer to work on the design. You can use the novice to help with the coding volume if you think that’s cost effective.

Yes. Both.

Ideally, you could find someone in the middle who would need a leg up, but not for someone to carry them on either technical or domain knowledge. However, many forces affect the staffing problem you are trying to solve.

Why is there a Domain Skill Shortage

Developers are an itinerant group, moving from application domain to application domain as the market demands. If something is hot, ten or maybe a hundred or even a thousand companies will chase it until competition drives all but a handful of players out of the market. Consequently, incentives for developers to go deep into your business domain knowledge pre-hire is zip. If you are doing something fairly novel, you won’t find others with domain knowledge. If you have competitors, or particularly ex-competitors, you should not have to give up your quest for domain experience.

If you hire a hot shot developer, they may be most interested in developing portable skills, so you may still be forced to carry a lot of weight for domain knowledge. Perhaps you should consider either getting a system engineer to document feature related domain knowledge for use by the developer. Perhaps between smart and gets things done, you will pick someone strong in the gets things done. If you can find a developer who is interested in being with you for a while, learning both your business and your technology, who places needs of your company about equal with their own, that may be better long term than the smart guy whose plans involve climbing up and, pretty frequently, out.

High Demand Skills

If you are doing something that is in high demand, you must do much more to attract candidates. If your visibility is low and what you have to offer in return is less stellar than the competition, you may either need to pay a lot more or grow the talent you need from a pool of candidates with other skills.

Domain Skills or Technology Skills?

In the question you mention several skills your candidates lack including Hadoop, Hbase, Cuda, map/reduce, and bigtables. I am not sure I would call these domain skills because they are based in technology rather than the specifics of making a product that is industry specific to your customers. I suspect that each of these skills is portable and will still be valuable after your particular industry has automated and you have dominated, found a niche, or moved on to something else.

Technical Skill Growth Attracts Good Candidates

The advantage of hiring and training for technology skills is that the smart, gets things done, aggressive, career oriented developer who trains themselves will jump at the chance to learn something with a long and rewarding future. If you maintain challenges and a manageable new technology mix, many of the developers you want will embrace being one your team for both short term and long term mutual benefit.

is it a danger if the developer does not have experience with the
underlying technologies? or can a general developer who is
accomplished in another area realistically pick up new technologies?

A developer can pick up technologies (and they will, eventually) but I don’t think that meets your requirement.

You have working software, but you want it reviewed, refactored, and perhaps even rewritten. You really need an expert or at least someone experienced in a couple of your technologies to be able to do that, because although there are such things as software patterns, implementations vary between platforms and frameworks due to the uniqueness of the platform and framework.

You’d solved the business problems and mastered the domain, and you’ve implemented the software. You are now after technical guidance to allow your application to scale and live a long and healthy life. You want someone who has done this in a similar system, or using similar technology.

Different platforms often require completely different mindsets and experience. I’d guess you are working on a big data / parallel computing type project? A web developer or an integration developer should be able to rewrite your prototype and have it work as well, but why assume they could do so any better than you?

Don’t hold out for the perfect person, because they might not exist, but your developer should be familiar with at least some of the technologies and concepts you’re using, or, as they say in job advertisements, demonstrate the ability to quickly learn new technologies and concepts. If they haven’t heard of Hadoop or MapReduce then the alarm bells should be going off – big time.

You are really asking for a code review and/or training. Especially for code review, a group of seasoned programmers with diverse backgrounds is best. When they all agree, do what they tell you. When they all have a different opinion, you are doing just the right thing. 🙂

If you use mapReduce, CUDA, and Hadoop and want a single reviewer, hire the expert. My first choice would be to look for someone with experience in addition to school. Also consider training yourself, joining user groups, etc. You may be able to take a few key individual questions and show them to friends if you have that kind of friend.

Does Programmers.StackExchange let people post code for critique? If so, I’d pick no more than a page. Pick something you know is wrong, but don’t know why.

What programming language are you using?

1

I’d take total lack of familiarity with what Hadoop/MapReduce even are as a warning sign that the developer might not be making any attempts to keep up to date.

That said, that’s just a sign, not a no-hire. Give them FizzBuzz or something of that nature, and if they get past that show them your code and ask for a critique. Perhaps choose something with a bug deliberately, but also something you think is ok, as that discussion will be more interesting.

It is hard to give advice on this. Only some thoughts:

I think the upfront costs would be similar if I hire a student or developer with no experience in my technologies who will work many hours versus hiring a highly experienced developer who charges double but finishes in half the time but what other risks should I be considering or worried about?

Form what you have written in your introduction:

  • my code quality is very low
  • I didn't use much OOP
  • I wanted to hire a developer to make it a bit more better quality and improve some of my implementations

Answering this should be a no-brainer:

If you hire a developer with no experience, it is very unlikely, that you are able to increase code quality. A programmer with no experience is no help.

Although it might be cheaper in the short run, to hire a novice, you are paying later!

what other risks should I be considering or worried about?

Do not make the mistake to calculate only the costs, to get you and your product up and running. More important are the costs of maintenance.

As a direct consequence, of what I said in the previous paragraph, you have to consider, what is called Technical Debt. As you said: the codebase is in no good shape – so to say, there is already technical debt. And with hiring unskilled workers, you are increasing the debt. Perhaps in some years from now, you end up with an unmaintainable codebase and have a) to start over again and b) loose eventually customers, which equals in both cases: loss of money.

Also, should if I do hire a generalist, should I be paying for the time it takes them to learn hadoop or cuda if they are contractors(seems to make business sense but not sure how fair it is to them if they do not use the skill again).

Clearly: Yes! I do not see any reason, not to do this. They need the knowledge, you need them to have it – so: yes.

If they are good developers, they should easily get grips on new – or at least new to them – technology. Chances are high, that if they take their job seriously, they have technologies on their radar, meaning, they do not actually have done anything productive with the technology, but know the how and when– to use it.

I have to admit, having no knowledge of Hadoop for myself, but I know, when it might be a good solution and have a fair understanding on how it works in theory; so I would say, that it should not take long to get me productive.

I have met 2 developers and had them read my software specs.The problem is, they lacked my business’s domain knowledge(which is completely understandable and no biggie) but they also lacked knowledge of the underlying tech systems I used such as Hadoop, Hbase, Cuda, etc..I spent alot of time explaining map/reduce, bigtables and other technologies I used.

To explain your business should be the easiest part for you, since you know best. You can not expect everyone to know your business as good as you or even know it at all.

The same goes for technology:

There are a bazillion of frameworks, languages, toolkits out there – it is unlikely to find (m) any developer(s) knowing them all

Of course you could say: $Technology_du_jour is hyped in the media, so I expect every developer having a working knowledge. But that is not the reality.

For me as a developer my job is a tradeoff: I have a working knowledge of some languages and some technolgies. This makes me flexible in many ways. If I have to, I am able to develop an in-depth-understanding of my current tools, but as seasons go by, tools and languages do.

tl;dr;

1) If you can, hire an expert in your domain and in the desired technology

2) If you can’t,

2a) Look for a generalist with some project expertise, which may or may not have knowledge of the used technologies in your project

3) If there is really, really nobody else: hire a student.

You have technical debt, do not increase it!

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật