

Ask HN:Becoming a application developer from a scientific programming background? - aditiyaa1

I have a graduate and under-graduate degrees in  engineering with a good amount of experience in scientific programming in C++ and python. I have ideas for a few web and stand alone apps that I would like to implement. But I am not sure whether I have the necessary skills to go ahead with them.  For example I have no idea about Operations System theory or concepts like continuous integration. If  you can point out to a list of subjects and concepts/topics that one need to know before jumping into full-fledged projects, I think it would be helpful to me and others who are in a similar situation.
======
fruiapps
I was exactly in the same position few years back. I was a non computer
science grad, but i had decent amount of coding experience and algorithm
design, but only that. No theory courses in Networking, Operating System or
even DBMS. I wanted to make web apps, and wanted it hard. So the few things i
learnt were: you need to know basic HTML, CSS. Server Side Scripting:
PHP/Python/Ruby Client Side Scripting: Javascript(jQuery is the new
JavaScript) You should also know the terms like DNS, CNAME etc. so that you
can put your content on a web server to start of with a shared hosting from
any provider would be good.

But the above will only let you make very basic apps. If you want to make
slightly more complex things, there are Content Management Solutions like
Wordpress, Joomla or Drupal. (these are amongst the most popular ones, they
have readymade plugins so if your only motive is to get a site up and running,
they will serve the purpose.)

If you want more customization you might have to learn MVC frameworks.
Here([http://blog.fruiapps.com/2012/04/Understanding-MVC-
Architect...](http://blog.fruiapps.com/2012/04/Understanding-MVC-Architecture-
with-a-simple-example)) i have written a basic tutorial on MVC. The popular
frameworks are Ruby on Rails Django (Python) CodeIgnitor(PHP) BackBone (JS) My
rule of thumb for deciding is: Get a hang of a server side scripting
language(PHP/Python/Ruby), choose the framework in that particular language.

Another most important rule that you should keep in mind is: All that you want
to do has been done, you need to assemble it your way!! Learn to copy, modify
and paste to suit your needs. Don't be afraid of any implementation it will be
out somewhere there. Thats it, hope it helps.

~~~
aditiyaa1
Thanks a lot for your detailed, response. I will really look into the things
that you have mentioned. Of all the different languages you have mentioned,
python is my natural choice. What I have heard about python is that higher
execution time makes it not suitable for bigger applications, but I know
reddit, dropbox ,.etc are using python. How do you see it from your
experience?

~~~
rmATinnovafy
Python is fine.

Go with what you know already. Just add the client-side bits you need (html,
etc.).

Django could be a good choice, but don't limit yourself to one
language/framework.

Good luck.

------
kracekumar
I learnt web programming, web application development on my own during college
days started with PHP, settled with Python and tried ruby.

How did I learn?

I started with PHP first, writing small scripts and spending time IRC and
reading official docs. I attended PHP conference which had prominent minds
like creator framwework, Drupal Users etc ...

I created Mini ERP for schools as startup and never launched it.

Then I tried Ruby on Rails and cloned a open source project and modified the
source code and fixed bugs (never bothered to submit).

Then I tried Django but wasn't impressed, then I tried Flask and I liked it
very much and tried Pylons. Now I am settled with Flask and hacking brubeck
occasionally.

Sites I have built: 1\. www.sachintweets.in 2\. www.iplsaga.in 2\.
www.pylive.codespeaks.in(currently down)

Web Apps: 1\. Gummi - multi user chat room with Flask + Redis 2\. Blaze -
Static file generator

Source code: <https://github.com/kracekumar>

Takeaway 1\. Choose a language and start researching on available web
frameworks 2\. Attend Conferences. 3\. Follow hackers in twitters 4\.
Subscribe to subreddit 5\. Join Mailing list. 6\. Use Github and bitbucket.

By creating stuffs which interests you, will answer the question.

------
xackpot
You need to be hellbent upon learning. This is how I started a few years ago.
I was into C/C++ programming, but knew nothing of javascript/java/php/ etc. I
didn't even know if there was any difference between java and javascript as
these were not my domain. And then I just had to make this website for myself.
I spend nights to learn and code (started using GWT as it was the easiest for
me to pick up coming from C++ background). But later I realized it could be
easier to code using jquery where I can use the object oriented programming
concepts. So here is my list to get up to speed: 1\. Start learning javascript
(codeacademy.com is a good place to start with) and then you can go on to
learn jquery. 2\. PHP. 3\. Read about MVC/MPV architecture. 4\. HTML/CSS 5\.
Install WAMP/MAMP or any other such server on your computer and play with it.
6\. Google any problem where you get stuck. I realized there is absolutely no
problem that you can't solve. Some will be easy to solve, and some will take
all the energy out of you. But the key is patience. Have patience and be
persistent, you will get all the solutions you need. Same is for learning.
Have patience and be persistent.

------
leeny
It may be worth finding a company you admire and working there for a year to
get a feel for things like source control, the dynamics of many people working
on one code base, design patterns, why people make the architectural decisions
that they do, how systems scale, what makes a team work well together, etc.

None of this stuff is as easy to pick up on your own. Then, after you get a
feel for how others do things, you can make informed decisions about how to
run your own projects.

------
factorialboy
You'll be fine, it's really very simple.

I'd say pick a stack (JavaScript, Python, Ruby or whatever) and jump right
into it.

