Академический Документы
Профессиональный Документы
Культура Документы
about:reader?url=https://www.codementor.io/le...
codementor.io
Intro
Whats the best way to learn how to code?
How to become a programmer
How to build an app
These are common questions asked everyday by beginners who
are eager to learn how to code. No doubt youve already googled
something along those lines and read enough articles/answers to
1 of 30
about:reader?url=https://www.codementor.io/le...
2 of 30
about:reader?url=https://www.codementor.io/le...
Python or Ruby as your first language (dont get too hung up on the
language, youll never get started). If you need learning resources,
weve curated several guides you can check out:
Learn Python
Learn Ruby on Rails
Learn JavaScript (Always learn JavaScript before learning
frameworks such as AngularJS or React )
Learn iOS Development
Learn Android Development
Several of youd get to this point:
3 of 30
about:reader?url=https://www.codementor.io/le...
Prerequisites
Most apps would need a database, so if youre going to be building
your own app by yourself (ergo the front and back end), youll likely
have to know a database query language (usually SQL or
4 of 30
about:reader?url=https://www.codementor.io/le...
about:reader?url=https://www.codementor.io/le...
6 of 30
about:reader?url=https://www.codementor.io/le...
Now that youve hopefully figured yourself out, its time to pick an
idea to build. Start simple.
7 of 30
about:reader?url=https://www.codementor.io/le...
8 of 30
about:reader?url=https://www.codementor.io/le...
Think about what your app should be able to do and list them out. If
you end up listing a bunch of things, take a better look and ask
yourself if this app REALLY needs, for example, Facebook login to
work? Does it REALLY need to upload data to some cloud to work?
Its great to have a dream project with awesome specs, but right
now the point is not building something thats complete with a lot of
cool features. Keep in mind that no app is ever complete, and
everything starts out simple.
Dont ever try building an all-in-one app. Dont go there. Ive
seen it happen even in a professional environment, and the result is
a lot of pain and little progress.
Unless you have an iron will or you really love challenges, youll just
end up frustrated and discouraged if your first project is too hard to
build. Youre a beginnerthe point right now is to have fun. Fun is
the most efficient way to learn.
So, take a look at the list of functions youve made, and if its too
long, start crossing out functionalities your app can work without.
Remember, this is your version 1 and you should just keep things
simple. Focus on things that will allow the app to perform whatever
its supposed to doeverything else can be left for a different
project.
9 of 30
about:reader?url=https://www.codementor.io/le...
10 of 30
about:reader?url=https://www.codementor.io/le...
(CC License)
Nothing is quicker than a pen & paper. By now you should have a
pretty solid idea of what your app should do, so sketch out the
wireframe of your apps UI (user interface). Where buttons should
be located, what the purpose of that button is, and so on.
Write down notes and flesh out how the app should work. Youre
still in the brainstorming stage, so change stuff around until youre
somewhat satisfied with it.
Remember, keep things simple. If you shortened your list from
step 2, stick to only sketching functions listed theredont get
carried away. If you cant help yourself, then sketch 2 versions: a
basic version and the final version in your dreams.
All in all, this is not the final look but rather just a step to help you
get a firmer grasp of your app.
about:reader?url=https://www.codementor.io/le...
All right. You have a good idea of what your app will look like, what
every element should should do, and how users can interact with
your app. Now its time to figure out your apps UI flow. Meaning,
how a user should use your app from start to end, every step they
have to take and every scenario they might encounter. Try to
consider every use-case.
(CC License)
Include all the actions your user can take in the flowchart. For
example, if your app requires users to log in, how do they create an
account? What if users forgot their password? What if they inputed
the wrong password? What should a user be able to do on each
interface (add new list item > save; edit > save/delete)? So on, so
forth. This is done the quickest with a pen and paper.
Again, as your app should be fairly simple, your diagram should not
12 of 30
about:reader?url=https://www.codementor.io/le...
be too massive.
13 of 30
about:reader?url=https://www.codementor.io/le...
In addition, if you have any future features planned, this is the time
to plan them into your database. Here is a nice article to check out
while you design a database.
Advanced
If the app youre planning is going to interact with a server (e.g. if
users need to create an account and login to your app) or if your
app is going to interact with an API (e.g. youre trying to get
information from Yahoo! Weather ), then its likely a good idea to
draw a sequence diagram for you to get a better idea of how the
processes should operate.
14 of 30
about:reader?url=https://www.codementor.io/le...
(from Wikipedia)
Step 6: UX Wireframes
Okay, you have the back-end planned. Now, its time to plan your
front-end.
(CC License)
15 of 30
about:reader?url=https://www.codementor.io/le...
Since humans are mostly visual creatures, youd have a better time
understanding what you should do if you have a visual of every
view youll be coding. However, if youre like me and your drawing
is so messy you can hardly understand the obscure piece
ofcough masterworkyouve created, its naturally unwise to
proceed with the this step through abusing your poor artistic
braincells.
Luckily, many wireframing and mockup tools exist online to help
you plan your UX/UI flow (e.g. Gliffy, Mockflow, Framebox,
Wireframe.cc, Invisionapp).
Step 6.5 (Optional): Design the UI
This is an optional step, but if you intend to specialize in front-end
development or if you care a lot about what your app is going to
look like to the point where a prettier app would motivate you to
code, definitely go ahead and design the app so all those wireframe
UI elements can be replaced with nicer-looking ones.
If you love designing, youre probably going to design the app
before you start anywaymaybe you already designed it during
step 2.
If you dont do design but still care about how your app will look
like, consider using elements from UI kits. Here are a few resources
for UI elements (note: Photoshop required):
16 of 30
about:reader?url=https://www.codementor.io/le...
UI Cloud
Graphicburger
UI Dock
For games:
Spriters Resource
Dont get too hung up on the apps appearance, however. Right
now you should be focusing on building an apps functions instead.
17 of 30
about:reader?url=https://www.codementor.io/le...
Since everyone is building a unique app, not every use case is the
same. Thus, you have to judge when to use an existing solution
and when to build your own, and youll get better at doing so with
experience.
18 of 30
about:reader?url=https://www.codementor.io/le...
Most of the time it is a good idea to just use an existing solution for
large functions such as handling real-time syncing (e.g. Firebase),
networking/routing (e.g. AFNetworking for iOS apps),
authentication, and UI-related components (e.g. flipboard or
pinterest-esque app).
Many online databases exist for you to search for backend-related
components/packages/gems/etc, but you need to be careful with
your evaluation of what other people have writtendont just use
them blindly. Youre hopefully not going to be building anything too
complex right now, so right now youre probably not going to need
components other people have written.
At any rate, the best way to start out is to study what other
developers have done before you and learn the logic behind their
decisions. Github is your best friend.
19 of 30
about:reader?url=https://www.codementor.io/le...
If youre building a React app, you can also check out starter kits
and existing Flux implementations. HTML5Boilerplate and
Bootstrap are popular front-end templates for your app. More often
than not, boilerplates use Gulp or Grunt for task management.
Since youre likely going to be using some existing components or
solutions, you should also install bower for dependency
management (npm for those using Node.js and CocoaPods for iOS
developers). Dont worrymost of the time these tools come with
tutorials that will teach you how to install them.
20 of 30
about:reader?url=https://www.codementor.io/le...
Yes! Youre ready to build the app now! Here are some tips you
should keep in mind when building your app.
Checklist
about:reader?url=https://www.codementor.io/le...
Or god forbid:
22 of 30
about:reader?url=https://www.codementor.io/le...
More or less.
So, its a good idea to start small and get into the habit of doing
Test-Driven Development (TDD), especially since youre starting
fresh and building something simple.
Youre not on some deadline with a project managers pitchfork
behind your back now, are you?
For tips on unit testing patterns, you can check out this article.
Another tip to keep in mind is to avoid asserting too much
trivialities.
Many testing tools are available for you to choose from, such as
Jasmine or Karma for JavaScript, Rspec for Ruby, PyTest for
Python, PHPUnit for PHP, Quick as an alternative to xCTest for iOS
development, or whatever tool you feel would work for you.
In addition, if youre building an iOS or Android app, its a good idea
to check out Crashlytics.
Use Git
Git is a version control system and a full-fledged repository with
23 of 30
about:reader?url=https://www.codementor.io/le...
As a beginner, youll feel like that hamster more often than not.
Youre not alone. Sometimes, all you have to do take a break and
let the issue simmer so you can clear your mind.
24 of 30
about:reader?url=https://www.codementor.io/le...
If this still doesnt work, here are some ways to unstick yourself:
Google
I mentioned Google-fu in step 7, but let me stress again that
learning how to Google is an important skill all programmers need
to acquire. If you get stuck on a bug or you dont know why your
code isnt working, its a good idea to Google.
Ask on StackOverflow
Youd probably notice that your google results will mostly point to
questions and answers on StackOverflow. If you still cant find a
solution to your problem after googling your ass off, then you can
try posting a question on StackOverflow.
Remember to show that youve done your research in your
question youre more likely to get an answer that way.
Alternative: Find a Mentor
Some people will say that StackOverflow isnt beginner-friendly
because beginners dont know how to phrase their questions. But
what if you dont even know what your problem is?
25 of 30
about:reader?url=https://www.codementor.io/le...
about:reader?url=https://www.codementor.io/le...
Final Tip
Programmers make mistakes all the time, so dont feel discouraged
when you cant even pass a test youve written or if youre
constantly tripping over yourself. I mean, think about iOS8, Android
Lollipop, or some app you love to use. Surely even the most mature
apps out there still have bugs, so dont assume you can build the
most perfect, bug-free app out there (of course, this doesnt mean
you should set low standards for yourselfyou should always strive
to build quality apps).
In addition, its very common for you to spend hours or even days
on one thing and to still have difficulty making it work as you want.
If programming new features quickly were easy, the world wouldnt
need new programmers. Hell, wed probably be on a flawless
iOS100 now and living in a digitalized world like to one in the
Matrix.
Thus, a lot of times, youd hear the term make mistakes whenever
people are encouraging you to start building things. They mean it.
One thing youll have to accept as a programmer is that youre not
going to be a badass coding machine who can conjure up features
in a snap. Youll going to be failing a lot and thats ok.
Again, remember youre a beginner, so a lot of things are going to
be inevitably difficult at first. Youre going to be spending a lot of
time on something that you think should be simple and it will seem
27 of 30
about:reader?url=https://www.codementor.io/le...
Happy Coding!
Author
Yi-Jirr Chen
28 of 30
about:reader?url=https://www.codementor.io/le...
David Farfara
Server (.Net) & Client (AngularJS) side technical leader.
An effective full stack .Net + client side leader and technical
Architect of software projects from proof of concept stages to client
delivery. Who...
Hire this Expert
29 of 30
about:reader?url=https://www.codementor.io/le...
30 of 30