Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Most of my career has been working on numerical algorithms, image processing, calibrating science data, making LEDs blink... very little at the level of whole apps and sophisticated GUIs. Though I have written some apps, by today's (or 10 years ago') standards, these were toys, simple demo wrappers around the number-crunching black boxes I'm good at making.

Looking around, I see little demand for low-level numbers/pixels skills, interfacing directly with hardware and such; it's all desktop machine apps, smart phone apps, web apps. I'm interested mostly in desktop apps to be used by technically intelligent people - scientists, engineers, doctors etc - since I've already spent plenty time in such environments.

So maybe it's time to become expert at this type of software development. Besides reading, reading and more reading (of course) and dabbling in hobby pet projects, what are the most effective ways for an experience non-apps developer to begin developing this particular kind of expertise? Which books, sites, and blogs are especially informative for learning whole-apps level design?

share|improve this question

closed as off-topic by Ixrec, MichaelT, durron597, Thomas Owens Jun 6 '15 at 13:28

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – Ixrec, MichaelT, durron597, Thomas Owens
If this question can be reworded to fit the rules in the help center, please edit the question.

I was thinking of asking a similar question, but mine went like this: "How could I become excellent at low level programming/hardware design, coming from mediocre high level programmer?" – Trevor Arjeski Apr 27 '11 at 2:13
We could trade brains! – DarenW Apr 27 '11 at 18:49
It might just work! – Trevor Arjeski Apr 27 '11 at 18:57
up vote 2 down vote accepted

You have the best of both worlds staring at you.

First, technically intelligent people don't need the extra sexy GUI. They probably perfer a simple streamlined approach.

Secondly, you can thinks about all the times you said "I wish there was a tool that did this." Now you can build a bunch of tiny little apps that solve problems for technically intelligent people such as yourself.

The hard part is remembering all those frustrating moments.

share|improve this answer

Nothing trumps getting your hands dirty! I personally don't know any blogs that would helpful in that arena, but I would be hesitant to think that they would be very useful with out some experience dealing with common design issues. I personally think that your best bet is downloading the source code to an open source project that you find interesting and figuring out how it works. Then download a similar type of open source project and compare the different designs. I learned more through reading source code than any other place I can think of. Just keep in mind that there is a lot of crappy code out there so take care to scrutinize anything you study. It very well might be a crappy design.

share|improve this answer

It's not about how well you can aggregate information. It's about how well you can solve problems. If you're a good programmer, it doesn't matter what technology it is, it's all about how well you can adapt to solve problems.

In fact, a lot of it comes down to how well you can verbalize the question you want to ask.

That said, you need to get familiar with some kind of language, and you need to pick one to get started. At the very worst you have to learn by doing.

My recommendation is to get a job that requires you to do something you've never done before. Unless someone is lighting a fire under your bum, it's extremely difficult to just delve into enterprise-level applications from an amateur perspective. FIGHTING!

share|improve this answer

Have you considered joining a user group?

Where I live, there is a lively .NET usergroup community, as well as one each for Agile and SQL Server, and those are just the ones I'm aware of. Attending user group meetings as well as our local code camp has helped me immensely, and they're great for networking.

Aside from that, if I were in your position I would look into getting some further education specific to where you want to be. Then again, I enjoy taking classes, so YMMV.

share|improve this answer
What's a "code camp"? User groups are good, 'cept I don't like being in rooms full of geeky types, and currently I live in a small town far from where any such groups would be. – DarenW May 5 '11 at 9:15
@DarenW: Wikipedia - Code Camp. It's like a conference. There's one where I live that gets run once a year. It's 8am to 5pm on a Saturday, and there are three or four streams of presentations on a wide variety of topics, from design patterns to new technologies to best practices. – Cyrena May 5 '11 at 17:38

Not the answer you're looking for? Browse other questions tagged or ask your own question.