從崗位劃分來說,程序員往往更專注于代碼的編寫,而軟件工程師則涉及到更全面的職責,包括軟件的設計、編寫、測試、部署等一系列工作。通常情況下,程序員也可以稱為軟件工程師。
程序員的發展方向有兩條大的技術路線,一條技術路線是技術專家,另一條技術路線是架構師,不同的發展方向需要具備不同的知識結構。通常情況下,應用級程序員走架構師路線,研發級程序員走技術專家路線。
對于應用級程序員來說,要想成長為架構師,需要做三方面的技術儲備,分別是自身的編程知識儲備、行業知識儲備和新技術儲備。從程序員成長起來的架構師往往對編程能力的要求都比較高,能夠解決方案中的核心問題,另外對行業知識有充分的儲備,能夠知道不同的架構方案適合于什么應用場景,以及未來可能產生擴展的位置。最后,架構師要對新技術十分敏感,能根據已有的知識儲備判斷新技術的發展趨勢,并提前做好方案驗證。
對于研發級程序員來說,要想成長為技術專家,也需要做好三方面的技術儲備。分別是自身的編程能力儲備、研發能力儲備和新技術儲備。研發級程序員往往需要不斷突破技術邊界,進而推動產品不斷向前發展,所以往往研發級程序員需要不斷改進自己的研究方法。研發級程序員通常需要跟大量的算法打交道,頻繁的進行各種驗證性實驗。
總之,對于一名普通的程序員來說,要想在程序設計這條路上走得更遠,就一定要在崗位提升的同時結合自主學習。