How to Start Learning Coding? What I Learned from My Own Journey…

 

Starting in coding is like sailing on a vast sea. It can be hard to decide which path is the right one. If you are reading this, you are probably ready to step into this world. The good news is that you are not alone! I started this journey with HTML and CSS, and step by step, I made my place in the world of software development. Let’s take a look at how you can shape this adventure together.

1. Start with the Basics: HTML, CSS and Bootstrap

My first stop was HTML and CSS. These two are the foundations of the software world. HTML, which forms the structure of websites, and CSS, which provides the design, are both easy to learn and extremely satisfying. Later on, I learned Bootstrap and made my sites more modern and responsive. Bootstrap makes things much easier with its predefined templates. I have attended many free and paid courses on Udemy and YouTube. I leave the links to some of them below for ideas. (Since my process dates back 4–5 years, they may be old resources, and you will come across current ones in your research process.) In the same way, you can improve your basic skills by using these platforms. Apart from that, the freeCodeCamp platform is a platform where you can experience almost all technologies for free, you can easily practice on the browser, I have used it a lot, I still look at it from time to time, I recommend it. Do not neglect to practice here especially. Start by making a few simple web pages. The resources on the internet are really endless!

https://www.udemy.com/course/komple-web-developer-kursu/

https://www.udemy.com/course/adan-zye-bootstrap-4-egitimi/

2. Advanced Level: Transition to Programming Languages and Databases (C# and SQL)

After HTML and CSS, when I wanted to develop more dynamic and functional applications, I turned to C#. During this process, I also started to learn SQL. I worked on MS SQL and used this database in my Windows Forms applications. I had the opportunity to improve myself especially in database management and application integration. For example, I developed two separate applications to track the books I read and the trainings I took; I stored my data in the SQL database and my applications continue to run on this database. You too can create powerful and dynamic solutions in your own projects with the combination of C# and SQL. Again, I share some of the resources I used below.

https://www.udemy.com/course/sifirdan-ileri-seviye-csharp-programlama/

https://www.udemy.com/course/programcilik-kursu/

https://www.udemy.com/course/komple-uygulamali-programlama-egitimi-yeni-baslayanlar/

https://www.udemy.com/course/sorgularla-adim-adim-sql-veri-tabani-programlama/

https://www.udemy.com/course/sql-kursu/

3. Introduction to the Mobile World: Meet Flutter

What I’m most proud of in the software world is that I was able to develop apps on my own with Flutter. Flutter is especially great for mobile app development. I’ve built an app for kids to learn English, which I’ve released on Google Play, and I have another app in testing right now with recipes for babies. In the process, I learned how to use GitHub and how to make use of platforms like Stack Overflow. If mobile app development appeals to you, starting with Flutter is a great step.

https://www.udemy.com/course/flutter-ile-uygulama-gelistirme-kursu-android-ios/

https://www.udemy.com/course/flutter-bootcamp-program-dart/

https://www.udemy.com/course/flutter-bootcamp-with-dart/

https://www.udemy.com/course/git-github-practical-guide/

4. A World of Fun with Game Development: Unity

What I learned in software was not enough for me; my interest in game development with Unity increased. I can say that I met this when Üretken Akademi organized a game development bootcamp in my city. After completing that bootcamp, I am currently continuing to improve myself and I realized this: Every new technology in the software world opens a different door. If you want to develop games, Unity is a great platform to start with.

5. Continuously Learn and Share

When you embark on a journey in the software world, you will see that the learning never ends. New technologies, frameworks, languages… They are all interconnected. My most important advice is to apply what you learn immediately. Whether you write a blog post or share your projects on GitHub. I also write medium articles about software and in this way, I can share what I have learned with more people, and I learn more permanently while researching to write what I have in mind.

Github

I mentioned above that I’m learning how to use GitHub, but I wanted to open a separate parenthesis here. GitHub is definitely one of the biggest helpers when learning software. It’s like a giant code repository where developers share their projects. I’ve often browsed projects on GitHub, especially when I was learning Flutter, C# and HTML/CSS. It’s a great way to look at code written by other developers, to see how code is actually written and what techniques are used. You can also share your own projects here. If you want to examine the projects I wrote in the trainings I follow, which I also publish publicly, my github profile is below:

So what does GitHub bring you? Think of it this way:

  • You improve your coding skills: You learn the tricks of the trade by examining the code of really experienced developers. Which structures are cleaner, which methods are more efficient… You get a chance to see them.
  • You discover new solutions: Every project solves a certain problem. Looking at those projects and thinking, “Oh, is this how they solved this problem?” makes you more creative.
  • You can make your own contributions: Over time, you can also contribute to open source projects. Not only will you practice coding, but you will also gradually gain a foothold in the software world.

To summarize, GitHub reviews have helped me a lot and I’m sure you’ll find them very useful when learning software. It’s a great resource that makes you feel like you’re not alone in coding!

I hope my journey will inspire and give ideas to someone somewhere. I wish everyone success on this path.

Selin.

Yazılıma Nereden Başlanır? Kendi Yolculuğumdan Öğrendiklerim…

 

Yazılıma başlamak, uçsuz bucaksız bir denizde yelken açmak gibi. Hangi yolun doğru olduğuna karar vermek zor olabilir. Eğer bu satırları okuyorsanız, muhtemelen bu dünyaya adım atmaya hazırsınız. İyi haber, yalnız değilsiniz! Ben de bu yolculuğa, HTML ve CSS ile başladım, adım adım ilerleyerek yazılım geliştirme dünyasında kendime yer edindim. Gelin, bu serüveni nasıl şekillendirebileceğinize birlikte bakalım.

1. Temel Teknolojilerle Başlayın: HTML, CSS ve Bootstrap

Benim ilk durağım HTML ve CSS oldu. Bu ikili, yazılım dünyasının temellerini oluşturuyor. İnternet sitelerinin yapısını oluşturan HTML ve tasarımı sağlayan CSS, öğrenmesi hem kolay hem de son derece tatmin edici. İlerleyen süreçte Bootstrap’i öğrenerek sitelerimi daha modern ve responsive hale getirdim. Bootstrap, önceden tanımlanmış şablonlarıyla işleri oldukça kolaylaştırıyor. Ben, Udemy ve YouTube üzerinden birçok ücretsiz ve ücretli kursa katıldım. Aşağıya bazılarının linkini fikir olması açısından bırakıyorum. (Benim sürecim 4–5 yıl öncesine dayandığı için eski kaynaklar olabilirler, güncelleri de araştırma sürecinizde karşınıza çıkacaktır.) Siz de aynı şekilde bu platformları kullanarak temel becerilerinizi geliştirebilirsiniz. Bunun dışında freeCodeCamp platformu ücretsiz bir şekilde neredeyse tüm teknolojileri deneyimleyebileceğiniz, kolayca tarayıcı üzerinden pratik yapabileceğiniz bir platform, fazlasıyla kullandım, halen ara ara bakıyorum, tavsiye ederim. Burada özellikle pratik yapmayı ihmal etmeyin. Birkaç basit web sayfası yaparak işe başlayın. İnternetteki kaynaklar bu konuda gerçekten sınırsız!

https://www.udemy.com/course/komple-web-developer-kursu/

https://www.udemy.com/course/adan-zye-bootstrap-4-egitimi/

2. İleri Seviye: Programlama Dillerine ve Veritabanlarına Geçiş (C# ve SQL)

HTML ve CSS’nin ardından, daha dinamik ve işlevsel uygulamalar geliştirmek istediğimde, rotamı C#’a çevirdim. Bu süreçte aynı zamanda SQL’i de öğrenmeye başladım. MS SQL üzerinde çalışmalar yaptım ve yazdığım Windows Forms uygulamalarımda bu veritabanını kullandım. Özellikle veritabanı yönetimi ve uygulama entegrasyonu konularında kendimi geliştirme fırsatı buldum. Örneğin, okuduğum kitapları ve aldığım eğitimleri takip etmek için iki ayrı uygulama geliştirdim; verilerimi SQL veritabanında sakladım ve uygulamalarım bu veritabanı üzerinden çalışmaya devam ediyor. Siz de C# ve SQL kombinasyonu ile kendi projelerinizde güçlü ve dinamik çözümler üretebilirsiniz. Yine faydalandığım kaynakların bazılarını aşağıda paylaşıyorum.

https://www.udemy.com/course/sifirdan-ileri-seviye-csharp-programlama/

https://www.udemy.com/course/programcilik-kursu/

https://www.udemy.com/course/komple-uygulamali-programlama-egitimi-yeni-baslayanlar/

https://www.udemy.com/course/sorgularla-adim-adim-sql-veri-tabani-programlama/

https://www.udemy.com/course/sql-kursu/

3. Mobil Dünyaya Giriş: Flutter ile Tanışın

Yazılım dünyasında en çok gurur duyduğum şey, Flutter ile kendi başıma uygulama geliştirebilmem oldu. Flutter, özellikle mobil uygulama geliştirme için harika bir seçenek. Google Play’de yayımladığım, çocukların İngilizce öğrenmesine yönelik bir uygulama geliştirdim ve şu anda test aşamasında olan, bebekler için tarifler içeren bir uygulamam daha var. Bu süreçte GitHub kullanmayı, Stack Overflow gibi platformlardan nasıl faydalanacağımı öğrendim. Eğer mobil uygulama geliştirme size de çekici geliyorsa, Flutter ile başlamak harika bir adım olabilir.

https://www.udemy.com/course/flutter-ile-uygulama-gelistirme-kursu-android-ios/

https://www.udemy.com/course/flutter-bootcamp-program-dart/

https://www.udemy.com/course/flutter-bootcamp-with-dart/

https://www.udemy.com/course/git-github-practical-guide/

4. Oyun Geliştirme ile Eğlenceli Bir Dünya: Unity

Yazılımda öğrendiklerim bana yetmedi; Unity ile oyun geliştirmeye olan ilgim arttı. Bununla da Üretken Akademi’nin yaşadığım şehirde oyun geliştirme bootcamp’i düzenlemesi ile tanıştım diyebilirim. O bootcamp’i tamamladıktan sonra şu an kendi kendimi geliştirmeye devam ediyorum ve şunu fark ettim: Yazılım dünyasında her yeni teknoloji, farklı bir kapıyı aralıyor. Eğer siz de oyun geliştirmek isterseniz, Unity başlangıç için mükemmel bir platform.

5. Sürekli Öğrenin ve Paylaşın

Yazılım dünyasında bir yolculuğa çıktığınızda, öğrenmenin hiç bitmeyeceğini göreceksiniz. Yeni teknolojiler, framework’ler, diller… Hepsi birbiriyle bağlantılı. En önemli tavsiyem, öğrendiklerinizi hemen uygulayın. İster bir blog yazısı yazın, ister GitHub üzerinde projelerinizi paylaşın. Ben de yazılım hakkında medium yazıları yazıyorum ve bu sayede öğrendiklerimi daha çok kişiye ulaştırabiliyorum, aklıma takılanları ise yazmak için araştırırken daha kalıcı şekilde öğreniyorum.

GitHub Konusu

Yukarıda GitHub kullanmayı öğrendiğimden bahsettim ama burada bu konuya ayrı bir parantez açmayı istedim. Yazılım öğrenirken en büyük yardımcılardan biri kesinlikle GitHub. Burası, yazılımcıların projelerini paylaştığı dev bir kod deposu gibi. Ben de özellikle FlutterC# ve HTML/CSSöğrenirken GitHub’daki projelere sık sık göz attım. Başka yazılımcıların yazdığı kodları incelemek, aslında nasıl kod yazıldığını, hangi tekniklerin kullanıldığını görmek için harika bir yöntem. Burada siz de kendi projelerinizi paylaşabilirsiniz. Benim de public olarak yayınladığım, takip ettiğim eğitimlerde yazdığım projeleri incelemek isterseniz github profilim aşağıda:

Peki GitHub size ne kazandırır? Şöyle düşünün:

  • Kodlama becerilerinizi geliştirirsiniz: Gerçekten deneyimli yazılımcıların kodlarını inceleyerek, işin püf noktalarını öğrenirsiniz. Hangi yapılar daha temiz, hangi yöntemler daha verimli… Bunları görme şansı bulursunuz.
  • Yeni çözümler keşfedersiniz: Her proje belli bir problemi çözer. O projelere bakıp, “Aaa, bu sorunu böyle mi çözmüşler?” diye düşünmek, sizin de daha yaratıcı olmanızı sağlar.
  • Kendi katkılarınızı yapabilirsiniz: Zamanla siz de açık kaynak projelere katkı sunabilirsiniz. Hem kodlama pratiği yaparsınız hem de yazılım dünyasında adım adım kendinize yer edinirsiniz.

Özetle, GitHub incelemeleri bana çok şey kattı ve sizin de yazılım öğrenirken büyük faydasını göreceğinize eminim. Kod yazarken yalnız olmadığınızı hissettiren harika bir kaynak!

Sonuç olarak kendi sürecimden de gözlemlediğim be öğrendiğim en önemli şey: Pratik, pratik, pratik. İstediğiniz eğitimi alın, istediğiniz kursa katılın, kendi başınıza denemeler yapmadıkça, projeler geliştirip bunlar üzerinde kafa yormadıkça hep bir yerler eksik kalıyor ve öğrenilenler de çok çabuk unutuluyor.

Umarım kendi yolculuğum bir yerlerde birilerine ilham olur, fikir verir. Herkese bu yolda başarılar diliyorum.

Selin.

Flutter Package of the Week: image_picker

 

Hello, the second post in our package of the week series is about handling image files in our projects. And our package is image_picker. This package is one of the most common tools used by application developers, because it is a very common need for an application to select photos or videos from users’ devices.

What’s it for?

Image Picker lets you grab media files from the device’s gallery or directly from the camera, essentially making it easier for users to select photos or videos. Let’s say you’re making a profile photo add screen, you want to allow the user to select an image from the gallery or take a photo on the fly. With this package, that can be done with a few lines of code.

How to Use?

First you add the package to your pubspec.yaml file using the command below as usual:

flutter pub add image_picker
dependencies:
image_picker: ^1.1.2 //version number may vary

Then you need to import the package to the dart file you will use with the following line:

import 'package:image_picker/image_picker.dart';

As far as permits are concerned,

As of version 0.8.1 the Android app supports selecting (multiple) images on Android 4.3 or higher. So no configuration is required — the plugin should work out of the box.

But on iOS you need to add the following lines to the Info.plist file:

<key>NSCameraUsageDescription</key>
<string>We need access to your camera to take photos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photo library to select photos.</string>

Now comes the fun part. The package provides an ImagePicker class that allows you to easily pick images from the gallery or camera. Here’s a simple example of how to use it:

final ImagePicker _picker = ImagePicker();

// Galeriden resim seçmek
final XFile? image = await _picker.pickImage(source: ImageSource.gallery);

// Kameradan resim çekmek
final XFile? photo = await _picker.pickImage(source: ImageSource.camera);

In the code above, if the user selects an image from the gallery, the file path is assigned to the image variable. Likewise, if you want to use the camera, you can take a shot from the camera with the ImageSource.camera parameter.

It is also possible to select a video in the same way:

final XFile? video = await _picker.pickVideo(source: ImageSource.gallery);

Furthermore, this package offers options to compress both photos and videos. This is a great feature, especially for optimizing large file sizes!

Now let’s see what customizations we can make using this package.

In Image Picker, you can also set resolution settings to control the size and quality of the media files that users upload. For example, if you want to take a low-resolution photo when using the camera, you can set the imageQuality parameter.

final XFile? compressedPhoto = await _picker.pickImage(
source: ImageSource.camera,
imageQuality: 50, // 50% quality
);

This way, you can also preserve the performance of the application. Low-sized images will load faster, especially if you are uploading media files over the internet.

You can also specify the size of the images with maxWidth, maxHeight and the preferredCameraDevice parameter for front or rear camera preference.

Below I am sharing an example of a project made using this package with all the codes.

!!! Since I created the project using iOS Simulator and there is no camera on the virtual device, the Camera button shows Error, but it works fine on the real device.

final ImagePicker _picker = ImagePicker();
Future pickImageFromGallery() async {
final XFile? image = await _picker.pickImage(source: ImageSource.gallery);
}

Future pickImageFromCamera() async {
final XFile? photo = await _picker.pickImage(source: ImageSource.camera);
}

Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.purple,
padding: const EdgeInsets.all(16.0),
),
child: const Text("Pick Image from Gallery",
style: TextStyle(
color: Colors.white70, fontWeight: FontWeight.bold)),
onPressed: () {
pickImageFromGallery();
},
),
const SizedBox(
height: 22.0,
),
ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.purple,
padding: const EdgeInsets.all(16.0),
),
child: const Text("Pick Image from Camera",
style: TextStyle(
color: Colors.white70, fontWeight: FontWeight.bold)),
onPressed: () {
pickImageFromCamera();
},
),
],
),
),

I will conclude this article by talking about its advantages and disadvantages.

The biggest advantage of the ImagePicker package is that users can select media files from the gallery or camera with just a few lines of code. You can also control file size and quality.

On the downside, you may need to manage performance when working with large media files. And setting platform-specific permissions manually can be a bit cumbersome.

I hope you found this article useful! If you appreciate the information provided, you have the option to support me by Buying Me A Coffee! Your gesture would be greatly appreciated!


In a nutshell, Image Picker is one of the most popular packages for anyone who wants users to select media or use a camera in Flutter projects. If your app has features like profile photo, gallery selection, or video uploading, this package will give you a lot of peace of mind! It’s a simple and versatile solution.

I hope this was useful.

Happy coding.

Selin.