Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / New
Stats: 3,209,263 members, 8,005,463 topics. Date: Monday, 18 November 2024 at 04:02 AM

What I Learnt From Building My First App - Programming - Nairaland

Nairaland Forum / Science/Technology / Programming / What I Learnt From Building My First App (2633 Views)

Building My First Game / Things I Wish I Knew Before Releasing My First App / Building My First Ios App. I Will Upload Videos Of My Progress Daily (2) (3) (4)

(1) (Reply) (Go Down)

What I Learnt From Building My First App by kncokolo: 10:35am On Jul 20, 2015
I've copied and pasted most of this from my blog post, so if I've broken the rules somewhere, so be it. I just thought I'd share my experience for anyone who might be interested.

28 days — that’s how long it took me. From the day I stopped following Stanford’s CS193P course, to submission. Granted, I had already envisioned the idea I had for my app prior to that, but 28 days ago was when I first started building. I’ve learnt a lot of things along the way, things that I think you can’t actually learn unless you build something so this post is going to be about those things. Obviously I can’t include everything, as I’m sure there are things that I’ve learnt that I don’t even realise yet but I’ll just try to list the things that stand out to me.

Simple? What does that mean?

When I set out to make this app, studyBreak, I conceived of it as a simple timer. Its functionality is similar to a Pomodoro timer but in building it I discovered that the word simple, as far as programming goes is quite a complex concept. What is simple? Sure enough, the concept for my app seemed simple but all the extra functionality that I wanted to put in it, all the ways and tweaks I could think of that would make my app better, made it anything but simple. It’s a struggle to keep things simple, for me at least. It’s a struggle to curb my ambition and tell myself, that that feature I want isn’t unnecessary, that in fact the app would do better without it. During the past four weeks, I’ve learnt that any app can be as simple or as complicated as you make it. It’s up to you to decide where on that spectrum you want to be and I think one learns with time where one should be on that spectrum. One thing that I can say that I’ve found to be true, is that less is more. Take Apple & Google for example. Much of their success is based on minimalism and simplicity — that’s for a reason, and I became acquainted with that over the past 28 days. I can always add extra features to my app if need be, but making something that is complicated less so, is more difficult.

Object Oriented Programming Takes Getting Used To

Building things so that they are objects that function ‘blindly’ takes some getting used to. I think that stems mostly from getting used to how to think and design in those terms. This hampered the design of my app but as I built I became more used to it and it came more naturally to me. The more object oriented I tried to be in my programming, the better my app functioned and the easier it became it to continue building. This is something that I can’t really describe well but when you start building something you’ll see it for yourself.

Debugging Feels Different to Programming

I’m sure you’ve heard it before that programmers spend most of their time debugging. I’d estimate that during the past four weeks I’ve spent between 30-40% of my time debugging. Debugging isn’t very difficult when you’re working with just one class, but once you start building and app and you have several classes, things change. Most of the bugs I encountered were to do with the logic of my program — I’d made an incorrect assumption somewhere, and I’d have to adjust things accordingly. However, doing that had a ripple effect throughout the program and I’d have to start rethinking the logic of other parts of my program to accommodate the changes I made to fix that initial bug. Again, object oriented programming helps here. The more isolated and self sustaining your classes are, the less this is of a problem.

There’s a major difference in the feel of debugging to building a program. When you’re designing, you start out with an initial problem you’re trying to solve. You have a blank canvas and the ideas flow in. You’re optimistic about how you want to solve that problem and every thing you come up with seems like a good idea. But once you start coding, you realise that they aren't all good ideas, and instead of solving the fundamental problem you set out to solve, you get bogged down solving all these little problems of your own creation. Debugging can also be very draining, especially when you spend hours trying to figure something out without making any progress. It’s tough, but it’s something you just have to live with.

Good planning is the best gift you can give yourself

If you want to save yourself time on debugging, spend more time planning. If you've followed my blog posts, you can see I didn’t spend a lot of time planning. This is partly because I already had a good idea of how I wanted my app to be, but also because I felt like I would be able to plan better if I could visualise the app better, which I would be able to do once I started building. However, everything I failed to plan properly in the planning stage, ended up being built into my app as a problem. Did I do things the wrong way? Maybe. But I do still believe in the value of having a good visualisation of the product to be able to help in improving the product.

Google (and stack overflow) is your friend

I guess this goes without saying, but I feel like I have to say it. 90% of the problems I encountered, Google had the answer to. The only problems that Google seemed to not have the answers to were the extremely new ones; ones related to using beta software.

DON’T USE BETA SOFTWARE!

If you’re an advanced programmer, fine go ahead. If you’re just starting out and you only have one primary machine, don’t upgrade to the betas. I made this mistake and looking back it just wasn’t worth it. Yes I can say that my app functions great on iOS 9, but iOS 9 isn’t out for a few months, so what’s the benefit of that? And the major cost of it was unexpected functionality. From migrating my code from Swift 1.2 to Swift 2.0, to Xcode 7 behaving differently to Xcode 6, I encountered problems and gave myself extra work from day one. Then when I finished my app, I realised I couldn’t even submit it to the app store from Xcode 7, so I had to go back to Xcode 6, which I realised I could no longer use on my system because it is incompatible with El Capitan. To cut a long story short, DON’T USE BETA SOFTWARE, unless you have specifically good reason to do so, and you’re not using it on your primary system.

Pace yourself

I was very ambitious when I started this project and I wanted to blaze through it, which I did. The problem is that after about 3 weeks of working on it for several hours every day, I started to feel a little burnt out. Debugging has a lot to do with that, but I was starting to feel like I didn’t want to code at all. Like I didn’t even want to look at a screen. I picked up a book, an actual paperback novel (The Plague by Albert Camus) and I went outdoors somewhere nice and just read. It refreshed me, but it wasn’t enough. There were days when I felt like I just couldn’t think straight or like every line of code I wrote was trash. You can overdo it. I did, and I know for my next project I’ll take it easier.

Keep Going When You Feel Like Giving Up

This sounds like a contradiction to the previous point, but it isn’t. Breaks are good, and pacing yourself is good, but never give up. Even in the face of a problem that you feel like you can’t overcome, just keep going. What does a computer scientist do? A computer scientist uses computers to solve problems. Let me repeat, solve problems. Whenever you encounter a new problem, treat it as just that — a new problem. Isolate it, identify and quantify it as a distinct problem, then figure it out. Even if that means breaking it down into even smaller problems, that’s what you do, because that’s what it takes to succeed. Maybe it turns out that a particular problem will take too much time to solve, so it becomes something you have to work around, but never quit because of an obstacle you encounter, just keep going.

It’s a learning process

I mentioned in one of my video posts that I’m currently learning Swedish, and that this has helped me in building my app. It’s helped me because when you learn a new language, if you try to understand absolutely everything that is said you’ll fail miserably. You’ll get demoralised and you’ll give up. You just have to accept it as a fact that you won’t understand everything, but if you at least try to pick up on the things you do understand and follow the gist of things, then you can make progress. This applies to programming in the sense that, if you feel lost, sometimes it’s best to just accept it and keep going — things often start to make sense later. Following the CS193P course, there were a lot of things that I didn’t understand while doing it, such as extensions, closures, computed variables & optionals. I ended up making use of all of those things in my app. I encountered problems, and then I realised that those things were created specifically to solve the problems I had. Even now, there’s a ton of things I don’t know and throughout building my app I kept referring to the documentation and to Google. You’re always going to be learning if you’re a programmer, so accept it and get used to it.

There’s a lot more to building apps than just programming

If you’re working with graphic designers, web developers and marketers then that’s great, there are a lot things they can do for you. Even better if you have those skills yourself, but if you don’t, you’ll have to learn them. As well as building my app I also had to design the app icon, make the screenshots for the app store, write a description for the app, create a website and give it a good title. You won’t learn most of these things in many of the free programming courses that you might take online so it’s good to know that you’ll have to deal with them at some point.

And that’s it! This is a long post and even then I’m sure there are things that I’ve left out, but I’ve really tried to cover everything that comes to mind. Building an app turned out to be easier in some ways than I anticipated but also more difficult in many others. All in all, it has been a fulfilling process and as I wait for my app to be reviewed I feel a sense of accomplishment as a programmer that I could only feel having built something of my own from scratch. To all you learners out there, I say this to you: build something, it’s definitely worth it!

For those interested, my blog - http://learnscode.kenechi.org & my daily video posts - https://www.youtube.com/playlist?list=PLZ-jzXxkMmVM-DBxYGa8Yql6xBOCdhTUX.

12 Likes 2 Shares

Re: What I Learnt From Building My First App by syllas007: 4:14pm On Jul 27, 2015
Kudos brova....wanna start progranmming but what I want to learn is creating apps and building softwares...pls help a brova out...thanks man
Re: What I Learnt From Building My First App by kncokolo: 3:32pm On Aug 22, 2015
syllas007:
Kudos brova....wanna start progranmming but what I want to learn is creating apps and building softwares...pls help a brova out...thanks man

Check out the CS106A videos on YouTube, that's a very good place to start. Also CS193P -- those are the two courses I followed. The rest I learnt through Google & Stackoverflow
Re: What I Learnt From Building My First App by Stconvict(m): 1:44am On Aug 23, 2015
Nice write-up. I totally agree with you on the debugging aspect. Humongous brain killer!
I can assure you apps are easier to debug, switch to my lane and you'd spend half of your life debugging the inner parts of a game engine and the rest feeling miserable.
Debugging is killing the fun of discovery and creativity. Plugging in assorted libraries, refactoring codes, writing build scripts, etc. all of these activities that contribute nothing to the logic of the application actually take most of our time. But we still have to do it anyway.
Beware newbies!
@kncokolo BTW, what school are you taking your CS courses?
Re: What I Learnt From Building My First App by tociano009(m): 8:52pm On Aug 25, 2015
Kudos
Re: What I Learnt From Building My First App by elwcqdgui(m): 2:19pm On Aug 26, 2015
My name is Emmanuel, a resident in lagos state nigeria. i read computer engineering--HND. i want a professional programmer to merge with me in developing what i called the hottest application software. this idea was conceived by divine inspiration of God. pls feel free to reach me on 08161813454. or whatsapp me. thanks
Re: What I Learnt From Building My First App by kncokolo: 10:58am On Aug 28, 2015
Stconvict:
Nice write-up. I totally agree with you on the debugging aspect. Humongous brain killer!
I can assure you apps are easier to debug, switch to my lane and you'd spend half of your life debugging the inner parts of a game engine and the rest feeling miserable.
Debugging is killing the fun of discovery and creativity. Plugging in assorted libraries, refactoring codes, writing build scripts, etc. all of these activities that contribute nothing to the logic of the application actually take most of our time. But we still have to do it anyway.
Beware newbies!
@kncokolo BTW, what school are you taking your CS courses?

I'm self taught. I learnt everything I know about computer programming online!
Re: What I Learnt From Building My First App by kinghacker(m): 8:36pm On Sep 06, 2015
Some People Will Be Thinking It Is So Hard To Program Or Hack, Dear I Just Need Hard Work And You Have To Be-live In Your Self i Can Teach You Programming, Website Desing tongue cool
Re: What I Learnt From Building My First App by Luka316(m): 4:17am On Sep 08, 2015
@kncokolo... please i have been following the lectures as you advice(i downloaded them on youtube) - CS106A
but i need help... i dont know how to go about it... who do i met and how do i solve chellenges i met while learning....
secondly, assignment can you help me(so that i can submit them to you for you to assess me? pls)

i reaaly need you to help me

thank you
nairaland for life

1 Like

Re: What I Learnt From Building My First App by ipain: 6:26pm On Sep 18, 2015
kncokolo:


I'm self taught. I learnt everything I know about computer programming online!
how long did it take you?
Re: What I Learnt From Building My First App by tjaytb: 7:01am On Sep 19, 2015
Luka316:
@kncokolo... please i have been following the lectures as you advice(i downloaded them on youtube) - CS106A
but i need help... i dont know how to go about it... who do i met and how do i solve chellenges i met while learning....
secondly, assignment can you help me(so that i can submit them to you for you to assess me? pls)

i reaaly need you to help me

thank you
nairaland for life


Brov.... start your jpurney from QBasic and move to VB den you'll ve prepped ur brain for the world of programming... 08137228535. I can help buh in my own time brov. No disrespect
Re: What I Learnt From Building My First App by kncokolo: 12:48pm On Sep 22, 2015
ipain:
how long did it take you?

About 6 months from no experience and/or knowledge to having an app on the App Store
Re: What I Learnt From Building My First App by makavele: 2:32am On Sep 23, 2015
Luka316:
@kncokolo... please i have been following the lectures as you advice(i downloaded them on youtube) - CS106A
but i need help... i dont know how to go about it... who do i met and how do i solve chellenges i met while learning....
secondly, assignment can you help me(so that i can submit them to you for you to assess me? pls)

i reaaly need you to help me

thank you
nairaland for life

then u do not have the passion . . .
let me give u an experience . .. the first time i started with PHP, i skipped to the middle of the course and saw an exercise
"WRITE A COOKIE THAT EXPIRES IN ONE WEEK"
I sure do know what cookies are, but how do i write one, where do i start from . . hell, i ddnt even know how to print a Hello world in php
but along the course, when i got to sessions etc . . the same exercise was slaughtered under minutes.
so just keep following the course, u will learn

unless of course,

u're forcing yourself;

or ur a dummy, lol

even at that, there are crash courses for dummies, lol
Re: What I Learnt From Building My First App by 53cur3m0d3(m): 10:47pm On Sep 27, 2015
Inspiring story.

Currently looking for a Mobile Application Developer within Ile-Ife to join I and my partner on a hands-on project. Pls send me a mail at solarjay2006@gmail.com if you wish to join the team.
Re: What I Learnt From Building My First App by kncokolo: 1:07pm On Oct 27, 2015
Hey I've developed a native Igbo Keyboard Extension. It's currently available on the App Store https://itunes.apple.com/app/id1050448890

1 Like

Re: What I Learnt From Building My First App by LooneyLester: 12:00pm On Dec 29, 2023
Chat me up at BBM 7A9647DA
Re: What I Learnt From Building My First App by Kingsleyawoke: 4:43pm On Dec 30, 2023
Bravo for this write up... honestly, i got a lot of encouragement here
kncokolo:
I've copied and pasted most of this from my blog post, so if I've broken the rules somewhere, so be it. I just thought I'd share my experience for anyone who might be interested.

28 days — that’s how long it took me. From the day I stopped following Stanford’s CS193P course, to submission. Granted, I had already envisioned the idea I had for my app prior to that, but 28 days ago was when I first started building. I’ve learnt a lot of things along the way, things that I think you can’t actually learn unless you build something so this post is going to be about those things. Obviously I can’t include everything, as I’m sure there are things that I’ve learnt that I don’t even realise yet but I’ll just try to list the things that stand out to me.

Simple? What does that mean?

When I set out to make this app, studyBreak, I conceived of it as a simple timer. Its functionality is similar to a Pomodoro timer but in building it I discovered that the word simple, as far as programming goes is quite a complex concept. What is simple? Sure enough, the concept for my app seemed simple but all the extra functionality that I wanted to put in it, all the ways and tweaks I could think of that would make my app better, made it anything but simple. It’s a struggle to keep things simple, for me at least. It’s a struggle to curb my ambition and tell myself, that that feature I want isn’t unnecessary, that in fact the app would do better without it. During the past four weeks, I’ve learnt that any app can be as simple or as complicated as you make it. It’s up to you to decide where on that spectrum you want to be and I think one learns with time where one should be on that spectrum. One thing that I can say that I’ve found to be true, is that less is more. Take Apple & Google for example. Much of their success is based on minimalism and simplicity — that’s for a reason, and I became acquainted with that over the past 28 days. I can always add extra features to my app if need be, but making something that is complicated less so, is more difficult.

Object Oriented Programming Takes Getting Used To

Building things so that they are objects that function ‘blindly’ takes some getting used to. I think that stems mostly from getting used to how to think and design in those terms. This hampered the design of my app but as I built I became more used to it and it came more naturally to me. The more object oriented I tried to be in my programming, the better my app functioned and the easier it became it to continue building. This is something that I can’t really describe well but when you start building something you’ll see it for yourself.

Debugging Feels Different to Programming

I’m sure you’ve heard it before that programmers spend most of their time debugging. I’d estimate that during the past four weeks I’ve spent between 30-40% of my time debugging. Debugging isn’t very difficult when you’re working with just one class, but once you start building and app and you have several classes, things change. Most of the bugs I encountered were to do with the logic of my program — I’d made an incorrect assumption somewhere, and I’d have to adjust things accordingly. However, doing that had a ripple effect throughout the program and I’d have to start rethinking the logic of other parts of my program to accommodate the changes I made to fix that initial bug. Again, object oriented programming helps here. The more isolated and self sustaining your classes are, the less this is of a problem.

There’s a major difference in the feel of debugging to building a program. When you’re designing, you start out with an initial problem you’re trying to solve. You have a blank canvas and the ideas flow in. You’re optimistic about how you want to solve that problem and every thing you come up with seems like a good idea. But once you start coding, you realise that they aren't all good ideas, and instead of solving the fundamental problem you set out to solve, you get bogged down solving all these little problems of your own creation. Debugging can also be very draining, especially when you spend hours trying to figure something out without making any progress. It’s tough, but it’s something you just have to live with.

Good planning is the best gift you can give yourself

If you want to save yourself time on debugging, spend more time planning. If you've followed my blog posts, you can see I didn’t spend a lot of time planning. This is partly because I already had a good idea of how I wanted my app to be, but also because I felt like I would be able to plan better if I could visualise the app better, which I would be able to do once I started building. However, everything I failed to plan properly in the planning stage, ended up being built into my app as a problem. Did I do things the wrong way? Maybe. But I do still believe in the value of having a good visualisation of the product to be able to help in improving the product.

Google (and stack overflow) is your friend

I guess this goes without saying, but I feel like I have to say it. 90% of the problems I encountered, Google had the answer to. The only problems that Google seemed to not have the answers to were the extremely new ones; ones related to using beta software.

DON’T USE BETA SOFTWARE!

If you’re an advanced programmer, fine go ahead. If you’re just starting out and you only have one primary machine, don’t upgrade to the betas. I made this mistake and looking back it just wasn’t worth it. Yes I can say that my app functions great on iOS 9, but iOS 9 isn’t out for a few months, so what’s the benefit of that? And the major cost of it was unexpected functionality. From migrating my code from Swift 1.2 to Swift 2.0, to Xcode 7 behaving differently to Xcode 6, I encountered problems and gave myself extra work from day one. Then when I finished my app, I realised I couldn’t even submit it to the app store from Xcode 7, so I had to go back to Xcode 6, which I realised I could no longer use on my system because it is incompatible with El Capitan. To cut a long story short, DON’T USE BETA SOFTWARE, unless you have specifically good reason to do so, and you’re not using it on your primary system.

Pace yourself

I was very ambitious when I started this project and I wanted to blaze through it, which I did. The problem is that after about 3 weeks of working on it for several hours every day, I started to feel a little burnt out. Debugging has a lot to do with that, but I was starting to feel like I didn’t want to code at all. Like I didn’t even want to look at a screen. I picked up a book, an actual paperback novel (The Plague by Albert Camus) and I went outdoors somewhere nice and just read. It refreshed me, but it wasn’t enough. There were days when I felt like I just couldn’t think straight or like every line of code I wrote was trash. You can overdo it. I did, and I know for my next project I’ll take it easier.

Keep Going When You Feel Like Giving Up

This sounds like a contradiction to the previous point, but it isn’t. Breaks are good, and pacing yourself is good, but never give up. Even in the face of a problem that you feel like you can’t overcome, just keep going. What does a computer scientist do? A computer scientist uses computers to solve problems. Let me repeat, solve problems. Whenever you encounter a new problem, treat it as just that — a new problem. Isolate it, identify and quantify it as a distinct problem, then figure it out. Even if that means breaking it down into even smaller problems, that’s what you do, because that’s what it takes to succeed. Maybe it turns out that a particular problem will take too much time to solve, so it becomes something you have to work around, but never quit because of an obstacle you encounter, just keep going.

It’s a learning process

I mentioned in one of my video posts that I’m currently learning Swedish, and that this has helped me in building my app. It’s helped me because when you learn a new language, if you try to understand absolutely everything that is said you’ll fail miserably. You’ll get demoralised and you’ll give up. You just have to accept it as a fact that you won’t understand everything, but if you at least try to pick up on the things you do understand and follow the gist of things, then you can make progress. This applies to programming in the sense that, if you feel lost, sometimes it’s best to just accept it and keep going — things often start to make sense later. Following the CS193P course, there were a lot of things that I didn’t understand while doing it, such as extensions, closures, computed variables & optionals. I ended up making use of all of those things in my app. I encountered problems, and then I realised that those things were created specifically to solve the problems I had. Even now, there’s a ton of things I don’t know and throughout building my app I kept referring to the documentation and to Google. You’re always going to be learning if you’re a programmer, so accept it and get used to it.

There’s a lot more to building apps than just programming

If you’re working with graphic designers, web developers and marketers then that’s great, there are a lot things they can do for you. Even better if you have those skills yourself, but if you don’t, you’ll have to learn them. As well as building my app I also had to design the app icon, make the screenshots for the app store, write a description for the app, create a website and give it a good title. You won’t learn most of these things in many of the free programming courses that you might take online so it’s good to know that you’ll have to deal with them at some point.

And that’s it! This is a long post and even then I’m sure there are things that I’ve left out, but I’ve really tried to cover everything that comes to mind. Building an app turned out to be easier in some ways than I anticipated but also more difficult in many others. All in all, it has been a fulfilling process and as I wait for my app to be reviewed I feel a sense of accomplishment as a programmer that I could only feel having built something of my own from scratch. To all you learners out there, I say this to you: build something, it’s definitely worth it!

For those interested, my blog - http://learnscode.kenechi.org & my daily video posts - https://www.youtube.com/playlist?list=PLZ-jzXxkMmVM-DBxYGa8Yql6xBOCdhTUX.

(1) (Reply)

Are You New To Programming? Want To Learn But Do Not Know How? Come In! / How can a user recover BKF file? / The 19 Yr Old iOS Developer Who Turned Down An Apple Job Offer, Motivational.

(Go Up)

Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health
religion celebs tv-movies music-radio literature webmasters programming techmarket

Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)

Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 86
Disclaimer: Every Nairaland member is solely responsible for anything that he/she posts or uploads on Nairaland.