[英] MEAN.IO建立者Amos Haviv:用一門語言統治一切(圖靈訪談)
Amos Q. Haviv是一位軟體工程師、技術顧問,他還是MEAN.IO和MEAN.JS的建立者。Amos有近十年的全棧開發經驗,曾就職於多個創業公司和企業。從2011年起,Amos使用JavaScript的全棧解決方案進行開發,包括Node.js和MongoDB,以及AngularJS一類的前端MVC框架。2013年,他建立了MEAN應用的第一個樣板MEAN.IO,目前在www.meanjs.org繼續開發MEAN解決方案,另外他還為多家公司的開發團隊提供指導。Amos著有《MEAN Web開發》一書。
iTuring: Why did you create MEAN? What was the original idea like?
In 2011 I started working as a technical consultant. I've met a lot of incredible startups and technical teams in leading companies, and a majority of them had a similar problem. By 2013, everyone started understanding the new capabilities of JavaScript, so I would see teams working relentlessly to adapt their stacks to new technologies, especially Node.js and AngularJS. After noticing many of them deal with the same design problems i've started working on a simple boilerplate project to help teams get a better start. That project eventually became the first MEAN boilerplate.
iTuring: What was your plan to attract developers to contribute to MEAN?
After I showed the project to my friends and colleagues, some of them suggested I should release it as an open-source project. I didn't plan to attract any traction at all, I just wanted to offer my humble opinion on the way I think projects should be built. The major traction peak was actually generated by an HN post, however the real reason for this traction, was the face developers really gained some value from the project.
iTuring: Why are JavaScript full-stack engineers so important in our time? Would you recommend front-end developers to turn into full-stack developers?
By nature, I'm kind of a language agnostic. I believe a good developers should work with as many languages as possible, mainly because it opens your mind to different types of coding styles, patterns,and best practices, but also because its FUN and keeps you fresh and excited about coding. JavaScript engineers are important, because JavaScript is playing a huge role in our industry, there is almost no other language that runs on every single connected device on earth, so naturally developers create amazing new stuff with it. In the book I explain the reasons for this current state of JavaScript, mainly concerning the Chrome V8 engine, but I think it always comes down to people and their creations. I recommend every developer I meet to gain as many skills as possible, so front-end developers should definitely adapt to their full-stack environment.
iTuring: Is MEAN capable of handling product or enterprise level development?
I've seen MEAN implemented in various ways, from small hackathons to large-scale distributed applications. It's been production ready for a while now and in my experience, enterprise developers are usually enjoy using MEAN even more than the average developer. Bottom line, I have seen startups and very high profile companies using MEAN and loving it.
iTuring: What are the advantages of the MEAN Web development comparing to tradional web development such as JS+Java?
Simple answer: One language to rule them all. Also, development patterns and practices with JavaScript are just more suitable for the web, and it's simplicity and high performance, make it an heaven for beginners and experts alike.
iTuring: Meteor has over 4K packages, comparing with MeteorJs, what is the advantage of MEAN?
Meteor is an amazing open-source project. I know many of the developers that work on the project and they're doing an excellent job. To me it's like comparing oranges and apple, Meteor and MEAN are not competitors, because they offer different advantages. To begin with, Meteor is a for-profit company, which means you get a lot of the known advantages and disadvantages of using a commercial product compared to a community lead product. Second, everything in MEAN is open and adjustable, it is meant to be like Legos: Your imagination, your responsibility.
iTuring: Some great alternatives to MongoDB has been around for some days, for example TokuMX and Postgre SQL. What scenes of development would you use MongoDB? Do you think it's possible to replace MongoDB in MEAN?
The community have been talking about replacing every part of MEAN for quite a while now. Some developers wants React instead of AngularJS, some prefer PostgreSQL over MongoDB, and the open nature and structure of the project allows any developer to modify it for its needs. Official community support for those versions is what you'll lack. However, I firmly encourage developers to tweak MEAN and hopefully build their own communities.
iTuring: Node.js is a grand ecosystem consisted of lots of modules, to avoid problems of scaling and architecturing, which modules should we choose?
NPM is doing some amazing stuff right now. The team there is extremely talented and they're dealing with their noise-to-signal problems quite well. As a general rule, I usually choose the older and more popular modules, which I surround with some abstraction layers so I'll be able to replace modules easily.
iTuring: MEAN is combined with four different rich components, is it possible that cohesion and coupling would turn the ongoing project into heavyweight development? How to avoid that?
It's a problem we've been discussing since the beginning, so one of our guidelines was to develop the project in the most modular way possible. The ideal would have been to create a plug&play plugin system, but these efforts usually turns up more complicated than needed. The key advice here is that developers should maintain a clear separation of components to make sure they can migrate easily.
iTuring: Are there any open-source projects based on MEAN that you would like to recommend to people who wants to learn MEAN?
I think the current state of online information is great. So developers can easily find great books/articles/demos that can help jump start their project. It will be quite hard to find a large scale MEAN project that is open-source, since companies tend to not share this kind of proprietary asset with the open-source community. I would recommend any developer to just jump in, pick some small idea you have and work on it with new technologies. It's a win-win situation: You end up creating something meaningful to you and learn a new a technology.
更多精彩,加入圖靈訪談微信!
相關文章
- MEAN.IO建立者Amos Haviv:用一門語言統治一切(圖靈訪談)圖靈
- MEAN.IO建立者Amos Haviv訪談問題有獎徵集(圖靈訪談)圖靈
- [英]Bruce Tate:恐懼是我寫作《七週七語言》的初衷(圖靈訪談)圖靈
- [英] 《Java 8函數語言程式設計》作者Richard Warbourton:Java的亮點不是語言本身(圖靈訪談)Java函數程式設計圖靈
- Compass框架建立者Chris Eppstein訪談問題有獎徵集(圖靈訪談)框架圖靈
- [英]C++ API設計大師Martin Reddy:選擇最合適的語言(圖靈訪談)C++API圖靈
- [英]Allen Downey:自由的未來,使用者/讀者的新定義(圖靈訪談)圖靈
- [英]Dave Wooldridge:蘋果應用開發與營銷(圖靈訪談)蘋果圖靈
- 圖靈訪談圖靈
- 《用資料講故事》作者Cole N. Knaflic:消除一切無效的圖表(圖靈訪談)圖靈
- Nutz 發起者:不亦樂乎(圖靈訪談)圖靈
- 訪談嘉賓推薦(圖靈訪談)圖靈
- [英]Brian X. Chen:永遠線上的時代(圖靈訪談)圖靈
- 阮一峰訪談問題有獎徵集(圖靈訪談)圖靈
- 《Java 8函數語言程式設計》作者Richard Warburton訪談問題有獎徵集(圖靈訪談)Java函數程式設計圖靈
- [英]專訪《寫給大家看的設計書》作者Robin Williams(圖靈訪談)圖靈
- 程式語言極客Ola Bini:讓征服癌症成為可能(圖靈訪談)圖靈
- 圖:程式語言的建立者們
- [英]《HTTP權威指南》作者Anshu Aggarwal:用計算機來節能(圖靈訪談)HTTP計算機圖靈
- [英]《奇思妙想》作者Dennis Shasha:小品電腦科學(圖靈訪談)圖靈
- 紀念阿蘭·圖靈誕辰,評選“精彩·好訪談”(圖靈訪談)圖靈
- 《CSS揭祕》譯者CSS魔法訪談問題有獎徵集(圖靈訪談)CSS圖靈
- 《Java 8函數語言程式設計》作者Richard Warbourton:Java的亮點不是語言本身(圖靈訪談)Java函數程式設計圖靈
- Compass建立者Chris Eppstein:真正的CSS框架是如何工作的(圖靈訪談)CSS框架圖靈
- [英]《簡約至上》作者Giles Colborne:讓使用者變成設計的一部分(圖靈訪談)圖靈
- Bruce Tate:恐懼是我寫作《七週七語言》的初衷(圖靈訪談)圖靈
- 《使用者思維+》作者Kathy Sierra訪談問題有獎徵集(圖靈訪談)圖靈
- 《JavaScript Web應用開發》作者Nicolas Bevacqua訪談問題徵集(圖靈訪談)JavaScriptWeb圖靈
- [英]Joe Armstrong:關於Erlang,有很多東西我想改變(圖靈訪談)圖靈
- [英]“龍書”作者Jeffery Ullman:相信你自己,自由地思考(圖靈訪談)圖靈
- [英]Susan Lammers:與程式設計大師們的對話(圖靈訪談)程式設計圖靈
- [英]Donald E. Knuth(高德納):總有一些事超越我們的理解(圖靈訪談)圖靈
- 《用資料講故事》作者Cole Knaflic訪談話題有獎徵集(圖靈訪談)圖靈
- 蔡學鏞:這一題不答(圖靈訪談)圖靈
- @松鼠會Sheldon:一堂宇宙課(圖靈訪談)圖靈
- [英] 《七週七併發模型》作者Paul Butcher:用併發計算實現最大效率(圖靈訪談)模型圖靈
- [英]《禽獸心理學》作者Anna Salter:防止兒童性侵害,從你我做起(圖靈訪談)圖靈
- [英]Bob大叔:程式設計“老師傅”和他的職業素養(圖靈訪談)程式設計圖靈