- 今日推荐开源项目:《自然语言处理课程 nlp_course》
- 今日推荐英文原文:《“Your app will be finished on Tuesday.” — which Tuesday?!》
![](https://opensourcedaily.org/wp-content/uploads/2018/12/opensource_daily_vol_290.jpg)
今日推荐开源项目:《自然语言处理课程 nlp_course》
推荐理由:一个按周进行教学的自然语言处理课程,课程内容包含讲座和研讨会,以及课程作业和相关的文章,如果对自然语言处理感兴趣的话可以来尝试着学习一下,讲座和研讨会的内容都是以视频的形式提供的,所以可能会需要一点英语基础,在尝试之前也不要忘了根据它的要求安装所需要的库。
今日推荐英文原文:《“Your app will be finished on Tuesday.” — which Tuesday?!》作者:Tomer Dicturel
原文链接:https://medium.com/swlh/your-app-will-be-finished-on-tuesday-which-tuesday-bffaa90d20ca
推荐理由:软件开发计划失败的十个原因,避开它们吧
“Your app will be finished on Tuesday.” — which Tuesday?!
If you search online for trends in software development you’ll find an endless supply of information on booming technologies and how tech is going to impact every sector by 2020. We hear about all the amazing changes new technology will have ad nauseam, but I’m here to question the latter part of the previous sentence. “By 2020”. For those of you who don’t speak “software engineer”, that means 2040. As the only guy at Crane.ai that doesn’t write code, I’ve been plagued by this problem for the longest time. Of course, non-coders are also part of the problem; this post was originally going to be about 5 reasons why software development projects fail, but in full client fashion I changed the spec halfway through the project and so it’ll now be about 10 reasons why software development projects fail.![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.1.png)
1. Poorly defined (or, god willing, undefined!) outcome
“Mobile app? We built a bridge, does that work?”
One of the largest problems plaguing software development projects is a poorly defined outcome. Without proper definition as to what the “end product” should be, a project is guaranteed to fail. This is so vital that it could quite possibly change the direction of the project itself (which is why it’s #1 on my list!). I highly recommend building a specification sheet to better identify what the product will look like, what it will do, and how it will do it. More on this under communication and expectations!
2. Solving the wrong problem.
“We built a new wooden bridge that looks way prettier than the old one. Cars? Oh, no, it can’t support cars. Pretty much anything heavier than a bird will break it.”
Another common issue is solving the wrong problem. This lies along the same lines as a poorly defined outcome, yet is much broader in scope. Although you can properly identify your end product and solve the other issues discussed here, if your solution does not properly address the problem then you’ve gotten nowhere with the project.
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.2.png)
3. Not enough communication.
“We built half a bridge, they built half a tunnel.”
Coming in at #3 is the core problem plaguing virtually every project, industry, and business — communication. Communication is vital at every level of a software development project. At an internal level, your developers need to communicate effectively to ensure they build tools and pipelines that in coordination and are properly compatible. A common solution here is to draft specifications beforehand for design, APIs, and any other engineering required in your project. This is vital to saving hundreds of hours of time that could otherwise be wasted in refactoring and restructuring. At a higher level, it’s also important to properly communicate with other teams. The marketing team, for example, needs to know what is technologically feasible before selling the concept.
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.3.png)
4. No plan or timeline.
“Yeah… it’ll get done around like… maybe a couple weeks? Not sure what we’re gonna do after that…”
Regardless of whether timelines and plans are adhered to, it’s important to have one. It provides your project with a sense of structure and gives you an estimate as to when and how tasks will be completed.
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.4.gif)
5. Lack of accountability.
“The buck stops… over there, bye!” — Harry Truman, probably
When shit hits the fan, someone has to be ready with a mop. If a feature falls through, it should be clear who is accountable and what steps should be taken to prevent this in the future.
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.6.jpg)
6. Moving the goalposts too often.
*“Ok, but now the bridge needs to also act as a runway, have 10 more lanes, and how about a park in the middle of it?”
* It’s important to keep track of a project’s goals and make sure they are met in a timely fashion. While it is possible that a project needs to be expanded or the requirements have changed, making frequent modifications to the “end goal” can not only devastate morale, but make a project outright impossible. Often times, changes are unplanned and require extensive refactoring; over time, this leads to a large amount of wasted time, and eventually a failed project.
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.7.png)
7. Inadequate documentation and tracking.
“The instructions to defuse this bomb say to pull the red wire once the power cuts off, but all of the wires are red and the power was supposed to be cut 10 minutes ago!” — James Bond, at what will be the end of his career
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.8.png)
8. Badly defined system requirements.
“WTF do you mean there’s only 5 loaves and 2 fish for all 5000 of us?!”
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.9.png)
9. Poor preparation.
“We’re still flying half a ship.”
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.10.jpg)
10. Unrealistic expectations.
“Ok, the app looks good — but why doesn’t the color scheme automatically change to match the user’s phone case?”
![](https://opensourcedaily.org/wp-content/uploads/2018/12/290.11.jpg)