104

I'm a member of a small startup. When we decided to look at including a bit of AI in our product, I was asked to investigate, simply because I found it interesting and had taken a few AI/Machine Learning courses at uni (undergrad).

Today, I'm now the lead of the central AI component of our product. The only problem, I need (and want) more experience in the area.

If this was a usual position, I'd assume I'd join a large department, and spend time learning and growing under senior developers with lots of experience in the field. The old saying "Surround yourself with people better than you".

As it stands today, because of lack of experience, most of the decisions I'm making are trial and error, which is slowing us down. Without completely understanding the state of the industry, we'd often spend a fair amount of time implementing a solution, only to discover a month later that we were reinventing the wheel, or doing something that was known to be ineffective. And naturally, I'm not going to be providing the best environment of growth for the people in the company doing AI work under me.

Admittedly, I've definitely grown in skill a lot since I'd started in my position, however I would still hesitate to describe myself as anything more that having an "intermediate" skill level in the field.


To make this a valuable question to anyone:

What are practical steps my company or I could take to quickly bring us up to speed in a field where the company's experience is more or less self-taught?

In our case, we probably don't have the resources to bring in massive experience, but any advice about that would still be appreciated.

  • 3
    You are not going to quickly come up to speed. – paparazzo Oct 18 '16 at 12:25
  • 31
    Very good question. Learning on the job is all well and good but sometimes you feel as though something is missing. It's often difficult to find the time to learn best practices, tricks of the trade, etc. – camden_kid Oct 18 '16 at 12:46
  • 1
    In my opinion you'll naturally improve as you go through this process of trial and error. Unlike a hobbyist you can't just walk away from something ill considered. – Casey Oct 18 '16 at 19:55
  • 8
    You are working in the R&D world of SW development. It is quite different from the Web/CRUD development world. Very seldom is there an "experienced expert" available in the R&D world, That's what your company expects you to become. While trial and error is fine when you first start learning something, at some point you should be getting more knowledgeable and begin having actual reasons for the direction you are taking. It doesn't seem like you're growing to the next level. You should begin learning some of the more formal problem solving techniques to learn to make more reasoned decisions. – Dunk Oct 18 '16 at 22:20
  • 3
    Go do a PHd in AI or employ someone that has! Ideally you want at least 3 people that have done their AI PHd at different universities. – Ian Oct 19 '16 at 11:30

11 Answers 11

71

You're essentially down to the same path that anyone who wants to learn something in their free time. If there are no internal experts look for them elsewhere.

The following are the best resources

  • Seminars,
  • Conferences,
  • Courses,
  • Online articles,
  • Since it is a pretty new technology, you might consider the scientific publication in that field. You could consider contacting some computer scientist from universities, who might spare a bit of time to give you some direction about where you should look to.

The prices and efficiency of various methods may differ, but it depends on where you stand, and what your employer is willing to spend.

  • 4
    If you're not sure where to look for these types of places, you could always check [MeetUp](meetup.com) to see if there are any in your area. Another option would be to go back to your school (or a local one), and talk to the professors/students in an appropriate class. – krillgar Oct 18 '16 at 16:04
  • 5
    Online courses. Check out EDx or Coursera. – Dave Kanter Oct 18 '16 at 21:47
  • 9
    You forgot Stack Overflow. – OldBunny2800 Oct 19 '16 at 0:04
  • 1
    Regarding your suggestion about talking to an expert in the field from a university. Do you have any suggestion of how to go about making contact? (Or is that worth a whole new question on academia?) – SCB Oct 19 '16 at 8:38
  • 1
    On Academia, you'd have more views on the whole things, but trying to find some publications (arXiv, for example), you might identify some people working in that field. And then not sure about a universal approach, but you could try a phone call, or email. Or if it isn't too far off, go yourself. It would probably help if you show you've read their work and have concrete questions about it. – clem steredenn Oct 19 '16 at 8:58
24

The majority of the fields I'm competent at are self taught in my own and work time when there was the opportunity. Not having superiors does mean you work from basics upwards, but that is not necessarily a bad thing for you personally. It means your knowledge becomes pretty thorough.

Look for courses etc,. that you might be able to convince your employers to pay for. It's important to fill in the gaps between what you can learn on your own and industry best practices.

One advantage I found was that you aren't tied down to just what is taught and sometimes solve problems in unique ways because you are too uneducated to know better. In a personal example I combined two fields to solve a problem and didn't think much of it because it was the only way I could work out how to do it. But the solution is now in use in 11 govt departments and most of the schools in two small countries and even got me an audience with a King.

  • 1
    This is IMO the best answer. The only thing missing (which is also omitted from all other answers) is the idea of developing new knowledge, if you are really working in the cutting edge of a particular field. Not all knowledge comes from external sources. It is possible to create new knowledge. – Wildcard Oct 19 '16 at 6:36
  • 7
    This method does come with the risk of learning bad habits, as does all self-teaching. – Weckar E. Oct 19 '16 at 7:34
  • 1
    @Wildcard Very good point, I actually did this since I attacked a particular problem from a non standard point of view in two fields and put them together. I'll try and think of a way to add it to the answer. – Kilisi Oct 19 '16 at 8:19
  • 3
    @WeckarE. there's no guarantee that "superiors" won't pass on their own bad habits - the trick in all cases is to expose yourself to as many sources of information as possible and never stop learning – HorusKol Oct 20 '16 at 6:41
  • 2
    @HorusKol That's why I personally I always recommend exploring new topics in an academic or at least a classroom setting. A group analysis provides a really good garbage buffer - most of the time. – Weckar E. Oct 20 '16 at 6:57
12

As it stands today, because of lack of experience, most of the decisions I'm making are trial and error, which is slowing us down.

Then why not hire somebody with more experience in the field?

If this was a usual position, I'd assume I'd join a large department, and spend time learning and growing under senior developers with lots of experience in the field. The old saying "Surround yourself with people better than you".

That saying still holds. You are that larger department, but you are lacking the senior developers with lots of experience in the field. It looks like hiring such a senior developer would help to have and build the expert knowledge in the field for your company and the team.

we probably don't have the resources to bring in massive experience

It will cost, either by bringing in another experienced employee or by turning you into one. There might be a middle ground in the form of consulting companies, that might be able to reduce the amount of trial and error you are performing.

  • 5
    This is a solution, but it's not always possible to hire someone (especially a senior developper) just to bring knowledge into your company. – Jylo Oct 18 '16 at 14:57
  • 1
    Think if OP lived in some central Africa location. Would it be easy to have some AI expert veteran relocate there? Also: remote working really isn't easy if you want to do it legally across continents. – user3834459 Oct 19 '16 at 13:06
11

I'm in a similar situation. I'm the lead R&D developer at a fairly small company (25 employees).

I like learning new things, so I take courses all the time. Udacity is great, so are Edx and Coursera etc. You can learn a lot there, even if you don't take any courses and just browse you'll see what subjects and tools are "fashionable".

In terms of learning AI there's a great course available on Deep Learning on Udacity. It is based around the Google TensorFlow library which is still quite new and very powerful.

I did that course and then set about making my own neural net to predict football (soccer) matches.

Another way to develop your skills and see how you measure up is to do competitive coding. Kaggle is a great website for machine learning challenges. I recently entered a beginner challenge for leaf classification and I'm currently around 200th out of 400 entrants, so I know I have a lot more to do to improve! There are forums on there where you can ask questions, people share python notebooks and stuff, so there are lots of ways to learn.

Also, it's important to talk to people (or talk to a person who talks to people). I have a friend in Cambridge who goes to lots of meetups and is up to date with the latest trends and developments. I make sure to stay in touch mainly because he's a cool guy and we like to bounce ideas off each other, but also because he lets me know what's going on.

  • 3
    Not at all convinced that competitive coding is useful. Kaggle may be different, but a lot of these sites favour characteristics that are easy to measure (like memory consumption) over those that are hard to measure (like maintainability). – Martin Bonner supports Monica Oct 18 '16 at 14:54
  • 1
    Kaggle doesn't even look at the code, it's about how the algorithm works at catergorising things etc. Typically you download an input CSV file, create an output CSV and upload that for evaluation. It doesn't matter what language, framework you're using etc. If you want to know how good you are at machine learning then I think it's a decent benchmark. I've only done one competition, but I think I'll do more. – James Oct 18 '16 at 15:06
  • 1
    Kaggle is a good place to measure your approaches against current best possible - it can give you a sense of place (via the public rank). Although some of the techniques used to win competitions - such as highly complex ensembles, or searching for and using data leaks (where best practice would have you remove same leak and re-start your project) - don't translate well to industry practices. Also the ranking is somewhat obscured by script copying. If you are 200/400 on entirely your own code, your true comparison with the other competitors is probably more favourable than a raw 50% implies. – Neil Slater Oct 18 '16 at 16:52
  • 2
    Another way to do competitive coding is in-house hackathons. Everybody gets a chance to show off in front of his peers and the group can learn from each other. – Monica Cellio Oct 18 '16 at 18:31
7

Teach. Share your understanding with the rest of the team.

When you have to teach someone else, you have to:

  • stop and rethink things to make them relatable
  • discover your own assumptions
  • discover gaps in your own knowledge
  • discover gaps in your team's knowledge

All of these will make you better in your own field, improve your team, and generally make your workplace a little better.

5

In addition to the other answers:
You talk about growth for the people in the company doing AI work under me: is there anything you can do to use their resources? They may not be as experienced as you, but they have their unique thoughts, insights, search techniques, etc.

Why not let them do more research to prevent reinventing the wheel, or doing something that was known to be ineffective. Use your colleagues as sparring partners in developing the next steps.

5

I am in the same position as you are (although a slightly different field of software engineering), so I can totally relate to your situation.

Other people gave good answers about learning through the typical channels (books, etc) which is a good advice. Over the time, you will be better at picking more effective resources.

One bit that I would add, for you and others in the same situation, is be honest with your peers and seniors. Don't be afraid to say that you don't know, admit the mistakes that you have made because everyone does. This is very important from the perspective of the people that you are managing because you need their trust.

And naturally, I'm not going to be providing the best environment of growth for the people in the company doing AI work under me.

You can set a good example of learning on your own, also by sharing resources that you found effective, etc. So it's not as bad as you might think.

Good luck!

  • "You can set a good example of learning on your own..." Taking this approach with employees implies you expect them to learn skills they need to do their job on their own time. Providing them with the (paid) time to learn could be a good approach, but the implication that you expect them to spend additional but unpaid hours on work is not going to go over well (and it shouldn't; it comes across as extremely disingenuous, even if it wasn't meant that way). – kungphu Oct 19 '16 at 6:12
  • By on your own, I meant learning without much guidance, deciding what to learn, etc by yourself, during the working hours. Sorry about the misunderstanding, totally agree with what you said. – Gediminas Oct 19 '16 at 7:44
3

I would suggest collaborating with an AI department/professor of a university. They normally charge much less than professional consultants and have the latest updates in the field. They can also tie you up with their past students who have worked on similar problems. I was in a similar situation few years back where we were doing some advanced developments in telecommunications with a very inexperienced team. We collaborated with a university and had regular weekly meetings with the professor. It was a course correcting mechanism and the professor also updated us on the latest papers in the field. It helped us immensely.

2

Podcasts !

I listen to many dev & tech podcasts, almost daily - whenever I commute is an excellant opportunity, and beats the usual radio channels.

My knowledge has grown in many areas as a result, and you can get deep insights from experienced industry experts, without giving up any of your valuable spare time.

Listen in the car, on the train, on a bus, whilst walking the dog, in the gym, whilst watching TV (just one headphone socket), whilst waiting in a queue, at lunchtimes of your day job, in bed before sleep or upon waking up, whilst sunbathing, etc.

1

The very simple answer is that your job deliverables has to include a new category: "research."

If you're doing an agile methodology, then your sprint includes a task for researching the state-of-the-art in the field.

0

The most effective way to do this for huge engineering challenges like learning ML, which is a massive field in mathematical, algorithmic and engineering aspects, is to join a department in an established company. You return to a startup a few years later as a seasoned veteran.

Probably you have some of the experience necessary at your startup right now to interview for these roles.

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