在一个初创公司中选择使用Django而不是Rails的故事

初次见面,我是株式会社LOGICA的松永。
在开发新产品时,我们选择了Django,但由于我是初学者,希望能借此机会了解大家的经验,因此我设立了一份圣诞节日历。请多多指教。

由于我们公司目前还没有进行技术上独特的事情,所以我决定分享自己的经验。

若在创业初期的公司选择采用Django技术

随着机器学习的流行,Python的认知度也在提高,与此同时,人们对于Python是用来计算的这种印象也在扩散。此外,在网络领域,由于像TechCamp和Progate等编程学习服务中Ruby on Rails非常完善,我认为创业公司中选择使用Rails的人也在增加(样本数量不多)。

在创业公司中,尤其是像我们这样年轻人担任创始人的公司中,往往缺乏有经验的工程师。因此,易学性非常重要,所以选择有大量日语信息的Rails或PHP框架是很自然的选择。

尽管我认为在国内也有很多初创企业使用Django,但在年轻的初创企业中似乎并不常见。相较于国外许多知名企业的采用情况,在日本似乎还未完全获得认可。

这次的情况下为什么选择了Django而不是Rails,在年轻的初创公司选择Django的好处和坏处等等,我总结了一下。
※这篇文章不会涉及到Django的技术、性能、设计等方面的讨论。
※可能会涉及到年轻的初创公司特定的话题。

如果您喜欢,我希望您能继续阅读这个非常独特的文章。

我们公司目前的情况

在我们公司,旅行是为了放松而去的,但是有太多的事情需要去调查,尤其是对于“酒店搜索和预订混乱繁琐”的问题,我们正在开发一个旨在简化酒店搜索的横向搜索网站。它将成为类似于Travelko或Trivago的比较网站,而不是像Jalan或Rakuten Travel那样的网站。

咲く旅.com

数天前发布了,但是我们仍然没有解决完各种错误,并且温暖的大量手工输入工作也没有完成。(为了减少比较工作量,我们本打算通过自动命名不同预订网站上的计划名称和房间名称来进行,但是由于无法将其规范化,所以只能通过手工完成)现在不是写圣诞节日历的时候。

目前,我正在开发两个不同的Django项目,一个用于获取空房信息的爬虫,另一个用于比较网站的主体。由于公司目前只有我一个人,所以我也是独自完成开发工作。

筆者在開發開始時的程度

    • Pythonが1番得意

会社設立前はアルバイトでPythonばかり書いていたため。1年半くらい

ウェブフレームワークはDjangoよりRailsが得意
そもそもWebアプリはちゃんと作ってリリースしたことがなかった

シミュレーションとか画像処理とかクローラーとか、そういうのを書くことが多かった
途中まで作って潰すとか、友達と一緒に開発してもメディア側じゃなく管理画面側を担当していたりとか

英語を読むのは苦ではない ← 大事

在技术选择时的期望和需求

虽然采用了并不会激增开发人员,但由于人员依然较少的情况下,我们仍然强调对工作的轻松性。

    1. 我希望语言和框架能够统一

 

    1. 需要有管理界面(或立即可建立)

 

    尽量减少新的学习成本

第一个问题是转变思维或学习成本的问题。当选择用Python(Django)编写爬虫(和管理界面),用Rails编写媒体时,吸收迁移定义的差异或者单独写模型文件都有点繁琐。我有一种想法,即在重用的情况下希望尽可能多地重用。在谈论重用之前,我觉得在只有1-2名开发人员的阶段,同时使用全栈框架是不应该做的。

对于第二个管理界面,我选择了Rails,因为它有一些有用的gem能够解决问题,所以我并不太担心这个问题。

第三个学习成本是,由于我一个人的情况下,学习即意味着开发停止,而且当遇到问题时,如果不熟悉的话就会浪费时间,所以使用熟悉的语言和框架是绝对必要的条件。此外,使用两个框架还会增加学习量,所以我从一开始就考虑只使用一个框架。

经过考虑以上三个条件后,我们决定使用Django。

选择Django的原因

由于处在初创阶段的公司,很有可能通过策略转变等手段来舍弃已经制作出来的东西,而作为创始人的我也需要积极参与开发,因此我优先考虑了我自己最容易编写的内容。

个人的原因

基于以上原因,我们选择了具备管理界面的Django框架,因为我们在不同语言中最熟悉的就是Python。尽管我们对Rails更加熟悉,但我们并非专业的Rails工程师。我们的选择并不是通过技术上的比较来决定使用Django而非Rails。

另外,我们在前一份工作中经常接触到爬虫,也是因为这个原因,我们选择了Python来编写爬虫。

顺便提一下,在决定统一使用Python后,我用fabric和cuisine编写了部署脚本,所以除了媒体前端,我们全部都是用Python编写的。将全部改成Django后,部分部署脚本也可以重复使用,非常方便。

另外,Python也是分析方面有很齐备的库,使用起来很方便。
虽然暂时不会写太多分析脚本,但是我认为在分析工作中使用Django项目中的Django ORM来创建批处理等会让工作变得更轻松一些。

采用方面的原因 de

虽然Rails工程师的数量增加了,但我认为可能并没有急剧增加一定水平以上的工程师。
由于使用Django,伪工程师的几率会减少,因此采用Django的初创企业较少,这就使得在Rails工程师和Django工程师之间的招聘难度并不会有很大的变化。

然而,這一切都建立在部分採用的前提下,且存在一個重大錯誤,關於這一點我將在本文的後半部分進行描述。

使用Django真是太好了

由于全程都是使用Django,所以没有太多需要调整的地方,代码也可以重复使用,很方便。
此外,在管理界面上可以查看爬取的结果,非常方便。
由于是全栈开发,大部分需要的功能都能在搜索中找到,而且文档也非常详细,目前还没有遇到需要困扰的情况。
这些优点并不是Django特有的。

在使用Django时遇到的问题(可能会遇到的问题)

现在来说正题(笑)
实际上,目前在技术上没有遇到困难w
原因是,代码量还很少,也还没有到需要细致调整的阶段。因为这是我最近才做的项目,所以没有涉及升级Django版本之类的事情,感觉就是“啊,全栈框架真方便”。

然而,對於創業初期的年輕企業而言,有一些微妙的問題出現了。
在先前提到的全部內容中,我們已經犯了一些重大錯誤,這包括以下內容。

可能很难雇佣实习生或兼职员工。

因为只针对有业务经验的人进行招聘,所以才用了可能难以应聘的说法,实际上并不是在寻找没有Django经验的实习生或兼职工作。

如果是初创公司的种子期阶段,由于资金问题和人际关系,往往会雇佣同龄人,并且由于努力工作和“做任何事情”的重要性,经常会雇佣兼职或实习生。换句话说,

在选用时点的技能

捕捉速度和文化匹配

从那个角度来看,Django对于初学者来说并不友好(以下详细),因此我认为它限制了年轻初创企业在选择上的可能性。哈哈

相较于Rails,Django的教材数量较少且对初学者不太友好,同时中文信息也较少,因此对于编程初学者而言,不仅需要面对“不熟悉的编程” ,还要兼顾“英文”的双重困扰,对于完全的初学者来说,门槛相当高,我认为。(无论完全的初学者是否应该首先学习全栈框架这个问题另当别论)

另外,我认为几乎没有和我年龄相同且有Django经验的人(我是24岁)。起初,作为初学者的工程师,即使知道Rails,也可能对Django的存在一无所知。甚至对Python都持怀疑态度。假如他们知道,也可能会读作“迪尚哥”(消息源是我)。

因为无论年代如何,使用者都很少,所以仅有很少的人和地方可以随意提问,结果是阅读文档(英语)和源代码的能力变得相对重要。然而,对于工程师来说,阅读文档和源代码是理所当然的,所以我认为对于那些想成为工程师的人来说,从Django开始阅读是养成良好习惯的好途径。

无论如何,我认为开始学习Rails需要更多的精力。

然而,对于Python而言,我认为它是一种初学者容易学习的良好语言。

2. 研究成本很高。

尽管我以下的第一点有一些重复,但是考虑到中文信息较少、使用者较少和研讨会较少,我认为研究成本很高。

在年轻且技术实力不一定较高的创业公司中,当遇到困惑时能够立刻找到示例是非常好的事情。幸运的是,Python和Django在全球并不是那么不知名,所以有很多丰富的库等资源。然而,对于创业公司来说,不了解这些资源或者不知道如何实现会是不太好的情况。对于英语而言,相对容易找到例子,所以与其说是找不到,倒不如说是由于英语是主要语言带来的辛苦。

对于勉强会,我觉得没有像JavaScript的框架或工具选择那样的宗教战争,并且讨论的话题本来就不是很多,这也可能是其中一个原因吧。这也与Python的思想有关。

另外,我有一个主观印象,就是在工作中使用Django的人很少参加学习会呢w

如果公司的开发能力稍微宽裕一些,我希望能够有一个共享更多使用Django进行开发经验的场所,也想举办一些Django(或其他Python框架)的聚会和学习会。我可能会联系使用Django的企业,请各位企业代表不要介意。

总结

好事(?)

    • Django自体はよいフレームワーク!!

 

    • Pythonが割と何でもライブラリが揃っているので、少人数でやる場合には開発コストを下げられる

 

    • 初心者といえど、エンジニアを目指しているならRailsじゃなくてDjangoを選択すると良い習慣が身につきそう

ただしサポートは必須

壞事/問題點

    • PythonやDjangoの敷居が高く人気がないのでアルバイトやインターンを採用しづらい(かもしれない)

将来起業したくて、プロトタイプ作れるレベルの技術力でいいと言う人には絶対オススメしない
Pythonメインの会社自体が少ないので、採用での競合も少ないので実際は変わらないかもしれませんw

リサーチコストが高め

もっと普及するといいのに

如果在开发开始时还有其他主要开发人员,我可能会选择Rails哈哈。选择Django是因为目前只有我一个开发者,而且我习惯用Python编写爬虫,这个个人条件是最重要的。

在技术选择方面我确实写得有点废话,但是在创业公司中,重要的是尽快开始制作并快速地通过产品提供价值,所以我会放下一切顾虑全力开发!

附言:
我们正在招募团队成员,如果对此有兴趣,请联系我们!
https://www.facebook.com/masaru.matsunaga.9

bannerAds