Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Full-stack Development

Full-stack Development

Talk at DTU Open Source Development SIG on Full Stack Development by Arnav Gupta and Saurav Tomar

Arnav Gupta

May 05, 2015

More Decks by Arnav Gupta

Other Decks in Programming


  1. First impressions matter. The UI should look good • •UI

    != UX. Good UX needs good UI. But just good UI doesn’t ensure good UX. • •Do not overdesign. The best UIs are the simplest ones. • •UX is a tool to make the user do what you want. But without him knowing this. (dark and light patterns). The front-end : UI/UX
  2. Speed : Computers are faster than humans. Keep it that

    way. And users are impatient. • •Information : Show what is needed. Hide what isn’t. Users aren’t developers. They don’t need ‘under-the-hood’ stats. • •Depending on the platform, decide the tradeoff between client and server side processing. (eg. Autodesk Pixlr) • •Handle crashes gracefully. Stay with the user. Do not bail out. The front-end : functionality
  3. •Speed of development matters. •Validate everything that the user enters

    in forms or otherwise. •MVP first, scale later •Learn and embrace new tech like Docker Containers. The Server Side Stuff
  4. Use a robust platform. Check its forums, find out if

    the platform and it’s providers have downtimes, or issues. • •Do not become dependent on the platform or the host. Always keep bags packed and ready to move. • •First MVP with a easy to set up platform. Then move to more native platform when scaling. • •Use containers, servlets, docklets, VM images. These are The server platform
  5. Forget Windows/Mac. Learn Linux. Forget GUI. You’re now in command

    (pun intended) • •Bash/Shell scripting = your single largest tool. • •Learn managing a VPS. Learn setting up OpenStack, OpenCloud, AWS, GAE, Heroku etc instances. • •Use monitoring tools like Nagios. Learn network fundamentals. DNS, iptables etc. Managing the backend : SysAdmin
  6. It’s not just coding •Writing code •Testing and debugging •Version

    control •Managing the databases •Sysadmin for the backend •Designing UI for frontend •Marketing and publicity
  7. Reach MVP first. Optimize later. • •Use comments. Especially //TODO,

    //FIXME lines. • •Run & test often. At least once after adding every 100 lines. • •Code may be poetry. But it needs proofreading. Good practices : coding
  8. Good practices : testing Test like your granny would (no

    offense). Press all the buttons. Do everything that can crash the app. Trust me, your users will too. • •Test under worst conditions. Slow internet, corrupt data, throw everything at it. • •Test all the cases. Especially the improbable ones. Remember Murphy’s law.
  9. Good practices : debugging Learn to log your code. Learn

    to read the logs. Developing is >50% of debugging. • •Bug hunting skills are more important coding. Many people can build stuff. Few can fix things when they are broken. • •Investigate bugs systematically. Change one component at a time. Pinpoint the portion that causes the bug. • •DO NOT duct tape your bugs. Solve them properly.
  10. Good practices : data models It’s very difficult to change

    data model after 5000 people have started using your product. Choose wisely from the start. • • Work out the flow of data. In your mind, on a paper, on the drawing board. The data model should be made accordingly. • • Reduce iterations. Reduce number of passes your functions make through each table. • • Cache the data that is repetitively used. Make sensitive data redundant. • • If your data model depends on your language or framework or platform, you’re probably doing it wrong. You might need to change your platform or language tomorrow.
  11. General suggestions for a FSD Identify your strong suite. No

    one can be a true all rounder. Go deep with that. Spread thin on other areas. • • Use ready-to-use solutions for your weaker base. (eg. Ionic/Titanium for client side, Parse/Firebase for backend) • • Make friends with other FSDs. Especially with non-intersecting strengths. • • Keep working on new technologies. Follow well known developers. Track some awesome github projects. • • Use cross-end languages in hobby projects. Eg. Python, javascript, java etc which can be used to make both front and back ends easily.
  12. Tools Used for development + Server Side : Python(Flask) +

    Web APP : Bootstrap,Angular JS + Android and iOS app : Ionic framework Tools used for marketing + Facebook Ads + Twitter and facebook bots + Setting up a content writing team. Full Stack in Action: Orch.in