信息加速發展的互聯網時代,越來越多的科技公司為了專注核心競爭力業務以及降低軟件項目成本,開始將項目中的部分業務模塊分發給第三方外包公司來完成。而這樣是否就意味著大幅度地降低成本了?
事實告訴我們,并沒有。
本文作者作為一名外包商,以自身的經歷告訴我們本可以在3天之內完成了的一個報價僅為 1500 美元的靜態 HTML 頁面,是如何被大型企業硬是拖成了一個為期 7 周且需要耗費 18000 美元項目的。
作者 | Ibrahim Diallo
譯者 | 王艷妮,責編 | 屠敏
出品 | CSDN(ID:CSDNnews)
不久前,我作為承包商工作,經常從一個項目跳到另一個項目。有些是短期的,工作一周左右,可很快提交我的工作成果。也有的項目會持續幾個月,這期間我會攢一些錢用以休息一段時間。我更喜歡短期工作,因為這樣的工作使我可以在單位時間內收取更高的費用。這樣不僅我感覺是在為自己打工,而且我覺得我不需要太努力工作就能過上還算體面的生活了。我的最高費率仍然在合理的范圍之內,而且我總是提供高質量的服務。這就是我和一家大公司定下這個項目之前我的工作狀態。
這家公司聯系我的時候顯得很著急,經理告訴我他們現在就需要一個人來搞定這件事。需要一個不怎么需要公司培訓就能馬上上手,而且能交付最大性能的人。不管怎么說,這剛好是我的座右銘。這個項目正是我喜歡的工作類型。它內容簡短,很快就能做好,而且報酬很高。
在談判確定好合適的費率后,我收到了一封包含說明的電子郵件。他們給了我更多關于這個項目的背景。他們的開發人員在沒有事先告知的情況下就離開了,并且從未跟任何其他人匯報過項目的進展。
我們需要您毫不分心地完成此項目。在合同期限內,您將只與我們合作,并及時交付成果。我們會對給您造成的麻煩進行補償。
任務說明很簡單:閱讀這些需求然后估計完成這個項目需要多長時間。這是我職業生涯中遇到的一個那類比較容易的項目之一。這是一個HTML頁面,包含一些簡單的動畫和幾個嵌入的視頻。我花了一個晚上研究需求并在腦中模擬實施。這些年來,我已經學會了在能確定收到報酬之前不為客戶寫任何代碼。
我確定了這個項目充其量也就是一天的活兒。但為了保持謹慎,我上報了20個小時,總計1500美元。畢竟這只是一個HTML頁面而已,我也只能收取這么多費用。他們讓我到25英里外的衛星辦公室去。在為他們工作的那三天里我必須天天開車去那兒。
第二天,我到了衛星辦公室。在一個購物中心,然后通過一扇秘密的門進入了一個秘密的世界,一些工作人員在他們的小隔間里安靜地工作著。接待員給我看了一個我將用它來工作的全新MacBook Pro,我必須從零開始設置環境。我的確更偏向于使用公司的筆記本電腦,因為他們經常要求承包商安裝一些可疑的軟件。(我可不想裝到自己電腦上。)
我花了一天時間下載我的工具包,設置電子郵件、ssh密鑰和請求服務的授權。換句話說,我什么都沒做。這就是為什么我上報了20個小時,還沒開始寫代碼呢,光前期設置就耗費了8個小時。
第二天,我準備開始真正地干活了。有了MacBook Pro,我用它發了一封電子郵件給經理。我告訴他我已經準備好工作了,正在等待上述的資源。那天,我在我柔和燈光下的工位上待著,玩著手指,直到太陽落山。
我再次計算了一下。根據我的估計,我還只剩4個小時的時間來完成這項工作,這對單個HTML頁面來說也不是不可能。但不用說,第二天,我把這剩下的4個小時花在了吃公司贊助的午餐上,伙食很不錯,而且我與其他員工玩得很開心。
當預計的20小時到期時,我確保向經理發送了另一封電子郵件,讓他知道我確實人一直在公司,但我沒有收到我需要的資源。當然,那封電子郵件被無視了。
接下來的星期一,我猶豫地開過了這25英里。令我驚訝的是,經理已經來到衛星辦公室,并熱情地問候了我。他是個三十來歲,很隨和很不錯的人。我很不解,他并不像當初要雇我的那時候那么著急了。我們進行了友好的交談,沒有提到任何工作。后來,我們去吃午餐,他付了錢。這是美好的一天。完全沒工作。
好吧你可以說我很容易形成習慣,但如果你供我吃喝并每天呵護我,我會習慣這一切。這變成了一個例程。我來上班,花一些時間在網上閱讀以及看視頻。我每天發一封電子郵件,所以他們知道我確實去了公司。然后,我會去吃午飯并和碰見的有趣的人一起玩耍。在一天結束時,我站起來,伸個懶腰,打一個當之無愧的哈欠,然后開車回家。
我習慣了。事實上,我在期待這些。當我終于收到一封帶有指向我需要的資源的鏈接的電子郵件時,我反而有點失望。我重新開始腳踏實地,變回自己工作時的嚴肅臉。但是,在花了幾分鐘查看zip文件后,我才注意到它缺少了我需要的大部分內容。設計師給我發了一些Adobe Illustrator文件,我無法在MacBook上打開它。
我回復了電子郵件來解釋我的疑慮,而且一并問了一些其他問題以節省時間。那時,我當初上報的20個小時時間早都已經過了。我現在真的想要完成這項工作了。點擊發送后不久,我收到了一封電子郵件。只有一句:“轉發給Alex”,然后Alex得到了這封電子郵件的抄送。Alex回答說他轉發給了Steve。Steve回答說Michelle是設計師,她會了解得更多一些。 Michelle的自動回復稱她正在度假,所有詢問都應該直接告訴她的經理。她的經理回復說“誰是Ibrahim?(我的名字)”我的經理回復說他很抱歉還沒有向大家介紹我。
作為承包商,在人們注意到我在那里工作之前,我通常就已經完成我的工作并離開那家公司了。但這次,我收到了大量歡迎的電子郵件。這樣的郵件持續了一段時間,而我被迫回復那些友好地過了頭的郵件。有些人很想跟我本人見面。當我說我在加利福尼亞州,離得遠著呢,他們有點失望。以及羨慕,他們說他們羨慕加州美好的天氣。
他們很有禮貌地無視我的電子郵件。他們用抄送來轉移我的問題。他們把我問過的任何事情歸為垃圾郵件。我花了很多時間,像一位考古學家在深深的電子郵件之溝內挖掘,希望找到我問題的答案。你可以想象每當我想起我唯一的任務是構建一個靜態HTML頁面時,我感覺到的冒名頂替綜合癥(心虛,懷疑自己的回報不是理所應得的)的程度之深。原本虛報了的20個小時的項目變成了為期7周的冒險,期間我享受免費午餐,每天開車50英里,并翻看電子郵件。
當我最終完成項目時,我在GitHub上將它發送給了團隊。所有偉大的冒險都必須有個盡頭。但不久之后,我收到了邀請,整個團隊會用Google Hangout開視頻會議對我的代碼進行code review。我花了一個多月的時間來寫一個靜態HTML頁面,而現在整個團隊都要評價我的工作?那個什么,我要為自己說句話,這個頁面也包含一些JavaScript交互,是響應式的,還包括CSS動畫......好吧我真的覺得自己像個來冒名頂替的。
當然,視頻會議的時間又重新安排了幾次。當它終于發生時,我和我的工作已經不是會議的主題了。他們都坐在紐約某個地方的同一個房間里,像一個緊密團結的團體一樣聊了一會兒。事實上,他們所說的關于我做的項目的所有內容只有:
那天晚上回家的時候,我意識到自己正面臨另一個挑戰。我在這家公司工作了7個星期,而我的原始報價為1,500美元。這相當于每年11,100美元或每周214美元。或者直接說,每小時5.35美元。
這幾乎還不夠我付油錢的。所以,我給他們發了一張發票,我按照原來的每小時費率給他們報了7個星期。總額達18,000美元。我當然感到羞恥,但我還能怎么辦呢?
就像我預期的那樣,我沒有收到回復。如果所有大公司都有什么相同之處,那就是他們并不急于按時支付賬單。這么簡單的工作要價這么多,我覺得自己像一個騙子,但話又說回來了,我又不是來做慈善的。我每天開車50英里來做這項工作,如果工作沒有完成,那不是因為我不想。這是因為他們回復太緩慢了。
接下來的一周我得到了回復。這是一封來自經理的冷郵件,他把我每天的工作日分成不同的時間段。然后他把我工作的那部分時間高亮了,每天標記一個小時的午休時間。最后他用我們商定的小時費率做了一些計算。
顯然,我算錯了。我錯誤估算了總數。調整后,他們欠我的總金額是21,000美元。
請確認重新調整后的小時數,以便財務可以給您寫個支票。
我很快回復了確認。
原文:https://idiallo.com/blog/18000-dollars-static-web-page
作者簡介:Ibrahim Diallo,具有多年開發經驗的軟件工程師。
本文為 CSDN 翻譯,轉載請注明來源出處。
學目標:
1. 理解前端開發的基本概念和原理。
- 前端開發的定義和作用
- 前端開發的基本工具和環境
- 前端開發的職責和要求
2. 掌握HTML5標記語言的基本語法、元素和屬性。
- HTML5的發展歷程和版本
- HTML5文檔結構和基本語法規范
- HTML5常用的文本標記、圖像標記、表格標記等
- HTML5的表單元素和相關屬性
3. 掌握CSS3的基本語法、選擇器和常用樣式屬性。
- CSS3的發展歷程和版本
- CSS3的基本語法和選擇器
- CSS3的盒模型、布局和浮動
- CSS3的文本樣式、背景樣式和過渡動畫
it學習
4. 理解JavaScript的基本語法、數據類型、條件語句和循環結構。
- JavaScript的基本語法和變量定義
- JavaScript的數據類型和類型轉換
- JavaScript的條件語句和邏輯運算
- JavaScript的循環結構和數組操作
5. 掌握DOM操作,能夠使用JavaScript操作HTML文檔中的元素。
- DOM的概念和基本原理
- 使用JavaScript獲取和操作HTML元素
- 使用JavaScript創建、修改和刪除HTML元素
- DOM事件的處理和綁定
6. 理解響應式設計的概念和基本原理。
- 響應式設計的定義和作用
- 使用媒體查詢實現頁面布局的適應性
- 使用流式布局和彈性盒子布局實現頁面適配
- 使用響應式圖片等技術提升頁面響應性
軟件開發
大綱精細化教學設計:
第一部分:前端開發基礎
1. 前端開發概述
1.1 什么是前端開發
1.2 前端開發的歷史和發展趨勢
1.3 前端開發的基本工具和環境
2. HTML5基礎
2.1 HTML5的簡介和發展歷程
2.2 HTML5的文檔結構和基本語法規范
2.3 HTML5常用的文本標記、圖像標記、鏈接標記等
2.4 HTML5的表單元素和相關屬性
3. CSS3基礎
3.1 CSS3的簡介和發展歷程
3.2 CSS3的基本語法和選擇器
3.3 CSS3的盒模型、布局和浮動
3.4 CSS3的文本樣式、背景樣式和過渡動畫
4. JavaScript基礎
4.1 JavaScript的簡介和發展歷程
4.2 JavaScript的基本語法和變量定義
4.3 JavaScript的數據類型和類型轉換
4.4 JavaScript的條件語句和邏輯運算
4.5 JavaScript的循環結構和數組操作
小程序開發
第二部分:網頁交互與動態效果
1. DOM操作
1.1 DOM的概念和基本原理
1.2 使用JavaScript獲取和操作HTML元素
1.3 使用JavaScript創建、修改和刪除HTML元素
1.4 DOM事件的處理和綁定
2. 事件處理與表單驗證
2.1 常見的DOM事件類型和觸發條件
2.2 使用JavaScript處理交互事件
2.3 表單驗證的基本原理和實現方法
3. Ajax與數據交互
3.1 Ajax的簡介和發展歷程
3.2 使用JavaScript發送異步請求
3.3 處理服務器返回的數據
第三部分:響應式設計與跨平臺開發
1. 響應式設計概述
1.1 響應式設計的定義和作用
1.2 媒體查詢的基本語法和常用屬性
1.3 使用響應式設計實現網頁適配
2. 移動端開發概述
2.1 移動端開發的特點和挑戰
2.2 使用CSS3實現移動端樣式效果
2.3 使用JavaScript處理移動端交互
3. 跨平臺開發基礎
3.1 常見的跨平臺開發技術和框架
3.2 使用跨平臺開發工具搭建應用
3.3 測試和發布跨平臺應用
通過以上的教學目標和大綱精細化教學設計,學習者將能夠全面掌握前端開發所需的HTML5、CSS3和JavaScript的基礎知識,并能夠應用所學知識實現網頁交互和動態效果,以及具備響應式設計和跨平臺開發的能力。
視覺格式化模型,大體上將頁面中盒子的排列分為三種方式:
1. 常規流
2. 浮動
3. 定位
1. 文字環繞
字體環繞
2. 橫向排列
修改float屬性值為:
- left:左浮動,元素靠上靠左
- right:右浮動,元素靠上靠右
默認值為none
1. 當一個元素浮動后,元素必定為塊盒(更改display屬性為block)
2. 浮動元素的包含塊,和常規流一樣,為父元素的內容盒
1. 寬度為auto時,適應內容寬度
2. 高度為auto時,與常規流一致,適應內容的高度
3. margin為auto,為0.
4. 邊框、內邊距、百分比設置與常規流一樣
1. 左浮動的盒子靠上靠左排列
2. 右浮動的盒子考上靠右排列
3. 浮動盒子在包含塊中排列時,會避開常規流塊盒
4. 常規流塊盒在排列時,無視浮動盒子
5. 行盒在排列時,會避開浮動盒子
6. 外邊距合并不會發生
> 如果文字沒有在行盒中,瀏覽器會自動生成一個行盒包裹文字,該行盒叫做匿名行盒。
高度坍塌的根源:常規流盒子的自動高度,在計算時,不會考慮浮動盒子
清除浮動,涉及css屬性:clear
- 默認值:none
- left:清除左浮動,該元素必須出現在前面所有左浮動盒子的下方
- right:清除右浮動,該元素必須出現在前面所有右浮動盒子的下方
- both:清除左右浮動,該元素必須出現在前面所有浮動盒子的下方
*請認真填寫需求信息,我們會在24小時內與您取得聯系。