招了个比较菜的开发,是继续培养还是放弃?

2015-05-24 17:33:11 +08:00
 banxi1988

招了个比较菜的开发,是继续培养还是放弃?

背景

由于公司位置原因(广西南宁),招了很久没有招到人,于是近来放松了要求,好了,招了个 iOS 开发进来.
由于他完全没有听过Git 这东西,于是第一天是培训下Git的使用.然后是Xcode使用,然后是AutoLayout,
UIScrollView,UITableView等等.

序曲一

首先是AutoLayout的使用测试, 写代码不会, 第一天勉强交差, 但是处理UILabel时,不知道contentHuggingPriority属性.于是我亲自写代码示范指导了一遍.
第4天时,布置了实现一个列表页加详细页的小Demo,没有增删.
做过开发都应该知道,这种一个列表页一个详情页,是最简单也是最常见的Demo了.
Xcode 生成的Master-Detail 项目模板都比这样复杂.
一开始我还是渐进的要求的, 要求实现一个列表页吧.
但是, 它居然开始是网上找了一个Demo 来交差 (不过刚好,那Demo我在Github见过,还提过PR)
于是要求让他自己写.
晚上交差,发现他所知道的MVC应该就是知道其缩写,这还在其次,更让我失望的是,居然类都不会用.
自然,我叫他好好理解下Model的意义和使用
晚上,一看代码,如果多了个Model类,但是是这样的:

class Model {
    var titleLabelArray = ["漓江晚霞迷人景色","尽游三江",  "阳朔夜景一角","阳朔夜景一角",]
    var bodyLabelArray = [ "漓江迷人风景,千姿百态的民族风情,让人流连忘返",  "强化漓东巡逻防控,预防和震慑\"两抢一罪\"犯罪",  "强化漓东巡逻防控,预防和震慑\"两抢一罪\"犯罪", "强化漓东巡逻防控,预防和震慑\"两抢一罪\"犯罪"]
    var imageArray = ["guilin0", "guilin1", "guilin2", "guilin3", "guilin4"]
    var timeArray = ["2015-05-01", "2015-06-02", "2015-07-03", "2015-08-04"]
    var scrollViewLabel = ["风景1","风景2", "风景3", "风景4"]
}

原来这就是他所谓的Model啊...
然后我想,接下来我会交给他实现详情页的任务,那时他应该会认识到他的错误了吧.

序曲二

然后第二天任务就是,在前一天的基础上,实现详情页

下午的时候,他去上厕所的时候遇到我,问我说,给详情页传数据用委托怎么样?
我心里想: 委托? 这里要用委托?
然后我说要不你先看看iOS 的 那个教程 马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today)

下午下班前,问他看了没? 他说他已经实现得差不多了
晚上我办事完,回到家看到它的代码,还是老样子,整个人都不好了, 真是聪明的孩子啊! 估计用plist来传值

var ban = NSBundle.mainBundle()
        //读取plist文件路径
        let plistpath = ban.pathForResource("DetailModelList", ofType: "plist")!
        //读取plist内容放到NSMutableArray内
        data = NSMutableDictionary(contentsOfFile: plistpath)

        title1 = data?.valueForKey("title") as! [(String)]
        time = data?.valueForKey("time") as! [(String)]
        date = data?.valueForKey("date") as! [(String)]
        from = data?.valueForKey("from") as! [(String)]
        bodyImage = data?.valueForKey("bodyImage") as! [(String)]
        bodyText1 = data?.valueForKey("bodyText") as! [(String)]

他居然是使用在列表页将一个列表项的内容写入一个文件,然后再详情页中再读取.
但是在iOS 中这样应用中两个类之前传递值,只要简单的

detailViewController.item = selectedItem;

即可.

细节

  1. 他用 百度查 Model 的时,我说翻墙都给你配置好了,为什么不用Google啊?
    回: 之前从来没有翻过,用Google不习惯

  2. 上面让其看 Apple 的文档时,居然开启了Google的自动翻译,然后也是不看英文文档的,
    估计基本也就告别了StackOverflow了,太可惜了. (英文不好,还不思进取,在我心里减分不少)

再给一次机会

早上,我出去办事之前,给他Tower上留言说:

继续修改,希望晚上能看到让我满意的结果

晚上回来,一看,处理详情页的代码更难看了
增加了一个DetailModel.swift文件
全部内容如下:

import Foundation
import UIKit

var ban = NSBundle.mainBundle()
//读取plist文件路径
let plistpath = ban.pathForResource("DetailModelList", ofType: "plist")!
//读取plist内容放到NSMutableArray内
var data = NSMutableDictionary(contentsOfFile: plistpath)


var title = data!.valueForKey("title") as! [(String)]
var time = data!.valueForKey("time") as! [(String)]
var date = data!.valueForKey("date") as! [(String)]
var from = data!.valueForKey("from") as! [(String)]
var bodyImage = data!.valueForKey("bodyImage") as! [(String)]
var bodyText = data!.valueForKey("bodyText") as! [(String)]

func detailModelOfNum(num: Int) -> (title: String, time: String, date: String, from: String, bodyImage: String, bodyText: String) {
    return (title: title[num], time: time[num], date:date[num],from: "来源: " + from[num], bodyImage: bodyImage[num], bodyText: bodyText[num] )

}


func changeView(obj: DetailViewController, num: Int) {
    obj.titleLabel.text = detailModelOfNum(num).title
    obj.timeLabel.text = detailModelOfNum(num).time
    obj.dateLabel.text = detailModelOfNum(num).date
    obj.fromLabel.text = detailModelOfNum(num).from
    obj.bodyText.text = detailModelOfNum(num).bodyText
    obj.bodyImageView.image = UIImage(named: (detailModelOfNum(num).bodyImage))
}

这下我真是失望透了,于是直接在Tower回了:

刚看了,很不满意, 失望.

他回复的其中一句,真是让我苦笑不已啊:

model的概念我理解差不多了

矛盾

这种开发, 我内心是不肯花时间去培养的.
但是,在相对落后的地方招人又比较困难,而且说起来他还是有 iOS 开发经验的

个人倾向: 不想浪费时间了.

18529 次点击
所在节点    程序员
216 条回复
GPU
2015-05-25 17:43:25 +08:00
要是在广东了我就来了。
刚刚毕业的学生。
要是有人教写代码都态度不好,确实不靠谱啊。
特别是楼主这种基本是一对一教导非常好的学习机会啊,恨都恨不来的。
usedname
2015-05-25 18:09:39 +08:00
搞的我想去搞ios开发了,楼主
wind3110991
2015-05-25 18:26:52 +08:00
- -,不会写实际代码很正常,但是他的回复和态度有问题啊
你提醒他之后他的态度是积极改正还是什么,如果他出于畏惧你的情绪,可以沟通,毕竟写代码熟能生巧,但是他如果多次不改那还有必要浪费时间?
likid
2015-05-25 18:38:39 +08:00
态度问题,建议 fire
上个月招了个实习生,还不错,自费买了 RMBP,机械键盘和支架,我自己到现在都没买,囧
s04
2015-05-25 19:32:05 +08:00
C++狗表示虽然不懂看起来好简单似的
cc7756789
2015-05-25 19:45:26 +08:00
技术不好可以培养,如果没有上进心,你是得好好考虑考虑。
ioschen
2015-05-25 19:51:10 +08:00
@102516949 @1etters @ALeo @Andiry @Andy00 @BB9z @Biwood @FrankFang128 @GPU @Keinez 不要再说我了,我已经辞职了,我想静静。
SeanChense
2015-05-25 19:52:42 +08:00
这怎么可以叫一年经验
我这能做外包的能力学生狗

可不可以说三年经验?
typcn
2015-05-25 20:16:51 +08:00
试了试 Swift ,感觉就是个玩具

而且亲自测试之后,运行速度比 OC 慢了起码有 5 倍

连指针都没有,内存都没法控制,没法用了,果断删了。
ryanyu104
2015-05-25 20:33:13 +08:00
翻墙都没用过 就算了吧
blue7wings
2015-05-25 20:40:51 +08:00
我也不喜欢不用谷歌的程序员。
mailworks
2015-05-25 21:24:28 +08:00
@banxi1988 嗯,新项目可以用起来了,国外很多博客教程都是Swift版本了
banxi1988
2015-05-25 21:56:34 +08:00
@typcn
建议用其写一个简单应用试试.
Swift 具有了现代编程语言的很多优秀特质,而且与OC的交互性也是很强的.

关于指针的话:
我用到过的C的指针不成问题, Swift引用 了UnsafePointer与UnsafeMutablePointer的容器.
类似C++中流行的智能指钟类似的,模板操作.
```
func takeIntPtr(intPtr:UnsafeMutablePointer<Int>){
intPtr.memory = 6
}
var intValue = 5
takeIntPtr(&intValue)
// now intValue is 6
```
习惯了之后,觉得Swift的操作指针的方式,更现代,更具可读性.(对新手可能更好点)

参考: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-XID_11
bombless
2015-05-25 22:01:40 +08:00
能读英语文档的和不能读英语文档的根本是两类人……楼主你招错人了继续招吧……
server
2015-05-25 22:09:23 +08:00
没必要纠结,这是一份工作,作为一个leader有义务和责任引导组内同事,注意的是:
1. 降低自己的期望,不要说当年自己怎样怎样,直白的沟通。
2. 自己不努力谁也帮不了。
3. 有的人能胜任,就有的人不能胜任,要对得起你的选择。
4. 考虑下 现实环境,如果处处是坑 赶紧放弃(坑别人、欺骗自己、坑项目),放弃越早越好。
xunfeng
2015-05-25 22:25:15 +08:00
我实习的时候秒了自己的leader,号称4年开发,对我来说只是部分的快速文档,很多他破不了的Bug都是我破的。有些开发,学习意识不强,又英文拙计不愿意查外文资料,这简直是作死,这个跟工作经验没关系。你们不要随便黑毕业生,靠不靠谱这事看人!
bombless
2015-05-25 22:27:00 +08:00
我又看了一遍文章,感觉楼主也是要么职责不清要么自己没有做到分内事。
一年经验的人你让他从头撸一个model?你起码给他点参照吧。
akakcolin
2015-05-25 22:37:03 +08:00
给我的话:直接就放弃掉好了,浪费时间和生命
muzuiget
2015-05-25 22:46:28 +08:00
技术点不会可以学,问题是这态度真让人不爽,开了吧,拖后腿的,贴钱也不要啊。
typcn
2015-05-25 23:17:06 +08:00
@banxi1988 表示难以接受这种语法。还有不能手动管理内存,运行速度慢这些问题也不能忍。
OC 的可读性确实比较差,不过用的还是挺舒服的。

嘛,不同人习惯也不一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/193373

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX