程序員年度工作總結(jié)范文(通用5篇)
時(shí)間乘著年輪循序往前,一段時(shí)間的工作已經(jīng)結(jié)束了,這是一段珍貴的工作時(shí)光,我們收獲良多,這也意味著,又要準(zhǔn)備開始寫工作總結(jié)了。那么如何把工作總結(jié)寫出新花樣呢?下面是小編幫大家整理的程序員年度工作總結(jié)范文(通用5篇),歡迎大家分享。
程序員年度工作總結(jié)1
我于20xx年x月x日成為本公司技術(shù)部的一名程序員,一年轉(zhuǎn)眼就過去了。這段我人生中彌足珍貴的經(jīng)歷,給我留下了精彩而美好的回憶。在這段時(shí)間里您們給予了我足夠的關(guān)懷、支持和幫助,讓我充分感受到了領(lǐng)導(dǎo)們“海納百川”的胸襟,在對您們肅然起敬的同時(shí),也為我有機(jī)會成為影響力在線的一員而驚喜萬分。這段時(shí)間,在領(lǐng)導(dǎo)和同事們的關(guān)懷和指導(dǎo)下,我通過不懈努力,各方面均取得一定的進(jìn)步,現(xiàn)將我的工作情況做如下匯報(bào):
一、通過理論學(xué)習(xí)和日常工作積累經(jīng)驗(yàn)我的各方面有了很大的進(jìn)步
剛到公司不久,我便開始負(fù)責(zé)方面的網(wǎng)站開發(fā)和廣告平臺開發(fā)和維護(hù),剛開始的時(shí)候?qū)ξ襾碚f確實(shí)壓力很大,因?yàn)楦鞣矫娑歼不熟悉,而且與之前的公司相比,節(jié)奏也有點(diǎn)快,不過我慢慢的習(xí)慣了環(huán)境,和同事相處的比較融洽,領(lǐng)導(dǎo)對我也比較關(guān)心,在公司里工作就像是在一個(gè)幸福的大家庭里一樣,我很快喜歡上了這里。
我到公司不久,第一個(gè)項(xiàng)目是xxx公司網(wǎng)站,做這個(gè)項(xiàng)目的時(shí)候我遇到了幾個(gè)問題,我在以前公司做的時(shí)候沒有在這么短的時(shí)候完成一個(gè)項(xiàng)目的,在效率上提高了我的能力。做這個(gè)項(xiàng)目的時(shí)候我也遇到了許多以前沒有遇到過的問題,我請教同事和朋友,還有借助網(wǎng)絡(luò)一一解決了難題。
之后,我將B2B廣告招商平臺進(jìn)行了改版,開發(fā)了xxx智能建站廣告平臺以及以后網(wǎng)站的維護(hù)工作。
接下來,我又做了一個(gè)比較棘手的項(xiàng)目——xxx在線咨詢系統(tǒng)。為什么說棘手呢,因?yàn)槲乙郧皼]有做過這方面的項(xiàng)目,而且我問遍了所有認(rèn)識的朋友,搜遍了網(wǎng)絡(luò)也沒有找到如何解決的方法,之后我翻書籍,接著搜索網(wǎng)絡(luò)。功夫不負(fù)有心人,終于我找到一個(gè)聊天室的小例子,但是功能差的太遠(yuǎn),于是我把這個(gè)示例一點(diǎn)點(diǎn)的研究,從一點(diǎn)也不懂到后來慢慢看懂,從對AJAX技術(shù)一無所知到基本熟練運(yùn)用。接下來我就開始自己開發(fā),到最后終于把它開發(fā)了出來,雖然不是很完美,功能不是很強(qiáng)大,但是它是我辛苦的勞動(dòng)結(jié)晶,我相信以后會把它開發(fā)的更強(qiáng)大,更完美。
二、明確崗位職能,認(rèn)識個(gè)人技術(shù)能力不足
經(jīng)過一年的工作,雖然完成了一些項(xiàng)目的開發(fā),我的技能也提高了很多,但是感覺我的技術(shù)還有待提高,所以我會在以后的工作中更加努力,努力提高自己的技術(shù)和各種不足,努力使自己成為一名稱職的職員。
三、提出自己努力計(jì)劃
1、學(xué)無止鏡,時(shí)代的發(fā)展瞬息萬變,各種學(xué)科知識日新月異。我將堅(jiān)持不懈地努力學(xué)習(xí)各種技術(shù)知識,并用于指導(dǎo)實(shí)踐。
2、“業(yè)精于勤而荒于嬉”,在以后的工作中不斷學(xué)習(xí)知識,通過多看、多學(xué)、多練來不斷的提高自己的各項(xiàng)技能。
3、不斷鍛煉自己的膽識和毅力,提高自己解決實(shí)際問題的能力,并在工作過程中慢慢克服急躁情緒,積極、熱情、細(xì)致地的對待每一項(xiàng)工作。
4、努力提高自己的日常交際能力。
時(shí)光流轉(zhuǎn)間,我已到公司工作一年。非常感謝公司領(lǐng)導(dǎo)對我的信任,給予我體現(xiàn)自我、提高自我的機(jī)會。這一年的工作經(jīng)歷,使我的工作能力得到了由校園步入社會后幅度的提高。
在此,在對一年的工作情況及心得體會做一匯報(bào)后,今后我會以炙熱的工作熱情繼續(xù)投入到今后的工作當(dāng)中,以自己踏實(shí)努力的工作,報(bào)公司知遇之恩!
程序員年度工作總結(jié)2
從我x月x日進(jìn)入公司到現(xiàn)在已經(jīng)過去一年了,從一名剛剛結(jié)束實(shí)習(xí)的學(xué)生到一名獨(dú)立的開發(fā)人員,角色改變了,職責(zé)也改變了。雖然已經(jīng)預(yù)計(jì)了工作之中會有很多困難,可是在實(shí)際的項(xiàng)目開發(fā)中,自己所遇到遠(yuǎn)遠(yuǎn)不止自己想象之中的那么簡單、單純。在開發(fā)過程中,難題一個(gè)接一個(gè)的出現(xiàn),要做到滿足公司的產(chǎn)品需求,成為一名合格的程序開發(fā)人員,這個(gè)過程還很漫長。每天我都在勉勵(lì)自己,要好好學(xué),好好做,以后會好的。在此同時(shí)我衷心感謝公司給我提供了學(xué)習(xí)的機(jī)會和平臺,這也使我對以后的日子多了些許的信心。
一、工作回顧
在我進(jìn)入公司的這一年里,我陸續(xù)接觸了公司的gps平臺,智能手表定位,xx鐵路局車站消防綜合管理系統(tǒng),xx金融款箱管理系統(tǒng),xx保衛(wèi)處的管理系統(tǒng),指揮中心的視頻監(jiān)控系統(tǒng),并在這期間為xxxx制作了一個(gè)展示型企業(yè)網(wǎng)站。在剛進(jìn)入公司的那段時(shí)間里,我從沒有接觸過網(wǎng)絡(luò)攝像機(jī),對于網(wǎng)絡(luò)攝像機(jī)根本沒有任何概念,在公司的培養(yǎng)下我逐漸熟悉了各種攝像機(jī),現(xiàn)在拿到xx的攝像機(jī)開發(fā)包,可以很熟練的進(jìn)行二次開發(fā)。在工作之余,我也在努力的學(xué)習(xí),和別人交流,學(xué)習(xí)先進(jìn)的開發(fā)技術(shù),請教別人開發(fā)技術(shù)問題。
二、主要問題
1、由于開始對業(yè)務(wù)需求不是很熟悉,所以在寫需求分析與了解所要開發(fā)的過程中多次出現(xiàn)因?yàn)樾枨蟮脑,而不斷修改、返工的情況。在同xx金融交流的時(shí)候,這個(gè)問題多次困擾著我,對方的需求不明,每次交流的過程中都在變更需求,從而導(dǎo)致了效率比較低的問題。
2、在開發(fā)中,用到很多我所不知道或很多我知道但不太熟悉的領(lǐng)域,在這個(gè)領(lǐng)域內(nèi),我需要不斷的學(xué)習(xí)。
3、在工作階段,有時(shí)比較偏向自己的工作方便,忽略了其他同事的工作上的量與難易。有的功能自己怎么方便怎么寫,如今公司在不斷壯大,我們部門人員在不斷的增加,這樣是不利于多人合作的。
4、工作的條理性不夠清晰,要分清主次和輕重緩急;在開發(fā)時(shí)間很倉促的情況下,事情多了,就一定要有詳實(shí)而主次分明的計(jì)劃,哪些需要立即完成,哪些可以緩緩加班完成,在這方面還有很大的優(yōu)化空間。
5、學(xué)習(xí)的知識不夠廣泛;一個(gè)項(xiàng)目中,涉及的技術(shù)往往有多種,知識多了,就會靈活變通,以后我會加強(qiáng)這方面的學(xué)習(xí)。
三、工作心得
1、每一個(gè)項(xiàng)目在開始著手的第一步,一定要和客戶把需求溝通清楚,只有了解了項(xiàng)目的需求,才有可能真正做好一個(gè)項(xiàng)目。我們需要向客戶提出要求客戶提供所有涉及該項(xiàng)目的資料,每次與客戶見面都需要熟悉業(yè)務(wù)與程序的最少一至兩個(gè)程序員隨時(shí)記錄需求。
2、工作中,有一個(gè)無論是技術(shù),還是經(jīng)驗(yàn)都比較讓人肯定的前輩帶領(lǐng),將任務(wù)詳細(xì)化,詳細(xì)到,每個(gè)頁面、甚至是一個(gè)頁面中的圖片什么時(shí)候做好,做到什么程度,這樣把工作進(jìn)度有計(jì)劃有方向的贊定下來,做事很有效率。和xx,xx等人合作時(shí)候一定注意要多項(xiàng)工作同步進(jìn)行,保證每個(gè)子模塊都能同步運(yùn)行。
3、每天的工作小結(jié)真的很重要,這讓我們每天都有計(jì)劃的知道自己干了什么,不是漫無目的的工作,所以我們應(yīng)該養(yǎng)成,日記、周記、月記、年記的工作習(xí)慣。
4、工作并不是一成不變的,也許有一天你要去其他崗位幫忙,所以同事之間的技術(shù)要互相學(xué)習(xí),也許有一天,公司需要你發(fā)揮其他的技能幫忙,所以互相學(xué)習(xí)也是很重要的。自己的工作不能僅僅局限于編程。
程序員年度工作總結(jié)3
來公司擔(dān)任程序員一職已一年多時(shí)間,在這一年時(shí)間里,我學(xué)到了很多東西。每個(gè)人都是在不斷的總結(jié)中成長,在不斷的審視中完善自己。在這一年里自己也是在總結(jié)、審視中腳踏實(shí)地地完成好本職工作,現(xiàn)將這一年的工作總結(jié)如下:
一、思想方面
嚴(yán)格按照一個(gè)程序員應(yīng)有的素養(yǎng)要約束自已,愛崗敬業(yè),具有強(qiáng)烈的責(zé)任感和事業(yè)心,積極主動(dòng)認(rèn)真的學(xué)習(xí)專業(yè)知識,工作態(tài)度端正,認(rèn)真負(fù)責(zé),聽從公司的安排,積極配合xx完善ERP系統(tǒng),任勞任怨。
二、工作方面
熱愛自己的本職工作,能夠正確認(rèn)真的對待每一項(xiàng)工作,工作投入,熱心為大家服務(wù),認(rèn)真遵守勞動(dòng)紀(jì)律,按時(shí)上下班,有效利用工作時(shí)間,堅(jiān)守崗位,需要加班完成工作按時(shí)加班加點(diǎn),保證工作能按時(shí)完成。在這一年里,我本著把工作做的更好這樣一個(gè)目標(biāo),開拓創(chuàng)新意識,積極圓滿的完成了以下本職工作:
1、配合xx開發(fā)并完善SRM系統(tǒng)。
2、獨(dú)自開發(fā)xxSAP日志維護(hù)系統(tǒng)。
三、存在不足
一公司領(lǐng)導(dǎo)以及部門領(lǐng)導(dǎo)同事的幫助和指教,使我的工作有了很大提高,當(dāng)然我還存在著很多不足之處,處理問題思路簡單,不夠成熟,工作中容易產(chǎn)生急躁情緒,需要更深入學(xué)習(xí)專業(yè)知識,提高自己的工作水平。
程序員年度工作總結(jié)4
我是一名程序員,在過去的一年里,軟件研發(fā)部團(tuán)結(jié)協(xié)作,以及在公司這充滿奮斗的環(huán)境下,我以嚴(yán)肅認(rèn)真的工作態(tài)度和百折不饒的精神,努力的完成了公司的各項(xiàng)工作,在軟件研發(fā)、團(tuán)隊(duì)協(xié)作和個(gè)人成長上也取得了一定的成績。在公司一年的工作已經(jīng)結(jié)束,特向公司總結(jié)匯報(bào)如下:
一、軟件研發(fā)
根據(jù)公司的安排,項(xiàng)目的需要。在自身的努力、伍經(jīng)理的幫組,團(tuán)隊(duì)的合作下,克服重重技術(shù)困難,增長了工作經(jīng)驗(yàn),收獲豐盈:
1、asp開發(fā)
以前我在其他公司也做過一些開發(fā),但是底層和架構(gòu)與頁面樣式我都是沒有涉及到的。通過這一年在本公司的的這些項(xiàng)目程序中的鍛煉,我成長了,我學(xué)會了很多很多。
首先,面向?qū)ο笳Z言的收獲。對于當(dāng)前編程的主流思想是對象,任何事物都可以用對象來表示。以前理解這些話很費(fèi)解都是從表面上理解,沒有從中的體會,通過這次asp項(xiàng)目的開發(fā),不管是數(shù)據(jù)還是外部一些條件我們都可以抽象成對象,都可以用對象來表示,具體可以用語言中的類方等。asp如此,c#如此java也同樣如此。
其次,具備獨(dú)立完成vb知識方面的能力。以前沒有做過vb的東西,加上這次asp的做,這次涉及到的領(lǐng)域也非常廣,常用的重要的都有涉及,并且還補(bǔ)充xml,java實(shí)際操作中空白的部分。通過這一年的開發(fā),我能勝任這方面的工作,能獨(dú)立完成這方面的工作。
再次,c#方面存在一些不足。LocALhOST通過c#這次軟件的開發(fā),也發(fā)現(xiàn)自己的不足,如基礎(chǔ)知識掌握不牢,缺乏編程整體思想。這些都是需要在工作中完善和改進(jìn)的。
2、數(shù)據(jù)庫開發(fā)
數(shù)據(jù)庫是伴隨著項(xiàng)目以來用的最多最平凡的技術(shù)。以前對數(shù)據(jù)庫只是會一些簡單常用的操作,經(jīng)過這一年項(xiàng)目的實(shí)戰(zhàn),對數(shù)據(jù)庫的操作增加了一些豐富的經(jīng)驗(yàn)。為以后的工作和經(jīng)驗(yàn)的積累都奠定了堅(jiān)實(shí)的基礎(chǔ)。同時(shí)在項(xiàng)目中還用到了oracel與access數(shù)據(jù)庫,這是我的收獲。
優(yōu)點(diǎn):
能熟練的運(yùn)用數(shù)據(jù)庫技術(shù)進(jìn)行開發(fā)。特別是對sql數(shù)據(jù)庫的操作,經(jīng)過這么長時(shí)間的積累,基本上能合理的設(shè)計(jì)和新建數(shù)據(jù)庫,同時(shí)在數(shù)據(jù)結(jié)構(gòu)上也加強(qiáng)了對數(shù)據(jù)庫的理解。通過項(xiàng)目的實(shí)踐現(xiàn)在能熟練使用和編寫多種sql語句。還掌握了一些關(guān)于數(shù)據(jù)庫優(yōu)化sql語句優(yōu)化的方法,能進(jìn)行一些簡單的`優(yōu)化。
缺點(diǎn):
數(shù)據(jù)是一門比較先進(jìn)的技術(shù),并不是你會寫一些sql語句,能建幾個(gè)數(shù)據(jù)庫你就是數(shù)據(jù)庫工程師。要成為一個(gè)好的數(shù)據(jù)庫管理員是要經(jīng)過長時(shí)間的工作積累。針對自己的不足,在以后的工作和學(xué)習(xí)中多接觸,多運(yùn)用新的知識點(diǎn)。充實(shí)自己的經(jīng)驗(yàn)和知識儲備。
二、團(tuán)隊(duì)協(xié)作
上面的成功與收獲,除了自身努力外,以及公司的支持。是這個(gè)團(tuán)隊(duì)鑄造了我。我們這個(gè)團(tuán)隊(duì)也是因?yàn)橛辛宋覀冞@些拼搏協(xié)作的隊(duì)員,使得它成為一個(gè)具有務(wù)實(shí)、拼搏、創(chuàng)新精神的團(tuán)隊(duì)。我與軟件研發(fā)小組是一個(gè)整體,這里的團(tuán)隊(duì)總結(jié)也就是我在這個(gè)團(tuán)隊(duì)中的收獲。
務(wù)實(shí):公司下發(fā)的任務(wù),下發(fā)的工作,件件都是用心去做的。我們這個(gè)團(tuán)隊(duì)中沒有一個(gè)人在工作的時(shí)候做了工作以外的事情,都是實(shí)實(shí)在在的做跟工作相關(guān)對公司有益的事情。相信在伍經(jīng)理的帶領(lǐng)下現(xiàn)在是這樣,以后同樣也是這樣。
拼搏:公司給的每一個(gè)任務(wù)不管它多難,如果工作沒有完成我們會晚上加班,也要盡可能的完成當(dāng)天的工作。如果工作實(shí)在忙,為了趕進(jìn)度我們放棄周末休息時(shí)間也要盡可能的使項(xiàng)目提前。
創(chuàng)新:現(xiàn)在我們開始項(xiàng)目的時(shí)候都會進(jìn)行研討,一般都會進(jìn)行一個(gè)效率和邏輯的分析與討論,保證程序正確的前提盡可能的提高程序的效率。
互助:我們小組內(nèi)只要任何一個(gè)人出現(xiàn)技術(shù)或其它的問題,我們都會彼此都會盡可能的去幫助他。不會因?yàn)槟骋粋(gè)人而拖住整個(gè)項(xiàng)目滯后。
交流:我們在項(xiàng)目中會及時(shí)溝通自己的收獲,特別是一些針對性的技術(shù)問題。這樣可以省了很多重復(fù)研究的時(shí)間,這是一筆很可觀的時(shí)間。
在交流中只要我會的,我懂的,我不會去吝嗇。我會積極的去與你交流,我的團(tuán)隊(duì)名言“人強(qiáng)團(tuán)則強(qiáng),人弱團(tuán)則削”。
三、個(gè)人成長
通過公司這快一年的鍛煉與學(xué)習(xí)我真的進(jìn)步了很多,不管從技術(shù)上還是做事上,都不像以前那樣了。我在公司學(xué)到的懂得的使我飛速成長。
技術(shù)上:不管從語言上還是做事的邏輯上都得到了很大的的提高,F(xiàn)在在軟件小組里面自己能獨(dú)立完成一部分工作,承擔(dān)自己的責(zé)任。
程序員年度工作總結(jié)5
首先感謝貴大華圣提供一種舒適的工作環(huán)境,感謝各位領(lǐng)導(dǎo)給予我一個(gè)展現(xiàn)自我的機(jī)會,這半年以來在同事幫助、領(lǐng)導(dǎo)的指導(dǎo)下,自己的不斷努力下,自我感覺自己成長了許多,積累了不少的經(jīng)驗(yàn),為自己迎接新的挑戰(zhàn)又增添了不少的自信心,為自己將來的發(fā)展創(chuàng)造了有利的條件,同時(shí)也發(fā)現(xiàn)自己的不足和弱點(diǎn)。下面對我半年工作進(jìn)行一下大致的總結(jié)參與了對標(biāo)工作。極力配合項(xiàng)目經(jīng)理完成對標(biāo)的相關(guān)工作,在此項(xiàng)工作我參與文檔分析,指標(biāo)分解和相關(guān)文檔的撰寫,在此項(xiàng)工作我還參與了遵義市的調(diào)研工作,在此項(xiàng)調(diào)研工作中我認(rèn)識到了作為程序員應(yīng)該怎么進(jìn)行調(diào)研和調(diào)研前的一些工作準(zhǔn)備,通過相關(guān)文檔認(rèn)真學(xué)習(xí),掌握了一定的初步編寫文檔能力,在此項(xiàng)工作中我最大的收獲就是掌握一定的和客戶交流,作為一個(gè)小組成員怎么配合經(jīng)理完成應(yīng)該完成的工作。但感覺自己不足之處就是長期面向技術(shù)專研與學(xué)習(xí)以至于不擅長交流和文檔編寫工作,感覺在調(diào)研工作很大程度思想完全不能脫離技術(shù)走向業(yè)務(wù)梳理工作。
另外在項(xiàng)目經(jīng)理的指引下對jquery和css進(jìn)行了深入的學(xué)習(xí),終于彌補(bǔ)了我在開發(fā)中常遇的兩大弱點(diǎn)。這也為我的開發(fā)中增添了不少色彩。參與基礎(chǔ)數(shù)據(jù)對象管理系統(tǒng)建設(shè)。此項(xiàng)目我們小組采用流水式生產(chǎn)模式,我的項(xiàng)目經(jīng)理根據(jù)組員的情況以及優(yōu)勢將項(xiàng)目分為3部分(系統(tǒng)分析及數(shù)據(jù)庫建立,數(shù)據(jù)訪問以及業(yè)務(wù)邏輯的處理、用戶界面及硬件交付),由不同的項(xiàng)目成員完成,我在當(dāng)中主要負(fù)責(zé)就是為系統(tǒng)的界面層提供數(shù)據(jù)訪問接口和我業(yè)務(wù)邏輯處理,極力配合界面開發(fā)調(diào)用人員完成開發(fā)工作以及提供所需數(shù)據(jù)訪問接口和業(yè)務(wù)處理工作,在此項(xiàng)工作我最大的收獲就怎么樣去配合完成一個(gè)項(xiàng)目,掌握了項(xiàng)目怎么在一個(gè)小組當(dāng)中進(jìn)行合理的職責(zé)劃分,怎么根據(jù)小組實(shí)力進(jìn)行項(xiàng)目階段行劃分,在此過程中我的技術(shù)也得到了很大的提升。尤其是對數(shù)據(jù)訪問這塊,我有利的掌握數(shù)據(jù)庫訪問過程中的鏈接池使用。參與燃?xì)夤鞠到y(tǒng)平臺的建立工作。
在這個(gè)項(xiàng)目我主要的任務(wù)就是做一些開發(fā)前的技術(shù)儲備,提前摸索開發(fā)過程預(yù)知的一些相關(guān)技術(shù)和一些系統(tǒng)架構(gòu)思想,我側(cè)重學(xué)習(xí)的方向就是尋求一種新的架構(gòu)思想代替現(xiàn)在相對較落后技術(shù)架構(gòu),目前學(xué)習(xí)目標(biāo)就是使用分布式應(yīng)用開發(fā)進(jìn)行系統(tǒng)搭建,想通過這種架構(gòu)思想構(gòu)建一個(gè)全新的系統(tǒng)架構(gòu)模式以供以后所有系統(tǒng)的參照與效仿,也就是面向服務(wù)編程思想(sop)就此架構(gòu)思想我學(xué)習(xí)了微軟的wcf架構(gòu)。
這也是微軟提出相對較新的系統(tǒng)架構(gòu)模式,當(dāng)然在此過程中我了解到國外一個(gè)相對較新的架構(gòu)理念,那就是面向資源(rest)系統(tǒng)架構(gòu)設(shè)計(jì)模式,據(jù)微軟官方介紹它是sop的下一代,將來所有的系統(tǒng)如果不是面向服務(wù)以及面向資源的系統(tǒng)架構(gòu)思想將是一個(gè)淘汰的、落后的產(chǎn)品。我除了學(xué)習(xí)這項(xiàng)架構(gòu)思想外,我還對silverlight進(jìn)行了學(xué)習(xí),這主要是它目前和flash,html5在某種程度有相當(dāng)競爭的地位,并且它現(xiàn)在被it開發(fā)人員(尤其是。net開發(fā)人員)視為極品,它在將來的。net開發(fā)產(chǎn)品中有著相當(dāng)大的競爭力度,同時(shí)這也是我們小組開發(fā)技術(shù)上的一個(gè)考慮。希望能夠在這次開發(fā)中使用這些全新的技術(shù),為公司創(chuàng)造一個(gè)全新的技術(shù)產(chǎn)品。
【程序員年度工作總結(jié)范文(通用5篇)】相關(guān)文章:
程序員年度個(gè)人總結(jié)01-06
程序員個(gè)人年終工作總結(jié)(個(gè)人通用)01-05
通用年度工作總結(jié)12-29
大寫學(xué)院年度工作總結(jié)范文(通用5篇)12-21