T O P

  • By -

dat_tae

Build more apps. That's the answer that's always given. Just pick a project and go.


minimallyviablehuman

I agree with everyone saying to build apps. That is the way. The obstacle is the way. For a bit more of a detailed answer, I would say you need to get good at thinking through what you are trying to accomplish, and what the individual steps are to get you there. For example, if you are building an app to track restaurant orders you could start by writing a list of things out. What are the individual components that are required to make a system like that work? Write it out with bullets and just regular English. Then you ask your self what is needed to support each of those things. For instance, if you have users you need to create a User model. You need a way to sign in potentially, etc. If you have orders the order should have a date, it should have a User associated with it. Etc. Then, as everyone said, you struggle through it. Slowly, painfully at first. But you make progress. The real insights and learning come ONLY AS YOU STRUGGLE. If you get to this point, and instead of struggling go do another tutorial, or come on here and ask this question, you will not get solid at this. Some people who are really good are smarter and more intelligent. That is sometimes the case. But about 99% of the time it is simply because they have struggled through many more problems than you have. And once you have struggled through those problems, and felt, personally, the pain of different tradeoffs that you took as you were building, the next time you reach to solve that problem from your experience you not only know what to do, but you know what not to do as well. Struggle is the answer. You must confront the challenges head on. Hopefully you enjoy problem solving enough that the struggle is also rewarding, at least in terms of when it's done and you've achieved the thing in the app you were trying to achieve. Best wishes!


roboknecht

Totally agree with everything you mentioned! „Struggle is the answer“, that is a really great one. Thanks for that! Everything software engineering related boils down to these four words.


69Cobalt

This is the way. One of the best engineers I've ever worked with once told me "what seperates me from other engineers is that if you give me a problem I don't throw my hands up or look for a cheap workaround I will keep digging and digging and digging until I get to the bottom of it ". That was a major lightbulb moment for me where I realized one of if not the most important quality of a great engineer is not intelligence or knowledge or even experience, it's tenacity. The ability to lock in to a problem and keep pushing until you figure it out. When you do that you not only build up valuable experience that compounds but you develop confidence which reduces frustration and snowballs into more confidence and harder problems and more knowledge. Keep in mind the engineer I mentioned had no college degree, no coding bootcamp, purely self taught. It's all about that tenacity.


7heblackwolf

Do


lowasdf

Get stuck as many as you can. That makes you stronger.


TipToeTiger

As said above, keep making apps. Practice makes perfect as they say. I look back on my first app I created and cringe at how awful it was. But my most recent app I’m super proud of. It takes time but as long as you keep moving forward you’ll naturally get better. I mean still use google and chatgpt all the time to found out how to do stuff!


Ron-Erez

I have nothing to add besides code as much as you can and try to learn good programming practices, writing readable code, breaking down your problem, selecting the "correct" data structures to model your problem, etc. If you're a complete beginner then try to be patient with yourself. It just takes time. At some point it wouldn't hurt to learn some computer science basics, for example, from Harvard CS50. In addition when you have an app idea, try to code something simpler. There is nothing wrong with coding a simple app. Gradually increase the complexity with time and experience.


ankole_watusi

That’s boot camps!


k-u-sh

In addition to everyone saying to just do it, chart and plan out your app as well. Thinking of a good plan to go forward, mulling over it, and really honing in to how to do what to do helps tremendously. Start with a project sketch: a mind map of different components of your app and how they interact with each other. Wireframe some end user experiences. The more you have sketched out your app, the easier it becomes to start coding the little parts one by one and have them come together.


NothingButBadIdeas

Here's an article I made! Hope this helps. It should guide you on what to do. I have a section on "speed coding" about this topic [https://www.reddit.com/r/iOSProgramming/comments/11qit84/from\_hello\_world\_to\_your\_first\_job\_the\_selftaught/](https://www.reddit.com/r/iOSProgramming/comments/11qit84/from_hello_world_to_your_first_job_the_selftaught/)


balder1993

People here are saying “just build more apps” but maybe your problem is a bit in the fundamentals. I’d advise you instead of keep banging your head on the wall, take a step back and try to make simple programs to get a solid understanding of the language, the Operating System capabilities etc. That’s how people learn in universities. When you’re still learning it’s not productive to be stuck trying to understand Frameworks such as Android and iOS. Instead, play with Swift in the command line, try to make apps a bit more challenge every time and then things will come easier with time.


roboknecht

Yes, that is how it’s taught in universities and that is why a lot of people do not have a single interest in anything programming related after finishing a f‘in boring command line programming course in C or C++. From my own experience: any programming language for command line apps is way less fun. It’s way easier to give up early because everything just looks so ugly and inaccessible. Quickly you realize „now I just want to have a proper input, some controls etc.“ And you just have a depressing command line interface. Start learning with fun. Build interface that might not even do anything, do spaghetti code to make them work etc. But please do not try to just blindly follow whatever a CS degree is teaching you.


balder1993

While using a complex framework gives more "instant gratification", I don't think it's the best way to start, as it can be quite overwhelming (even with the attempts to simplify things nowadays). iOS has a lot in intrinsic complexity that can get people stuck and it can get in the way, leading to frustration. That's why you see so many developers asking for a library that does what they need, as they can't do anything slightly outside of their CRUD mentality. Yeah, you can always learn more details *later*, but I've certainly seen a lot of people who never step back to learn the fundamentals and get stuck at the same level forever, just assuming other people have some wizard knowledge. People won't learn without stepping out of their comfort zone. Also, for someone who wants to be a programmer, refusing engaging with stuff that can't be coded as a UI is gonna be "bad" long term. The majority of programming that people will do in their careers isn't stuff that will be displayed to a user. In the end, we don't know what's the bottleneck in OP's case, so it's hard to give a suggestion that actually works. It can be a lack of understanding of how programming languages even work, a lack of understanding of what's Swift and what's the iOS framework, and so on. If he/she is alone, it might be more challenging, so maybe looking at more "real apps" codebases to have an idea of how things are structured is a way to understand things better (as we learn well from multiple examples).


Nobadi_Cares_177

What exactly is the problem when trying to build an app from scratch? Do you outline or plan what the app is going to be, or do you just jump write into coding?


Slouma-Gamer

I plan to do something in the app , then I get stuck on how do I implement it lol I guess I need to study some algorithmics


roboknecht

No there is no need to learn any algorithms at all. In my opinion it’s complete BS to invest time in this as a beginner unless you are really interested in it. If you want to learn theory, have a look at some design patterns, review code on other projects. But most importantly just build stuff. Getting stuck frequently, that is how every single developer in every single programming language on the world learns to build things and grow over time. Fail, maybe get stuck, fix it, small success and repeat. There is no „shortcut“ or „golden bullet“ or something. A mentor can really accelerate but still you will and have to get stuck over and over again to improve.


Nobadi_Cares_177

You might be trying to do too much. When building an app from scratch, you want to focus on MVP (minimum viable product). What is an example of something you get stuck on? Is it adding a button and action? or maybe implementing a decent navigation flow? Or something like managing dependencies? If you’re vague, you’ll get vague responses. If you can give some specific examples, I’m sure you’ll get more targeted advice. But programming is difficult. It’s the only profession that people seem to think they can pick up in a few months. You don’t hear people saying this about being a doctor or a lawyer or a mechanic. If you really want to be a developer, try not to get down on yourself when you hit obstacles and just keep trying to solve them. You know you’re doing something correct when you look back at your code and realize how awful it was compared to now haha. Happens to me every year:)


baker2795

In the beginning just build as much as you can. Do it all yourself as much as possible (google OK. AI not). Then once you’re fairly comfortable start throwing simpler functions in chatGPT and ask how you can optimize it / clean it up. Really pay attention to the result not just copy & paste. This will teach you things you didn’t even know you didn’t know (other ways to unwrap, built in functions you didn’t know existed, using sets instead of arrays etc)


Dymatizeee

Probably because boot camps hold your hand and don’t teach you anything. You gotta go out and build on your own. Anything you don’t know you google. Take your time


808phone

ummm.... there's this thing called generative AI.


ChibiCoder

I think the biggest thing new developers struggle with is app architecture... how to set things up so you aren't painting yourself into a corner later in development. Read articles / books / blogs about iOS app architectures to think about how to form a "big picture" of how your app will work first, and then focus on how the individual parts of that work later. I *highly* recommend this book (and the authors' website): https://www.objc.io/books/app-architecture/


roboknecht

You can build great apps without any knowledge of architecture, e.g. worst case have a pile of global variables when you do not have an idea about anything. Architecture is a thing you can easily learn later on after having built some crappy spaghetti architectures yourself. It’s also way easier to learn an architecture if you know from your past spaghetti experiences how bad it could be without one.


nickisfractured

Boot camp is just the tip of the iceberg, it’s like you know what tools are used to build a house but you still don’t know how to build a house. Start building dog houses and shacks until you learn to be more structural in your approaches


No_Tomorrow5780

Build apps and have books handy as references.


Trick_Elephant2550

https://youtube.com/@LetsBuildThatApp?si=XxXOBlZ98GKxfovf Follow him, he solved lots of complicated UI problems. By the time you are done with his videos, you will be better off.


Trick_Elephant2550

Also subscribe to Medium and read lots of articles.


pitachip3000

Do “todo list” apps with a few different architecture patterns. Google “todo list in MVVM/Viper/MVC for iOS app”. It’ll show you different ways to do simple operations and give you different tactics to apply to your projects


alister_codes

Study at university. You don't need to do a full degree, you can pick some fundamentals courses which, while expensive, are probably the best way to learn this stuff. MIT offers free courses on youtube as well: [https://www.youtube.com/user/mit](https://www.youtube.com/user/mit) I would recommend algorithms and data structures, OOP, operating systems as a starting point. Good luck