My Profile Photo

Mehmet Cem Yücel


Technical Writings.
Architecture, Security, Java, Golang, Devops, Microservices, Spring Boot, Kafka, Distributed Systems and Blockchain


Bir Yazılımcının Bilmesi Gereken 15 Madde

Bir yazılımcının bilmesi gerekenler konulu Twitter’daki paylaştığım bir flood’u rica üzerine bloguma da ekliyorum. İyi okumalar…


Bir yazılım geliştiricinin bilmesi gerekenlerle ilgili 15 maddelik flood geliyor.. Mümkün olduğunca fazla keywordü bir araya toplamaya çalıştım.
Hadi Başlıyoruz!

#Developer #Software #Java #code #kod #yazılım #development #computer #bilgisayar #tool #PC #IT #web #tech #data

1. Temel veri yapıları (linkedList, map, tree vb) ve temel algoritmalar (sıralama, arama vb)

Sıfırdan kodlama ihtiyacınız büyük ihtimalle hiç olmayacak. Ancak ihtiyaç anında doğru yerde doğrusunu seçebilmek için o veri yapısının veya algoritmanın nasıl çalıştığını bilmeniz şart

2. Network Temelleri

OSI Modelini ve 7 katmanı; temel protokolleri(#TCP-IP, TCP-UDP, #HTTP, #FTP), güvenlik protokollerini(#HTTPS, #SFTP, #SSL), monitoring protokolleri(#SNMP, ICMP) bilmekte fayda var. Ayrıca ağ ekipmanlarının görevlerini tanımak ve 7Layer yerlerini bilmek lazım

3. Source Control Toolları

Birçok farklı tool var; #Clearcase, #SVN, #Git, #CVS… En azından 1 tanesine hakimiyet yüksek olmalı. Yeteneklerine ve trendlere bakılırsa bu tartışmasız #Git olmalı

4. SQL ve RDBMS

Veri saklamak için çok alternatif var. Ancak RDBMS’ler halen en yoğun kullanılanılanları. Bu nedenle #OLAP, #OLTP; tasarım prensiperi(#Normalization, #BCNF); SQL ve bir #ORM toolunu bilmekte fayda var. Sonrasında #NoSQL dünyasına yelken açılmalı

5. Algorithm Complexity Analysis

Big-o notation’ı bilmek lazım. Böylece kurguladığımız algoritmanın bize dönüşünü bilebiliriz. Hatta sadece #CPU optimizasyonu da değil; #memory, disk, CPU ihtiyaçlarına göre aynı problemin farklı çözümleri üzerine düşünmeye alışmak da önemli.

6. Gof Design Patterns

Bu madde herkesten duymaya alıştığınız bir madde olduğundan yazıp yazmamak arasında gidip kaldım. Ancak eksik bırakmaya gönlüm el vermedi. #OOP‘yi zaten bildiğinizi varsayıp bunu Gang of Four Design Patterns ile taçlandırmanızı şiddetle öneriyorum.

7. Software Design Principles

En az design patterns kadar önemli ama bir o kadar atlanılan kavramlar. #SOLID, #KISS, #DRY, #YAGNI ve #TDD‘yi hayat tarzı yapmak lazım.

#DesignPrinciples

8. Database Design Principles

#ACID ve #BASE en temelleri. Bunları anlamlandırabilmek için #CAP teoremini bilmek lazım. #Mikroservis mimari için #EventSourcing problemine çözüm #CQRS de öğrenilebilir

9. Static Code Analysis Tools

#CodeReview başlığını da bu maddeye yedirelim. Yazdığınız kodun kalitesini, security risklerini bu toollarla ölçümleyip kodunuza review yapmanız önemli. Java için birkaç örnek; #PMD, #FindBugs, #FindSecurityBugs, #SonarQube

10. Unit & Integration Testing

Testin kodlanması şart, özellikle de mikroservis mimarilere adım atıyorsanız. #TDD bu yüzden çok iyi bir seçim. Bunu uygulayamasanız bile en azından birim ve entegrasyon testlerini yazmalısınız. #JUnit #DBUnit #Selenium #Mockito #AssertJ #Jmeter

11. Unix - Linux

#SSH terminalini karşınıza aldığınızda şaşırıp kalmamalısınız. Bağlandığınız sunucuda #fileSystem #textEdit #fileTransfer işlemlerinizi rahatça halledebilmelisiniz. Temel işlemlerinizi halledebilecek kadar #shellScripting yapabilmelisiniz.

12. Scripting Language

Ana bir #HighLevelLanguage (java, c# gibi) yanında bir betik dilini bilmek birçok ihtiyacınızı çok daha hızlı çözebilmenizi sağlar. İkinci bir dil bilmenin ufkunuzu nasıl genişleteceğinden bahsetmiyorum bile. #FunctionalPrograming öğrenmek de güzel olur

13. Tools

Bütün bunları yaparken toollara ihtiyacımız olacak. Kendinizi en iyi hissettiğiniz toollardan bir toolkit yaratın ve uzmanlaşın. Örn: #Postman #Notepad++ #Excel #powerpoint #ditto #mtail #sysinternals #DumpAnalyzer vb…

14. Takip Listesi

Gündemi sürekli takip edebilmek ve güncel kalmak için sizinle benzer kulvardaki profesyonelleri bulun, #blog‘larını, sosyal medyalarını takip edin. Siz de vefa borcunuzu ödemek ve kendinizden sonrakilere fayda yaratabilmek için yavaştan paylaşımlara başlayın

15. OpenSource Contribution

Başkalarının kodlarını okumak sizi çok hızlı geliştirir. Bu sebeple open source community projelerine contributor olun. Ekmekte tuzunuz olsun.




May interest this topics

If you interested in Blockchain Technologies,


comments powered by Disqus