作為一個研究科技法律的律師,學習程式設計一直是想要嘗試去做的事情。每當接觸著隱私、人工智慧(AI)、元宇宙(Metaverse)或區塊鏈(blockchain)等資訊時,卻始終感覺除了表面上看到的東西之外,似乎還應探索在螢幕之後的世界。因此,便開始學習程式設計的旅程。
一、為什麼會想學程式設計?
法律的學習向來受到地區的限制,每個國家都會有著自身的法律,如果要到其他地方工作,那就必須要另外學習當地的法律甚至是取得當地的律師執業資格。有許多律師選擇考取各國的律師資格,讓自己的執業生涯有更大的空間,而我則是想要學習一門能夠在世界各地都能夠運用的技能,因此學習程式設計,變成為了學習的初衷。
另外一個想法則是想要透過程式設計來解決工作上所遇到的問題,如果缺乏相關技能,就只能坐等市場上提出解決方案。以Lawsnote為例,其排版工具功能最初是為了解決司法院法學檢索系統排版的問題,時至今日已發展為許多律師使用的法學搜尋引擎。
再來就是學習程式設計的過程中較容易取得成就感。以訴訟為例,可能案件要直到判決確定勝訴後,才能體會到那一絲成就感。然而在輸入程式碼的過程中,儘管學習上難免會遇到困難與挫折,但電腦會針對所輸入的指令給予回饋,進而成功跑出相對應的結果與畫面。
二、法律工作與程式設計的相似之處
法律工作與程式設計之間,在某些方面有著相似之處,例如:
- 解決問題:法律工作的核心在於解決問題,程式設計也是如此。從Google、Facebook乃至於瀏覽器其中一個擴充功能,都是為了解決問題而產生的。同時程式設計不僅可以解決別人的問題,甚至也可以用來解決自己所遇到的問題。
- 語言邏輯:法律工作與程式設計同樣重視語言與邏輯,當電腦給予錯誤的回饋時,便要仔細得去查找出所寫出的程式碼是否哪裡缺少了什麼,或是其中程式碼邏輯是否有錯誤。
- 持續學習:法律與相關法學見解會隨著時代推陳出新,程式語言也會隨著所要解決的問題推出新的語言或語法。因此保持不斷學習的心態,不管在法律工作或是學習程式語言都非常有幫助。
- 重視縮排:法律工作與程式語言兩者都很重視縮排,還記得一開始在撰寫書狀時,指導律師對於書狀排版、縮排與格式的重視。縮排這點在程式語言一樣重要(如下圖),例如Python與其他程式語言雖然較為簡潔,但如果縮排一不注意的時候,便有可能產生錯誤。所以平常撰寫書狀習慣縮排的法律人,寫起程式碼來會更有熟悉的感覺。
哈佛大學同時也有針對律師與法學院學生的電腦科學開放式課程(
CS50),其課程強調讓律師能夠理解相關電腦科學技術,進而能更好地與客戶溝通、理解客戶的技術決策,甚至還可以透過程式語言探索資料解決問題。
三、該從哪個程式語言開始學習?
對於一個程式語言的初學者,為了選擇從哪個程式語言開始讓我糾結了一陣子。一開始我是在Coursera上學習非常有名的「
零基礎 Python 入門專項課程(python for everybody)」,課程主要分為(1)Python入門、(2)Python資料結構、(3)使用Python存取網路資料、(4)Python資料庫開發。該堂課老師語速適中,講解也很清楚,大部分的課程也有中文翻譯的字幕可以觀看,適合想要瞭解Python的初學者學習。
後來學習Python一段時間之後,開始在網路上搜尋更多資源。經過多方比較之後,同時也考量到本身還有律師工作,主要利用下班時間與假日時間學習,最後選擇ALPHA Camp這個學習平台,ALPHA Camp主要是以JavaScript 為學習主軸,其對於為何選擇教授JavaScript程式語言的理由包含JavaScript 是全球開發者最普遍程式語言、業界需求多,同時在後端工具 Node.js 更加成熟下, JavaScript 也可以同時運用於前端與後端。因此,目前主要是以JavaScript 的學習為主。
在前端的學習時,JavaScript搭配Html與CSS的學習,由於所見即所得的特性,也就是會如下圖一樣,製作出一個看得到的頁面,因此也會提升繼續學習的動力,可以試著打造自己想要的產品。
隨著對程式語言認識的加深,便會漸漸理解到,程式語言只是工具,重要的還是瞭解自身想達到的目的,並進而去使用相對應適合的工具。當學會一種程式語言之後,再學其他語言就會快速許多,這點我在學習Python後再學JavaScript 有著深刻的體會,儘管格式會有些許不同,但在許多方面卻有著相似之處,而能夠快速理解。
四、可以透過哪些平台學習?
市面上有許多學習的平台,像Coursera、Udemy或Hahow都有蠻多程式語言的課程,考量該等平台的學習方式,較適合自動自發學習的人。而像AppWorks School則主要是面向全職專注於程式設計學習的人,對於想要利用下班時間或假日時間的上班族,坊間便有ALPHA Camp跟六角學院等平台可以選擇,最重要的是找到切合自身需求的平台。
而跟著平台教學去學習程式設計,相比自主學習來說,有時候也會少走點彎路,會對概念有較全面性的理解,並且對於學習方向會有明確的認知,減少迷惘的過程。例如在學習過程中,便會知悉許多以前所不知道的資源,例如能夠線上用來撰寫程式碼的
replit以及能夠練習JavaScript、Html與CSS結合的
CODEPEN,都是在學習過程中好用的工具。
五、結論:千里之行,始於足下
每個軟體看似背後都有著複雜的程式碼,但是其實都是由不同小段落的程式碼所構成。學習過程中,會先從撰寫一行程式碼開始,慢慢擴展為好幾行的程式碼。千里之行,始於足下。如果對此有興趣,只有接觸了才會知道自己適不適合。
※歡迎加入喵喵科技法律隨筆,持續接收科技法律的新知!