This morning Gaurav came over and we talked a bit about the software development process, server administration, and core skills for professional developers. Gaurav has interesting experience having spent significant time working at VMware, Flipkart, and most recently with a startup that makes development and diagnostic tools for Android.
Here are some notes we are puting together :
On Operating Systems: Linux is the obvious choice for development platform for the students. People need to get comfortable with the shell, navigating the file system, starting and stopping processes, vi, package management, run servers, set up cron jobs, network set up, understand ports, dns, and ip addresses, do basic network / cpu / disk / memory monitoring, regular expressions, provisioning new instances on aws or the equivalent, basic security.
On Build Management: Establish a culture and routine of checking code into the main repository. Create and run automated test scripts. Create branches for staging and production systems. Deploy code to each of these places. Use continuous integration (CI) server for automated builds and build-verification tests.
On IDE: For Android/Java – use Android Studio (based on IntelliJ) Use VI for JS and Python. Explore other options. Need to figure out what makes sense for JS and Python. While developers are free to pick an IDE they are comfortable with, it may help to pick a default or supported one, so as not to spend time dealing with IDE specific issues.
On Databases: MySQL is good. Getting comfortable with basic SQL – insert, update, create, delete, join is necessary to begin. Some exposure to a NoSQL database. (The projects themselves will probably demand that the students go deeper on databases)
On Cloud: Use Amazon S3, EC2, MySQL instances.
On Tech Talks Select a Tech Talk video to watch and discuss in the evening. Pause video to ask questions.