What kind of practices do you do when developing iPhone apps? For instance, do you write up a technical design document of any sort. Do you write down the design of your app at all? Do you implement a certain methodology agile/scrum/waterfall etc...? I'm just curious when working on projects like an iPhone app, what kind of best practices do people use or do people just go at it?
I've worked on a few iPhone apps, and I've found this workflow works pretty well:
Figure out what the app is going to do. Create a one sentence description of the app that embodies what you're trying to do. If you can't explain the core functionality in one sentence, people won't get it!
Create interface mockups for each screen of the app on paper, and then in Adobe Fireworks. Fireworks' native file format is PNG, so it's easy to create images for use in the actual app later.
Figure out how you're going to architect your app using Model-View-Controller and the other iPhone app design patterns (delegates, dataSources, etc...). Don't try to do something other than MVC. The whole SDK is built around MVC!
Start coding! I usually start with the bare functionality first. For a drawing app, I implement the drawing controller and the important drawing views (color picker, etc..) first. I back things up to an offsite SVN repository as I go using Versions (I haven't had much luck with the repository support in Xcode)
Distribute a beta version of the app to a group of AdHoc testers. This helps a lot. Getting the app in the hands of a few extra people really helps isolate usability issues and bugs that are hard for a single developer to find.
Repeat until satisfied and Apple approves :-)
I haven't done much with iPhone development, but its irrelevant. I wouldn't consider it any different from any other developmental process.
The process is different for each case, some have at it and others follow their development methodologies.
As one who is about to dabble in his first iPhone app, I don't think there is any one methodology that rules over any other. You can apply any of the techniques you mention to an iPhone app, just like any other development effort.
A key thing about iPhone apps, or any Apple related development effort, is that Apple sort of forces you to follow certain design guidelines. That is good in some ways (less to concern yourself with) and bad in others (restrictive).
Also, Objective-C and Cocoa Touch can also lend itself to certain ways of programming.
Now, specifically for me, as a sole developer, I will probably:
Jot down high level features of what I want to be included in the first version
Do an interface mockup (either on paper or with a software tool)
Jot down some key objects and functions (psuedo-code)
Set up a source control mechanism (I think this is key)
Start going at it
Possible repeat of any or all of 1-3 :-)
I prefer to start with small proof-of-principle projects to test out different capabilities of the device that I need for my final product. This is especially important on a mobile device like the iPhone, because hardware limits on memory, processing power, graphics, or display size can render some ideas impractical. It's best to know that your application won't work as you imagined after only a couple of days of playing around, rather than after a month of development.
John Geleynse and others at Apple advocate starting your design with a single sentence that describes your product and its intended audience, and building everything around that mission statement. I've found that this works extremely well for determining what features to incorporate or leave out of a product, particularly on the iPhone. Having a simple core product description at the center of your design is also extremely helpful when you need to explain this product to others in your later marketing efforts.
Aside from that, I've found that iterative development incorporating lots of testing and user feedback has worked for me on every platform I've developed for.
Related
I am working on an app for Android, but would like to have it ported in the future to iPhone and (if it seems to gain significant market share in the future) WP7/8.
I know nothing about any mobile platform other than Android. Should I be using C++ (NDK), Java, or something else to get as much portability as possible? I assume I will have to rewrite (or have someone rewrite) at lest part of it, but I would like to make as much of the codebase as possible portable.
Edit: It is a simple app that "scans" a barcode (camera) or has the number typed in, sends some information to a server, gets back some more info (probably in XML, but could be whatever works best) and displays it in a few simple screens.
Edit 2: The 4 parts I have, and would like to ideally make them portable are:
Scan a barcode (probably the hardest to make portable)
Allow entering a barcode number manually
Send and receive some custom data
Display a few screens (This can be in HTML, if I have an option to make it look "native", not like the browser window displaying a webpage it is)
For a non-trivial app that isn't a game, there are currently no mature solutions to this problem.
Tools like Titanium Mobile and PhoneGap are meant to help you do exactly what you want, but impose limitations on what your app can do and are so far at the cutting edge of development that they often introduce bugs of their own that you won't be able to fix. Additionally, you're at their developer's mercy when it comes to support for alternative platforms like WP7 or Blackberry. In some cases, these might be worth the risk, or you may get lucky, but you need to be wary before rushing to use them.
Often, the best technique is still just to develop independent codesbases. You can model them after each other in architectural terms, and if you do so it isn't typically that hard to translate between different platforms.
Another technique to aid in portability for many apps is to use embedded web browsers where it makes sense. This allows you design some of your views in HTML/CSS/Javascript rather than with native UI tools, and then just load them into the aforementioned embedded web browsers on each platform.
Depends on how many platforms you are aiming for.
I have some experience doing iPhone + Android. Honestly, I wouldn't spend too much time trying to learn a portability tool on top. I have done couple of apps (simple communication stuff + a light weight game) and my experience is so far - assumed you are familiar with both - it is far faster + easier to just write your app and then port it.
Besides the normal coding work, the most difficult tasks are to develop the app structure including the main classes and data structures - this you can copy basically 1 to 1 in terms of structure of course - not code.
Also since you will keep getting updates on different platforms like iOS (Android + Eclipse are a little slower it seems to come up with updates/upgrades), which make life easier all the time, you would most probably have a big disadvantage when relying on someone elses portability development toolkit.
So far - certainly not to be taken as a general rule - while development on iPhone took 100%, porting it on Android took at most 30-40%
This question is way too broad, it depends on what kind of app you're doing.
Generally speaking, if you're just as good off doing a web app, do that. It'll work across different platforms.
MonoTouch / MonoDroid by Xamarin (previously owned by Novell) allow you to write C# (the language used by WP7) for iOS/Android, respectively. It is not free, however.
I don't believe the frameworks go so far as to include cross-platform UI, but I'd say that's probably a good thing. At least your application logic can remain the same across platforms.
I've not used the framework myself, so I cannot vouch for it.
We do use MonoTouch/MonoDroid and it helps us to simultaneously support WM/WP7/Android/iOS. The common denominator of all these platforms (after employing Xamarin products) is .Net.
The policy of our company is to maintain toolkits for all platforms that provide similar UI. Then the apps can be written in a nearly platform-agnostic way. This isn't, however, a general statement as the independency refers to the specific types of applications.
I don't advise using our toolkits for your case as it looks like an overkill. However, investing into C#/.Net might not be a bad idea.
U should definitely go with the easiest route: Java.
You will still have to rework a lot while porting, but if you were using NDK, the overhead for Android itself might be similar.
(In an average app. As you havent provided too much information about the project, the answer couldnt be more specific. If you are developing a performance-critical app, like a 3D game, you should consider NDK for the high porfile program parts).
Edit: for this scanning solution, I would go with Java on android and wont bother with portability. For a project with such a clean application logic it wont worth the effort to make it portable (except if the aim of the project is to experiment with application portability, but as far as I got it, it isnt).
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
I want to know how difficult is to develop on iPhone plataform. By difficult I want to mean:
Effort in terms of programmer versus software complexity. To be clear: how many programmers are needed to develop a medium sized app on iPhone?
SDK learning curve.
Hardware and other non-programming related stuff affecting the development
How easy is to sell iPhone software. To be specific: is easy to sell an app on itunes? does it cost something? I'm confused about how to sell that apps on iTunes store...
any one has experience on advertisement supported apps? please tell me... how has been that?
thanks
One programmer (a good all-rounder) can easily do it. Once you have done your first app you will be surprised to see what sells and how little actual programming there is in some apps. The reason you have to be a good all-rounder is that the apps that succeed have it all - design, inspiration, execution. Consider involving a designer if your taste doesn't match what seems to be popular. Don't expect to ship anything with standard UIButtons, on the store it stands out like the proverbials. Normal practices are essential, e.g. revision control, issue tracking and all that good stuff. It seems to matter more the higher level an API you work to.
SDK learning curve - not so bad. Initially you struggle with why a NSArray can't take another value, but inside 1-2 months you'll be subclassing things all over the place. However read below, don't try to do too much custom stuff...
You need an Intel mac, you need at minimum an iPod touch to submit an app - try to submit without testing on actual hardware and you will miss something, and it will be rejected. You don't have to have the latest Mac OS or Xcode to get started but you probably do for store submission. If configuring choose more RAM over more processor speed. An SSD is essential. BIG (or multiple) screens are, as with any coding task, a big advantage. The new 27" iMac would be a great development machine. It's hard to go wrong with current Macs, I have had good experiences with an 11" Air and a mini, they're not that much different from a Mac Pro as far as development goes once you have a big monitor plugged in.
Selling is not so hard. Provided your app isn't complete rubbish and doesn't get 10 1-star reviews right away sheer numbers will get you some sales. To make it big is hard, and you will need to investigate marketing, review sites, twitter, youtube, in fact to your all-rounder programmer skills you can add marketing director. The noise on the store (sheer number of applications) means only a truly stellar application (i.e. featured by Apple) will stand out in the absence of any other effort. There are probably plenty of apps on the store than in 2008 would have made their developers rich, these days they are lucky to sell 1000. The cost is $99 to join and after that you get 70% of sales revenue while Apple keeps 30%.
Additionally...
With the context that I am a C/C++ programmer who has spent most time programming embedded devices and handsets, with almost no C#/STL/Java...
Here's what I found easy/good:
Xcode (although I admit getting started was jarring coming from Visual Studio)
brevity - what you can do in just a few lines of code is amazing
Stanford CS193P iPhone programming class on iTunes University - great intro, free!
WWDC video sessions. Not cheap but probably worth more than what you pay in terms of in-depth knowledge. I've been to similar developer conferences that were more of an excuse to stay in a nice hotel and do some duty-free shopping but if I'm not at WWDCI will feel like I'm at a severe disadvantage. The big benefit of getting to WWDC is the people you meet, this and lab sessions are what you win if you get lucky in the ticket lottery. All the technical presentations you get for free on video these days.
Here's what I found hard:
knowing just what storage classes to use in a certain situation. My first huge performance problem came from using indexForObject on NSArray with hundreds of thousands of objects. Obvious now but who knows this the first time it happens to them?
"letting go" of preconceived ideas about what a UI should do. Don't go laying out a .xib until you have used at least 20 iPhone applications and have some idea of how things are usually done. Doing things otherwise is not only likely to be harder, if your idea is too far against Human Interface Guidelines chances are it will never be accepted to the store anyway.
Xcode debugging messages - do google these because they are cryptic at first but when you find other people explaining them they start to make sense after a while
Here's what I found completely perplexing and got working through trial and effort:
Apple's on-device provisioning process
actual submission to the App Store
So far I have one small game on the store. It's not a particularly good game unless you really like that kind of thing, and only scrabble nerds do, but it still has 10 sales after 1 week and that's with no publicity at all. I did it to get experience with how the store works and by that measure it was a success. In learning curve terms it took me probably six, seven weeks full time from opening the first Apple doc to submitting the game, but today I could do it in about two days.
edit: Incredible to think that this answer is now more than two years old and that people still vote on it. Well I didn't become an app store millionaire but many people have and it can still happen even though we now see some big companies producing very polished apps with large budgets. What's the secret ingredient? Passion, which brings attention to detail. If you love your app there's a good chance users will also.
I didn't get to WWDC 2010 but I did get to 2011, 2012 and 2013. Keep at it, independent developers - you will almost certainly not do well enough on your first app to retire, but you will be working on an awesome platform, growing fast, with an incredible community behind it. You can make a good living by yourself. And if you do give up your independence the job market is very, very good.
more edit: Did I mention CocoaHeads? Find your local iOS programmers and find out about CocoaHeads. If there isn't one consider starting one. Either you will discover opportunities (i.e. projects, or even employment) or you will discover people to hire when you have succeeded and can't be a 1-person shop any more. Not to mention the useful free education speakers at these groups represent.
Swift is now perhaps less weird than Objective C seems to a programmer coming from some other language. I do think it's the right choice if you're beginning, Apple are clearly pushing it as the future and it has gotten much better since introduction in 2014. You may find learning Swift is an advantage, if you have that option - many developers are stuck supporting existing projects in Objective C.
iOS continues to grow and be an interesting and fun platform and I don't think it's slowing down. OS X is keeping pace. I'm still very happy I made the choice to do this back in 2009. Come on in, the market's fine.
We have started developing about a year ago and currently have two OpenGL 2D games on the market. My experience so far:
Simple application can easily be a one-man show. For a medium-sized application you are likely to manage with just one good programmer, but usually there are other people needed, such as a graphics designer. This highly depends on the nature of your application.
A bit steep if you have no experience with Objective-C and Cocoa. C knowledge helps, as does knowledge of some OO and computer language concepts. Even then you’ll spend some time getting used to their way of doing things. (Which is usually well-thought, but often different from what other people/languages/stacks do.)
The biggest non-programming issue is the crazy provisioning and review stuff. It takes a while to get used to all the profiles and certificates and signing voodoo. You are going to hate it, but will get used to it.
Selling the app is hard. You either have to be one of the lucky ones to make it into the featured apps on the device or you have to be some big title or your application has to be something with a clear audience (like Geocaching) or you will have trouble getting a decent coffee for what you earn. (I am over-simplifying here, but it’s mostly true.) The selling process itself is pretty much painless – $99/year and Apple gets a third of what you earn.
Depends what you mean by "medium-sized". Also depends how long you want it to take. In general, to make a decent app, you need a combination of things: programming skill, artistic skill, design skill, and business knowledge. Most people don't like to do all of those things. I'd guess that the majority of iPhone apps only have a single actual programmer, though. You can tell the ones that were written by a programmer who should have gotten some help with the other aspects.
Depends what you already know. It took me a month before Objective C stopped seeming really bizarre, and I've used lots of different languages.
The hardware isn't a problem unless you don't already have a Mac, an iPhone, and an iPod Touch. The biggest non-programming thing for me is the App Store review process; you have to understand that when you think you're done, you're going to need to wait a couple of weeks, and it's possible that the idea you thought was great falls into some category that will never ever be approved, or that you'll have to change your app's name, etc.
It's easy to offer apps for sale on iTunes, once you pay your $99. If your goal is for people all over the world to download your free app, or to put your app on sale and make tens of dollars, the App Store is great. If you're hoping to make millions of dollars, or even thousands, you have to be some combination of competent, persistent, and lucky.
It's rather difficult to answer your question owing to the fact that often this is highly subjective in my previous experience.
1) Generally the effort is much lower than the one required when using a different platform. Those acquainted to software engineering principles including the use of design patterns etc will find that the SDK is built around all of the common abstraction we are used (except a very small part still using C style procedural APIs).
2) The learning curve is steep for people rolling this on their own, is really easy for people being taught on the matter. A fast course style exposure to the SDK and tools (say 40 hours total) it's usually enough for people to become proficient enough.
3) There are no hardware issue to be taken into account, at least in my experience. As already pointed out by Zoul, provisioning the devices takes some time to get used to. The submission/review process is in my opinion a little easier.
4) Selling is as difficult as it is on other platforms. But if you have got a really brilliant idea, then you usually sell many copies of your software. Or, the idea may not be so brilliant, but the software you develop is fundamental for a specific field targeting people always on the move etc. Just developing something without a clear target is the perfect recipe for disaster.
What is your definition of "medium sized app". It could easily be just yourself, or it could be a few people including a designer. Also, to some degree if you have more time you need fewer people.
That depends heavily on your experience to date. Many people have come over from .Net and Java development and not found it too hard... you probably need at least a month to be comfortable with a lot of the concepts.
You need a Mac, that is it. Any Intel mac with 2GB of memory will do.
It's very easy to sell, since all you do is upload a binary and (after a wait for Apple to approve it) Apple puts it up for sale. You need no servers. You do need to pay a yearly $99 fee to develop.
Very subjective. A one person app developer can develop a medium sized app. How long will it take? Depends on how much free time the developer has and how much experience with Obj-C.
I learned some parts of the SDK in less than a day. I still don't know the entire SDK, as I haven't needed to. I doubt that any one programmer would want to spend the time to learn the entire SDK. For example, if you aren't doing anything with the accelerometer, why study it?
You need to roll up your sleeves and delve into it yourself to see how long it takes you. If you are asking for your team, then you will have to judge how well their expertise will apply.
As for selling on the iPhone, there are some easy aspects, like not having to worry about packaging or salespeople, but you still have to sink money into marketing or no one will find your app in the almost 95,000 apps on the app store today.
If you're asking because you keep reading that it's an easy "get rich scheme", then I'd say you're in for a surprise. Despite the reduced overhead in some areas, and low start-up capital, it's as much work as any other software venture, since the ratio of team members to work to be done stays about the same (the economics of a $2.99 or $4.99 or $9.99 apps forces you to have a smaller team).
Perhaps an analogy... I want to know how difficult is is to build a house.
In terms of builder vs house
complexity. To be clear: how many
people do I need to build a medium
sized house?
Power tool learning
curve.
Permits, plans, and other
non-building stuff.
How easy is it
to sell my house?
Let me give you some guidance as I have worked on JQTouch. Its a library that build using JQuery and it also provides multi-touch related features too. Basically this is for UI related stuff.
Please have a look at JQTOUCH and look at the code samples. The business logic can be done in any server side technology of your choice.
Summing up the things with your relevant questions
Effort is not that tough. Easy for developers to develop. Less documentation.
Pretty easy
Emulator could be downloaded from Emulators
Not much knowledge on this.
We are currently in the process of evaluating a couple of iPhone development shops and we're putting together a list of questions/topics that we'll be asking them about when we meet.
To make sure that we have the most relevant areas covered, what would you ask when evaluating an iPhone developer or development shop?
Our main areas are: applications shipped and quality thereof, planning process, development methods, testing frameworks, how they manage the ad-hoc beta testing, and the on-going process of bug fixes and re-submission to the app store.
I have coded and shipped an app, so I have enough experience with it to ask pertinent questions. What kind of specific development questions would you guys want to cover before feeling satisfied with someone's abilities?
Thanks!
If you ask for things like code, requirements document, etc, they'll probably send you the best of what they have and that might not be the status quo. At the same time it doesn't hurt to take a look over such things and see how they handle the request.
Since 90% of the iphone shops have a life of about 2 years (most people have jumped on the iphone bandwagon in the last few years) I wouldn't hold that against them but I'd make sure they have a development background and didn't start their development career on the iphone in the last 2 years [1]. If I was outsourcing any type of work (iphone, web, desktop), I'd want to work with a group that has been through a handful of the ups & down's of developing, delivering and supporting software, plus has the client skills to match.
Meaning they can communicate, know how to manage and know how to run the development side as well. I'd like it if they at least had some development history/experience in C or C++.
Also, do they have artists and such in house or do they outsource the asset creation? (Maybe its not needed for your app besides an icon & splash screen).
What software do they use for bug tracking? How do they manage their development cycles? Do they use a methodology? (waterfall, agile, etc)
Do they offer support? How much is it? Contract? Per instance?
Do you get the source? You should, you paid for it.
Speaking to them is very important, and your gut will tell you much about them. If you can drop by and checkout their shop that's cool too. But don't hold a small shop against them - it should just mean better rates for you due to lower overhead.
If they've done consulting work, and have shipped app's that's a benefit. Specifically question them about ad-hoc distro.
And importantly, have they worked with the technologies you need (say openGL for a game, or consuming web services for a network related app)? Again, not necessarily a strike against them if their smart and eager, but you'll be appropriately aware of their current abilities.
Good luck!
Also, if they're willing to work on equity alone, I'd be worried. Developers are making good money on the iphone and I see no reason to take equity only. I consult on the iphone, and I won't accept equity deals. Cash is king.
[1] What I mean is that, I would expect them to have developed on other platforms (web, desktop, other mobiles) NOT just the iphone. So if they started programming in the last year, on the iphone alone, that's probably not a firm I want to work with. If they had developed desktop applications for the last 5 years and then came to the iphone world in the last year or so, that's cool. I just want to work with people that have gone through the first couple years of development - those are great great great learning years (but don't want them doing it on my dime).
Ask them for a portfolio. Then buy those apps that they have worked on and see if you like them.
Ask them how long they've been developing iPhone apps for the AppStore.
If it's longer than 18 months, find someone else.
I would say process and experience are most important. Items like:
Describe your process
How much involvement can I have- access to tools, developers, etc.
Tell me about projects you've done that overlap or featuresets that overlap mine.
Do you outsource? Or who, specifically will be working on my app?
How do you handle maintenance?
How do you handle payment?
Items like this are a good start to a dialog between the two of you. Theres really a lot to consider when developing an app. I think coming into the conversation really well prepared on your product will give you an understanding of the right questions to ask.
I'm an undergraduate university student who also writes iPhone applications. Next year I'm expected to do a final project, something that lasts the full year and involves a fair bit of software engineering.
My original plan was to write an object-relational wrapper around SQLite for the iPhone (or rather, to massively clean up and extend one I already have) and ultimately release it as open source. Unfortunately, with Core Data being added to iPhone OS 3.0, that's no longer really necessary. (At least, that's how it seems to me; any opinions on this?)
However, I'd still like to do a useful, technically interesting iPhone-related project next year. So here's my question: what do developers need? What sort of problems do you encounter in your apps which seem like they could be handled by some sort of library or framework? My focus is generally more on utility, productivity, and communication apps than games. And since I'm proposing this to a university, something that's either theoretically interesting or attractive to potential students would be preferred. And of course, it'll need to be something that they haven't added to the new version of iPhone OS.
It's in the early stages, but a bunch of scientifically-minded Cocoa developers (headed by Drew McCormack) have joined together to start a BSD-licensed data charting / plotting / visualization framework called Core Plot (mailing list here). This framework is cross-platform between Mac and iPhone, relying on Core Animation for rendering.
While you wouldn't be starting your own project fresh, contributing to this open source framework would be technically challenging and I believe that the framework will have far-reaching applications. I'm sure that the university would be impressed by the potential scientific and educational uses of such a framework.
A library that provides a very simple API that would enable any app to act as an OAuth consumer would be incredible! It could be used to enable data access against hundreds of OAuth-enabled data APIs all over the web, including those of Google, MySpace, Twitter, Yahoo, Flickr, etc. Imagine how many thousands of additional applications you could enable other developers to build with ease.
Your code could be included in pretty much every worthwhile iPhone app that any future developer writes!
I'd like to see a framework that abstracts the interface to various social networking sites. Having a standard API to send updates and post pictures to MySpace, Facebook, Flickr, Picassa, Blogger, Twitter, and other services would be very useful.
A general purpose framework to communicate with a particular iphone from any application with internet connectivity. iphone apps are great, but so much more can be delivered with serivces from the web - so some sort of communications would be nice.
Make some sort of API that can be used to talk to iphone from other connected applications - either web services or desktop, etc.
I ended up having to go in a different direction due to the rules of the project, but I'll keep these in mind as possibilities for future, non-university work. Thanks, everyone!
Does anyone have any suggestions for a site that potentially has some inspirational user interfaces for building my own iPhone Apps. It's straight forward to continually build out applications with the conventional UIKit widgets, but it does not set you apart from the competition. Some resources on how to build attractive interfaces is highly desired for inspiration. This is for someone with minimal Photoshop/Illustrator skills, but doesn't mind using sites such as iStockPhoto and working with custom views.
Apple is historically well-known for the user interfaces of its products and programs written for them, but in recent years it has come under fire for seemingly allowing its Human Interface Guidelines (HIG) to lapse. Some of the best Mac and iPhone applications are actually those that deviate from the HIG, but not so much that usability (or acceptance into the App Store) is sacrificed (see link text).
Examples of such innovative iPhone applications can be found in the iPhone app and web app showcases of Apple Design Award winners. These apps have been judged by Apple itself to be creative, inspiring, and exemplary of the iPhone platform's potential as a mobile computing device.
Go to your local best buy, game stop, or any other store with xbox360s, wiis and playstation 3s lying around. Play every single demo on these machines and rate them solely on UI experience. Triple A console games still lead the interface world in my opinion. Soft synths are a close second and also often have beautiful UIs (as Chris Schreiner pointed out). A quick trip through logic will give you a glimpse of apple's own work in that direction.
You might want to check out this article by Matt Gemmell about his process in designing the UI for his Favorites app.
10 Gorgeously Designed iPhone Applications has some very nicely designed apps.
I spent a long time getting this one together, it's a full list of every single ios inspiration / mobile css gallery I could find on the internet. Let me know if you find any others so I can add them!
http://www.kintek.com.au/web-design-blog/iphone-mobile-css-gallery-listing-ios-inspiration/
Maybe this will help: My source of inspiration comes from the software-synth domain. Circle from FAW comes to mind. Ableton Live is (in my book) something to look at.
Heres a good article about designing the Convertbot application. A very simple app that stands out because of its UI.
I hate to burst your bubble, but great design is not something you will get from finding a "site" to look at. Major universities have graduate design programs, that's the kind of place where some people learn to be great designers. Multiple courses and textbooks on design and all the related areas (art, architecture, psychology, biomechanics, etc., etc.) I've seen too many engineers, without at least some of this training, routinely suggest some really bad UI design ideas. Don't be another one of them.
Treat learning great design as something far bigger than finding a site (or learning another programming language, etc.), more like a multi-year endeavor, and you might have a chance.
Or find and team up with someone who's already an experienced designer.