校友郵箱
by peterWeinberg
彼得·溫伯格
freeCodeCamp校友網絡:FCC校友的自主指導網絡 (The freeCodeCamp Alumni Network: A homegrown mentorship network for FCC alumni)
For the last year, I’ve been spending nearly all my free time learning to code. I’ve been a regular freeCodeCamp contributor, working on various projects such as the new React and Beta curriculums, the Testable Projects, a CDN-loaded front end test suite.
在過去的一年中,我幾乎所有的業余時間都花在學習編碼上。 我一直是freeCodeCamp的定期撰稿人,從事各種項目的研究,例如新的React和Beta課程, 可測試項目 ,一個CDN加載的前端測試套件。
But about 3 months ago, I set out to level-up my coding skills in a big way. I only had one criteria: I wanted to take on my biggest coding challenge yet.
但是大約3個月前,我開始大幅度提高我的編碼技能。 我只有一個條件:我想承擔我迄今為止最大的編碼挑戰。
The final result is the culmination of 2 Campers’ efforts, 60 days of development, and hundreds of hours of work. And, of course, a project that I’m incredibly excited to introduce: the freeCodeCamp Alumni Network (FCCAN)!
最終結果是2個Campers的努力,60天的開發和數百小時的工作達到了頂點。 當然,我非常高興地介紹一個項目: freeCodeCamp校友網絡 (FCCAN)!
FCCAN is an extension of the freeCodeCamp community, where holders of at least one freeCodeCamp certificate can come to connect.
FCCAN是freeCodeCamp社區的擴展,在那里至少有一個freeCodeCamp證書的持有者可以連接。
In short, our goal is to promote meaningful relationships among experienced campers. Especially those who are looking to level-up their skills and/or share their expertise with other Campers. Here’s a few features that we know you’ll love:
簡而言之,我們的目標是促進經驗豐富的露營者之間的有意義的關系。 尤其是那些希望提升自己的技能和/或與其他露營者分享他們的專業知識的人。 這是我們知道您會喜歡的一些功能:
Seamless user authentication. Sign in using your GitHub account and verify with your freeCodeCamp credentials.
無縫的用戶身份驗證 。 使用您的GitHub帳戶登錄,并使用freeCodeCamp憑據進行驗證。
Mentorship opportunities. An optional mentorship program for prospective mentors and mentees.
指導機會 。 針對潛在導師和受訓者的可選導師計劃。
Personal profile. Identify coding skills and interests, personal stats, mentorship status, and more.
個人簡介 。 識別編碼技能和興趣,個人統計數據,指導狀態等。
Member search. A search engine to help you find other members (and potential mentors) based on skills, interests, location, and more.
會員搜索 。 一個搜索引擎,可幫助您根據技能,興趣,位置等找到其他成員(和潛在的指導者)。
Collaboration. Looking for help with your new app? Share your open source projects with other Campers here.
合作。 在尋求有關新應用程序的幫助? 在這里與其他Campers共享您的開源項目。
Keep in touch. Identified a potential mentor? Reach out through FCCAN private chat, or visit the public room to talk all things code.
保持聯系。 確定了潛在的導師? 通過FCCAN私人聊天進行訪問,或訪問公共場所討論所有代碼。
FCCAN is a platform to help you take your relationships with your fellow Campers to the next level.
FCCAN是一個平臺,可幫助您將與露營者的關系提升到新的水平。
But to fully realize this vision, we need you, the Campers, to come along for the ride with us. We invite you to visit the application and check out our about page. If you’re intrigued, sign up and see what it’s all about!
但是,要完全實現這一愿景,我們需要露營者與我們同行。 我們邀請您訪問該應用程序并查看我們的“關于”頁面。 如果您感興趣,請注冊并查看全部內容!
Our new home is www.fcc-alumni.com.
我們的新家是www.fcc-alumni.com 。
There’s always room for improvement, but we’re pretty happy with the MVP that we have, and we hope that you will be too.
總是有改進的空間,但是我們對擁有的MVP感到非常滿意,希望您也能如此。
In the spirit of freeCodeCamp and Open Source Software, this project is 100% open source. We encourage you to check out the repo and explore the codebase.
本著freeCodeCamp和開源軟件的精神,該項目是100%開源的。 我們鼓勵您檢查回購并瀏覽代碼庫。
Active development will continue on this project, so if you find a bug or have a suggestion for a feature, feel free to open an issue. If you’re interested in contributing, we’ve already collected a few suggestions from our team and beta testers that we would love some help with! Please check out our contribution guidelines if you’d like to learn more.
積極的開發將繼續在這個項目上進行,因此,如果您發現錯誤或對功能有建議,請隨時提出問題 。 如果您有興趣提供幫助,我們已經從我們的團隊和Beta測試人員那里收集了一些建議 ,希望對您有所幫助! 如果您想了解更多信息,請查閱我們的貢獻準則 。
Now that you’ve seen the project (and set up a totally rad profile!), I hope you’ll stick around to hear our story.
既然您已經看到了該項目(并建立了一個完整的rad個人資料!),希望您能繼續聽我們的故事。
Three months ago, I thought coding something on this level was something I’d never be able to do. A feeling that I know that many Campers can relate to.
三個月前,我認為編寫此類代碼是我永遠都做不到的。 我知道許多露營者都可以與之建立聯系。
So if you’re intrigued, read on to learn more about the freeCodeCamp Alumni Network and how two freeCodeCampers developed a complex full-stack web application in just two months.
所以,如果你感興趣,請繼續閱讀以了解更多有關 freeCodeCamp校友會網和兩個freeCodeCampers如何發展,在短短兩個月復雜的全棧的Web應用程序。
I started coding just over a year ago, and my journey has been one of completely self-guided learning. Throughout this short history, I’ve relied almost entirely on freeCodeCamp to sharpen my skills.
我從一年多以前開始編寫代碼,而我的旅程一直是完全自主學習的過程之一。 在這段短暫的歷史中,我幾乎完全依靠freeCodeCamp來提高自己的技能。
During this time, I picked up some basic skills in JavaScript, React, HTML5, CSS3, and Sass. You might recognize these as some of the core skills evangelized in freeCodeCamp’s current curriculum.
在這段時間里,我學習了JavaScript,React,HTML5,CSS3和Sass的一些基本技能。 您可能會意識到這些是freeCodeCamp當前課程中傳授的一些核心技能。
And although I had accomplished a lot, I found that I had gotten to a sort of plateau. What felt like rapid progress to my totally un-tech-oriented brain, actually just barely positioned me as a beginner-level programmer.
盡管我取得了很多成就,但我發現自己已經進入了一個平穩的時期。 感覺到了我完全不以技術為導向的大腦的飛速進步,實際上只是將我定位為初學者級程序員。
I knew I needed a much stronger arsenal of skills. But, transitioning from basic front end projects, to developing production-level full stack applications from scratch, felt like a gap that I was never going to be able to bridge. But, I knew I needed to somehow, so I began to explore some new avenues.
我知道我需要一個更強大的技能庫。 但是,從基本的前端項目過渡到從頭開發生產級別的全堆棧應用程序,感覺就像是我永遠無法彌合的鴻溝。 但是,我知道我需要某種方式,所以我開始探索一些新途徑。
One thing I discovered, was that I learned much more and much faster when I was working with other programmers. So I reached out to Chance McAlister (aka Chance Taken), the father and organizer of the Chingu Cohorts. Chance regularly champions group projects within the Cohorts, and he set me up with a team who had recently finished up a project of their own.
我發現的一件事是,當我與其他程序員一起工作時,我學到的東西越來越多。 因此,我與Chingu群組的父親和組織者Chance McAlister (又名Chance Taken )取得了聯系 。 Chance經常在同類群組中倡導小組項目,他與我組成了一個團隊,該團隊最近完成了自己的項目。
The project was Campfire Stories (a freeCodeCamp-centric app that recounts campers’ stories), and they needed a bit of help maintaining and improving their legacy codebase. So I had a call with one of the creators to bring me up to speed. And wow… the complexity and architecture of the application was just way too much for me to follow.
該項目是Campfire Stories(一款以freeCodeCamp為中心的應用程序,可以記錄營員的故事),他們需要一些幫助來維護和改進其原有代碼庫 。 因此,我與一位創作者打了個電話,讓我快速入門。 哇...應用程序的復雜性和體系結構對我來說太過分了。
Even though I was mostly familiar with their technology, the structure and coding paradigms seemed totally foreign to me. I was further behind than I had realized, and I walked away from that call feeling a tad disheartened. All the confidence I had gained over the last few months had all but vanished.
盡管我對它們的技術最熟悉,但是結構和編碼范例對我來說似乎完全陌生。 我比我意識到的要落后得多,我從那個電話中走了出來,感到有點沮喪。 過去幾個月我所獲得的所有信心幾乎消失了。
How was I ever going to learn this stuff? The back end was completely intimidating, I barely understood state management, and complex views were more than I could handle.
我怎么會學習這些東西? 后端完全令人生畏,我幾乎不了解狀態管理,而且復雜的視圖超出了我的處理能力。
It took me a couple of days, but I eventually overcame my defeatism. As confounded as I was by the complexity of the Campfire Stories codebase, I emerged feeling more motivated than ever to get the job done. It was just my approach that was wrong.
我花了幾天的時間,但最終我克服了失敗主義。 就像我對Campfire Stories代碼庫的復雜性感到困惑一樣,我比以往任何時候都更有動力完成工作。 只是我的方法是錯誤的。
The recipe for my success, I realized, was to build and define the architecture from scratch. That way I could follow the process from zero to complex every step of the way.
我意識到,成功的秘訣是從頭開始構建和定義架構。 這樣,我可以遵循從零到復雜的過程。
So, after this first failed attempt, I decided the timing was ripe to give an idea of my own a try.
因此,在第一次嘗試失敗之后,我決定是時候嘗試一下自己的想法了。
Inspired by Campfire Stories, I also wanted to build a freeCodeCamp-related app. One of my favorite things about freeCodeCamp is the success stories I often hear, about people “graduating” from freeCodeCamp, and getting coding jobs in the real world.
受Campfire Stories的啟發,我還想構建一個與FreeCodeCamp相關的應用程序。 關于freeCodeCamp的我最喜歡的事情之一就是我經常聽到的成功故事,這些故事是關于人們從freeCodeCamp“畢業”并獲得現實世界中的編碼工作的。
These stories are an important part of other campers’ success. Knowing there’s a pot of gold at the end of the rainbow is a huge motivator!
這些故事是其他營員成功的重要組成部分。 知道彩虹盡頭有一個金壺是一個巨大的動力!
With this in mind, I envisioned a place where campers could come to connect and track one another’s accomplishments. The idea would change a bit over time, but this was enough to get the ball rolling. I pitched it to Chance, who helped me to develop the idea a bit further, and soon after, we had formed a team.
考慮到這一點,我設想了一個露營者可以聯系并追蹤彼此成就的地方。 這個想法會隨著時間的流逝而改變,但這足以使球滾動。 我向Chance推薦了這個機會,Chance幫助我進一步發展了這個想法 ,不久之后,我們成立了一個團隊。
I was pretty pumped, this was exactly the kind of project I needed to take on to get my skills to where I wanted them to be! Once we had defined what our minimum viable product (MVP) would look like, it was clear that this project was going to be rather ambitious for a few beginner-level programmers. We would need:
我非常激動,這正是我需要進行的那種項目,以使我的技能達到我希望的水平! 一旦我們定義了最低可行產品(MVP)的外觀,很顯然,這個項目對于一些初學者來說將是一個很大的野心。 我們會需要:
- Working user registration/authentication 工作用戶注冊/身份驗證
- A database to store user data 一個存儲用戶數據的數據庫
- An interface for users to input, edit, and maintain personal data 用戶輸入,編輯和維護個人數據的界面
- A way for users to communicate with one another within the application 用戶在應用程序內相互通信的一種方式
- A search feature for users to find one another 一種搜索功能,供用戶相互查找
- Effective routing from one view to the next 從一個視圖到下一個視圖的有效路由
- State management to manage complex application state 狀態管理以管理復雜的應用程序狀態
And this was just to get us off the ground! My wish was coming true — this was shaping up to be the most complex and challenging project I had ever taken on.
這只是讓我們踏上第一步! 我的愿望成真了–這正在成為我從事過的最復雜,最具挑戰性的項目。
We defined our technology stack and got to work. We opted for classic freeCodeCamp, and chose ReactJS as a JavaScript framework, and in fully embracing that choice, Redux, and React-Redux were natural additions to the mix for state management. A MongoDB database, and an Express/NodeJS back end rounded out the core of our application. We bootstrapped our project with Create-React-App, made some tweaks for Sass support, installed an army of NPM packages, and were on our way.
我們定義了技術堆棧并開始工作。 我們選擇了經典的freeCodeCamp,并選擇了ReactJS作為JavaScript框架,并且在完全接受該選擇的情況下,Redux和React-Redux是對狀態管理的自然補充。 MongoDB數據庫和Express / NodeJS后端完善了我們應用程序的核心。 我們使用Create-React-App引導了我們的項目,對Sass進行了一些調整,安裝了一系列NPM軟件包,然后我們就開始了。
Now up until this point, I had done enough research to know what each of these technologies were. But aside from React and Sass, I had never touched a single one. Needless to say, this was going to be a challenge for me.
到目前為止,我已經進行了足夠的研究以了解這些技術中的每一項。 但是除了React和Sass之外,我從未碰過任何一個。 不用說,這將對我構成挑戰。
Yet through some pair programming, and by working very closely with my teammate, Sean Smith, I was able to overcome every technological hurdle I encountered.
但是,通過一些配對編程,并與我的隊友Sean Smith緊密合作,我能夠克服我遇到的每個技術障礙。
After configuring Create-React-App to work with a proxy server, our first step was to implement user authentication and registration. This was quite the challenge — we wanted to decouple registration from the app itself (less sensitive data for us to manage, fewer usernames and passwords for you). So enabling GitHub-based login via PassportJS seemed like the way to go.
配置Create-React-App與代理服務器一起使用后,我們的第一步是實施用戶身份驗證和注冊。 這是一個很大的挑戰-我們想使注冊與應用程序本身脫鉤(我們管理的敏感數據更少,您的用戶名和密碼更少)。 因此,通過PassportJS啟用基于GitHub的登錄似乎是一種方法。
However, we also needed to implement some sort of user verification process since we wanted to enforce that members actually be freeCodeCamp alumni (that is, campers who’ve earned at least one certificate). After devising an end-point redirect counting technique for verifying user certs using Axios, we were finally on our way!
但是,我們還需要實施某種類型的用戶驗證過程,因為我們要強制成員實際上是freeCodeCamp的校友(也就是說,已經獲得至少一個證書的露營者)。 在設計了一種用于使用Axios驗證用戶證書的端點重定向計數技術之后 ,我們終于可以上路了!
This was my first ever introduction to back end programming, and a major milestone for the app. Now that we could login and logout successfully, the real work could begin.
這是我對后端編程的第一次介紹,也是該應用程序的一個重要里程碑。 現在我們可以成功登錄和注銷,接下來就可以開始真正的工作了。
Next up was tackling state management. For example, to create the user profile page, the core of the FCCAN user experience, we needed to implement CRUD functionality, or Create, Read, Update, and Delete.
接下來是處理狀態管理。 例如,要創建FCCAN用戶體驗的核心用戶配置文件頁面,我們需要實現CRUD功能,或創建,讀取,更新和刪除。
The preferences page is highly editable — over a dozen fields makes for some complicated state, too complex for React to manage alone. This was a job for Redux. This meant we were managing state on 3 separate levels spanning both ends of the stack: with React, on the Component level, with Redux on the Store level, and with MongoDB on the database level.
首選項頁面是高度可編輯的-十幾個字段使某些狀態變得復雜,對于React來說太復雜而無法單獨管理。 這是Redux的工作。 這意味著我們要在跨越堆棧兩端的3個不同級別上管理狀態:在組件級別使用React,在組件級別使用Redux,在數據庫級別使用Redux。
Figuring out how to efficiently manipulate and manage a complex state object proved a formidable challenge. Yet once we had it down, we were able to reuse this same paradigm over and over again throughout the application.
弄清楚如何有效地操縱和管理復雜的狀態對象被證明是一個巨大的挑戰。 然而,一旦失敗了,我們就可以在整個應用程序中重復使用相同的范例。
Here is another great example, which unlike our CRUD example, uses only React and Redux (see gif below):
這是另一個很好的示例,與我們的CRUD示例不同,它僅使用React和Redux(請參見下面的gif):
Notice that even though I’ve navigated away from the search page, when I return, the state exists exactly as it was when I left.
請注意,即使我已經離開搜索頁面,但是當我返回時,該狀態與我離開時的狀態完全相同。
State managed locally by React clears as soon as a component unmounts, but passing this state to Redux allows us to preserve that state beyond the lifecycle of a React component, and passing it to the database as needed allows us to preserve that state beyond the lifecycle of a Redux store, which exists inherently only as long as a user’s session is persisted.
由React在本地管理的狀態會在組件卸載后立即清除,但是將狀態傳遞給Redux可以使我們在React組件的生命周期之外保留該狀態,并根據需要將其傳遞給數據庫可以使我們在生命周期之外保留該狀態Redux存儲區的名稱,它僅在用戶會話持續存在的情況下才存在。
The single most complex implementation of CRUD functionality in the FCCAN application is our chat feature. While this may not seem like a typical CRUD implementation, the core principles are exactly the same.
FCCAN應用程序中最復雜的CRUD功能實現是我們的聊天功能。 盡管這似乎不是典型的CRUD實現,但其核心原理是完全相同的。
Basically, the database is our single source of truth. For any CRUD action, we POST to a route which handles that action. If, and only if, we get a successful response from the server (indicating the database is up to date with that action), we then broadcast a real-time update via Socket.IO. Simultaneously, we dispatch an action which performs an update to the UI through Redux, where the chat data is persisted using ImmutableJS data structures.
基本上,數據庫是我們唯一的真理來源。 對于任何CRUD動作,我們都會發布到處理該動作的路由。 當且僅當我們從服務器獲得成功的響應(表明該操作是最新的數據庫)時,我們才通過Socket.IO廣播實時更新。 同時,我們調度了一個操作,該操作通過Redux對UI執行更新,在該操作中,聊天數據使用ImmutableJS數據結構持久化。
In this way, we only show an update to a user if we have actually updated the data in the database first. Using this pattern, we were able to implement some core chat functionality including likes, editing and deleting messages, and just for fun, some pretty cool emojis!
這樣,僅當我們首先實際更新了數據庫中的數據時,我們才會向用戶顯示更新。 使用這種模式,我們能夠實現一些核心的聊天功能,包括喜歡,編輯和刪除消息,以及一些有趣的表情符號!
While continuing to check off the boxes on our MVP feature checklist, we had to consider design every step of the way. From this perspective, our early decision to adapt Semantic-UI as a CSS library proved to be a sound one. We used it heavily and were very happy with its sleek and easy to work with styling and layout options, its Semantic-UI-React integration, and its well-thought-out responsive design capabilities. When it came to the latter, we sometimes supplemented Semantic with React-Screen-Size, when the default breaks and media queries were not enough.
在繼續選中MVP功能清單上的框時,我們必須考慮設計的每一步。 從這個角度來看,我們早期決定將Semantic-UI用作CSS庫被證明是一個不錯的選擇。 我們大量使用它,并且對它的時尚和易于使用的樣式和布局選項,其Semantic-UI-React集成以及深思熟慮的響應式設計功能感到非常滿意。 當涉及到后者時,有時會在默認設置中斷且媒體查詢不夠的情況下用React-Screen-Size補充語義。
For more granular control over styling, we complimented Semantic with some custom Sass stylesheets and Styled-Components. Styled-Components is a newer CSS/JavaScript package for React that allows for more intuitive and conditionally rendered CSS, written directly into your component files. I highly recommend that you check it out.
為了更精細地控制樣式,我們用一些自定義的Sass樣式表和Styled-Components來補充Semantic。 Styled-Components是React的更新CSS / JavaScript包,它允許直接編寫到組件文件中的更直觀,有條件CSS呈現。 我強烈建議您檢查一下。
Once we had our core functionality down, we were ready for our next big step: deployment.
一旦我們的核心功能失效,我們就準備好下一步,即部署。
I had never deployed an application before, and quickly found that this brought with it a whole new set of challenges.
我以前從未部署過應用程序,很快發現這帶來了一系列全新的挑戰。
We configured Heroku, subscribed to cloud hosted instances of MongoDB and Redis, and after hours of troubleshooting and 19 commits later, we had reached another major landmark. A beta version of FCCAN was finally live!
我們配置了Heroku,訂閱了MongoDB和Redis的云托管實例,經過數小時的故障排除和19次提交,我們達到了另一個重要的里程碑。 FCCAN的Beta版終于上線了!
Though this was not as glorious as I had hoped it would be. Once the app was live, some new concerns were immediately brought to light. For one thing, we needed a much stronger mobile UI (which we had been unable to reliably test up until this point). And, of course, cross-device compatibility was a major problem.
盡管這并不像我希望的那樣光榮。 該應用上線后,立即發現了一些新問題。 一方面,我們需要更強大的移動用戶界面(到目前為止,我們無法可靠地對其進行測試)。 而且,當然,跨設備兼容性是一個主要問題。
But, we were in the home stretch. Nearly there, we were both extremely motivated to see this project through to completion.
但是,我們在家里。 在那附近,我們倆都非常有動力看到這個項目直到完成。
Over the next few weeks, we were busy at work putting some finishing touches on our application. Not to mention working out a few major bugs. For example, it was a shock to discover that if someone got distracted during login and never attempted to “verify” their account, the entire app would crash!
在接下來的幾周中,我們忙于工作,對我們的應用程序進行了一些潤色。 更不用說解決一些主要的錯誤。 例如,令人震驚的是,如果某人在登錄期間分心并且從未嘗試“驗證”其帳戶,則整個應用程序將崩潰!
As a final touch, we decided to move away from the default Semantic-UI theme, which didn’t feel quite sleek enough. Plus, we wanted Campers to feel right at home, even on their very first visit. We thought the best way to achieve this would be to recreate the freeCodeCamp theme as closely as we could, while not having to backtrack and compromise the stylistic choices we had already made.
最后,我們決定放棄默認的Semantic-UI主題,該主題還不夠時尚。 另外,我們希望露營者即使在初次訪問時也能感到賓至如歸。 我們認為實現此目標的最佳方法是盡可能地重新創建freeCodeCamp主題,而不必回溯和損害我們已經做出的樣式選擇。
So instead of pulling in Semantic via CDN, we use their Gulp build tools and custom theming capabilities and built the package directly into our project. The results were fantastic. The site went from a tacky and unprofessional-feeling teal, to a sharp and distinguished freeCodeCamp green.
因此,我們不是使用CDN引入語義,而是使用他們的Gulp構建工具和自定義主題功能,并將包直接構建到我們的項目中。 結果很棒。 該站點從俗氣而又不專業的藍綠色變成了鮮明而杰出的freeCodeCamp綠色。
After 60 days of development and about 20–30 hours per week, we had just about wrapped things up. We conducted a short round of beta testing with live users, and now, as I write this article, we are finally ready for our official launch!
經過60天的開發和每周大約20-30個小時的開發,我們幾乎完成了所有工作。 我們與現場用戶進行了一輪Beta測試,現在,當我寫這篇文章時,我們終于可以正式發布了!
This had turned out to be the quintessential experience that I was looking for. Throughout this process, as things got incrementally more complex, the architecture and inner workings of a modern single-page web app became clear to me. As the codebase grew, I was there for it every step of the way, either contributing code, or reviewing and understanding the code that I didn’t.
事實證明這是我一直在尋找的典型經驗。 在整個過程中,隨著事情變得越來越復雜,現代單頁Web應用程序的體系結構和內部工作對我來說變得很清楚。 隨著代碼庫的增長,我可以做到這一切,無論是貢獻代碼,還是查看和理解我沒有的代碼。
Now that we’re done, I can’t reiterate enough times how enriching this experience has been for me. The key takeaway is this: sometimes taking baby steps just doesn’t cut it anymore. If you ever feel frustrated about the rate of your progress, or if you feel like you’ve plateaued, don’t give up.
現在我們已經完成了,我無法重申足夠多的時間使我獲得豐富的經驗。 關鍵要點是:有時候邁出嬰兒的腳步已經不再困難了。 如果您對進度感到沮喪,或者感覺已經停滯不前,請不要放棄。
Instead, go out and find something that’s twice or three times as hard than anything you’ve ever done before.
相反,出去尋找比以前做過的任何事情都要困難兩倍或三倍的事情。
It will be difficult, any might feel impossible at times. But the reward of finally completing the challenge, and the value of the knowledge you’ll gain along the way is immeasurable!
這將是困難的,有時任何人都覺得不可能。 但是,最終完成挑戰所獲得的回報以及您在此過程中將獲得的知識的價值是無法估量的!
Whether 1 or 100 people join the freeCodeCamp Alumni Network, this will all have been worth it. If you can relate to the mindset I had before I started the development of this project, I would encourage you to think about what represents your next biggest challenge, attack it, and own it! I hope you will have as much fun with it as I did.
無論有1或100個人加入freeCodeCamp校友網絡,這一切都是值得的。 如果您可以與開始開發此項目之前的心態聯系起來,我鼓勵您考慮一下代表著您的下一個最大挑戰的事物,即予以挑戰并加以擁有! 希望您會和我一樣開心。
翻譯自: https://www.freecodecamp.org/news/the-freecodecamp-alumni-network-a-homegrown-mentorship-network-for-fcc-alumni-529e4531c34f/
校友郵箱