Slide 1

Slide 1 text

Full-stack development A bit about everything

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

A webapp : simple full-stack software

Slide 4

Slide 4 text

Android : A complex stack

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

●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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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.

Slide 19

Slide 19 text

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.

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

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.

Slide 22

Slide 22 text

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.

Slide 23

Slide 23 text

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