views:

316

answers:

6

I have read a lot of books about Microsoft Dot Net and I have learned a lot of things

  • Object Oriented programming
  • Windows User Interface designing
  • Using SQL Server and XML
  • Debugging an application
  • Using Serialization and application Domains
  • Deploying a Windows application
  • Security and licencing

I know how to do all that, no perfect and very deep, but good. But my problem is that I CAN'T build an application. It's not about the idea, I have ideas.

The problem is that each time I start, I don't know how to start, where to start, how to design the plan, to debug an application while writing it or after, when to implement security, when to deploy and test it, if my application is missing a step, if it's compatible with other dot net frameworks, if it'll works perfect on all platforms....

I feel that I have some missing in my learning that prevent me from building a whole application, that is secure and when managed.

Am I missing another book, courses, lessons?? Or it's my problem? Can all people design plans or it's just limited to other people? Finally: What Shall I do? Continue learning and build an application (to sell it later) Or Just work part time until I complete study and find a full time job??

+10  A: 

Don't start by thinking big. Start by thinking small. When you think big, you risk intimidating yourself.

When I start out by thinking too big, I can never find the right starting place and I go in endless thought circles much like what you are describing. If I can start on a small, realistic, and manageable task then I start making small amounts of progress. After one piece is done, then I can start on the next one. Of course I'll later go back and tweak previous parts but that's ok. At least I got started and am on the right track and not stuck in "where do I start" perfectionist limbo.

How do you eat an elephant? One bite at a time.

[Edit] Here's another idea: try to write a simple but complete app every day for a week. This will necessitate doing hack-y things and using half-thought out spaghetti code. But it will also force you to focus on reaching a real conclusion and evaluate which features are needed and which are just feature-creep.

I would not recommend this for many people. If you do it too long you'll build atrocious habits. However, for your personal mental block, this exercise may help.

If you do decide to do something like this, please post back here and let us all know how it went.

Good luck!

ps: great question. I'm sure many people face this same situation but don't want to ask for fear of looking bad. I know I've doomed many of my own personal projects because of exactly the reasons you described

Dinah
that's another problem too. I start a small project, each time I build a feature I think of another and try to build to a point that the project is impossible to terminate!!
Omar Abid
Dinah is right. Try to build your app from the inside out. What's the core functionality? Build that first, then add the UI. Once you have a full-featured app on one platform, worry about other builds, etc. Good luck!
matt eisenberg
you are all right i need first to build strategy to work on..
Omar Abid
+1  A: 

What you have read are parts of the puzzle, the howto's so to speak. You will need to have a clear idea of the big picture. Why do you want to solve this problem? Is it a problem? Are there alternatives, workarounds? What am I doing better than my competitors? Be your critic.

Am I missing another book, courses, lessons?? Or it's my problem?

I'd say you take a look at software engineering principles, development processes. Also, read up a bit on understanding requirements, software architecture and design, etc. Keep practicing what you learn.

Can all people design plans or it's just limited to other people?

Some people are better at it than others. Just like in any other field.

Finally: What Shall I do? Continue learning and build an application (to sell it later) Or Just work part time until I complete study and find a full time job??

Keep reading/writing. A job sure does help to get you in touch with how things get done in a professional environment. You can apply those principles when working on your pet project too. It will surely be of extreme value to get a job in the software field.

dirkgently
+3  A: 

Try to make "baby steps"...

For example, for an address book, build the search first, then the creation form, then the update form, and so on. Feel also free to refactor your code often, to avoid dupplication.

I'm sometimes building a first and small version of an application this way, and I used to build a second cleaner version after have learned mistakes that I've did on V1.

paulgreg
+2  A: 

Start with your own small-purpose phonebook application, something you can finish in a couple of days. seeing one simple project through from start to finish will make it clearer how to proceed with something slighty bigger, and on you go on the ladder.

Realizing all aspects of a full scale system will take years of experience.

Good Luck!

sharkin
+2  A: 

Working in the industry definitely helps put a lot of the pieces together. Even more helpful is being exposed to more experienced developers that can guide you through the process.

One thing that has really helped me was to develop an application for simple note taking that I used during my job search. I've been able to use this as a basis for a few other personal projects as well as tools I use every day in my professional career.

Going back to the code after awhile has allowed me to see where I could have done things better. After all, most of the code you write will have to be maintained somewhere along the line, probably not by you. So, if you have trouble going back to your own code and modifying it, imagine what it would be like for someone else. My approach thus far has been to "build one to throw away" as far as software units is concerned.

Starting with a fresh slate is nice, but as you are finding out, it can also be overwhelming. You'll find that as your progress, you might want to add other features. Resist this temptation! Sure, it may seem "easy" to add a certain option, but this can lead you down dark paths and take your focus away from your primary goals.

Knowing the languages and technologies is one thing, but having a grasp of software engineering principles will provide you with a better foundation from which to build your career upon.

Timbuck
+2  A: 

Writing out what you want the software to do helps a lot as well, normally this would be your functional specification, but for a small App it will suffice to write down what you want it to do.

Break that down into small "baby steps" as mentioned by paulgreg, so you can start working on those, while keeping an eye on the big picture.

Like Timbuck said, it helps working in the industry since you can learn from others and let them do this building for you (in the beginning), but you also get to built up more programming experience, because you get to do it a lot more!

BTW: If you don't like the idea of creating some "useless App", think of an App you would love to have yourself. For sure there are people out there that would love to have it as well, so you can go and sell it as shareware somewhere ;-)

Ivo Flipse