推荐理由：这是一个注重概念的机器学习教程，顺手还提供了代码（当然了是 Python 的）和数据集。它主要讲关于机器学习用得到的概念，适合于代码基础不错但是刚开始接触机器学习的人。现在已经更新了一半了，唯一的不足就是，对于英语苦手的同学来说没办法对着图片用谷歌翻译可能会是个问题。
今日推荐英文原文：《Is this real life?》作者：Emanuel Estrada TecGDL
Is this real life?
As a student, it often happens that you find yourself working on a project and think “Wow! I’ve worked so hard in this project there is no way in hell it can break”, but the very next day you go up to present your program and the teacher asks you to try some input and, guess what? It breaks!
My most memorable experience if this occurrence happened a year ago when a friend of mine was presenting his sorting algorithm, but out of the blue the teacher suggested trying to input Russian and Chinese characters, which broke my friend’s program.
So, have you guessed the moral of this fable? That’s right, understanding that this world is not perfect and your application needs to be ready to deal with that before deploying is essential!
So how do you get ready for the real world? Understand the context, think of use cases, and most importantly test, test, test!
Thinking outside of the box
We often hear the saying: “Think outside of the box!”, inviting us to be creative and think of innovative and unusual ways of solving problems. This time, I want you to take the saying a little more literally: think of your application outside that perfect environment in which it was developed in.
In order to do this, it is important for developers to understand the context in which their app will be used everyday. If you are building an app for a hospital, you should have some idea of how the hospital works and thus build an app that fits their needs accordingly. You don’t have to become a doctor yourself, but doing some good research will give you the knowledge to develop a better-fitted application and even to feel more confortable around your client by not appearing completely lost when they talk to you.
Having some knowledge on the domain will help you build better and more accurate use cases to test, because the better you understand the context and your users, the easier it will be to predict their behaviour. After all, remember that a good use case clearly and accurately explains what a system does, in language that’s easily understood.
Test-drive that Ferrari before buying!
I know the idea of buying a Ferrari if you have the money to do so may sound appealing to a lot of people, but trust me, if you don’t test drive, a lot could go wrong. What if that exact Ferrari you chose can’t speed properly? Or what if the AC doesn’t work? You may want to make sure before everything works before taking it home, right? It would be a bummer to find out there are problems with the AC in the middle of a road trip.
Well, same thing goes for software. Before you sell or make a final release, you may want to test it out in the real world. And what’s the best part about it all? The client can start playing with it before its completely ready!
In order to do this, you should consider implementing a testing cycle, which through several phases tests different parts of your program with different ways, and polishes your application for it to be more prepared to the real world.
A common way to test for real-life situations and allow users to start familiarizing with the software is the Alpha-Beta testing phases. The alpha phase allows developers to simulate users and user behaviour, while beta phase allows users to start playing with the program with the disclaimer that it is not completely finished and therefore may encounter bugs, but can expect that these bugs found will be fixed before the final release.
In short, testing has to be extensive but the fact that you can even get the client involved in the process of debugging will make things a lot easier.
Understanding the context, thinking of use cases, and proper testing will make your final deployment much more smoother and estable. I encourage you to learn more by checking out Chapter 4 of Head First Object-Oriented Analysis and Design: A Brain Friendly Guide to OOA&D by O’Reilly Media. Make sure your app is ready for the real world!