Getting sh*t done
Updated: Oct 31, 2019
There's no antidote to development inertia than getting shit done. There's no shortcut to hard work, accomplishing a task to your satisfaction carries over to the next, and success begets success.
Our first employee is a newbie to mobile development, and I have not written end-to-end code in a while. I have always had "analysis paralysis" and never completed any of my side quests, as I let the scope spiral out of control.
What I'm finding personally is that TDD helps. In the past two weeks I & we - collectively as a company - have seen our productivity go through the roof on our latest project.
I want to bring the nuggets of wisdom we find - daily - as we pursue our goal to release a Minimum Viable Product - a Cross Platform Mobile App - in the next 4 - 8 weeks.
This is the order in which I approached this as I have the most experience than my colleague, I decided to follow the Sherpa Method, where I being the Sherpa help my colleague and team navigate. A post on Sherpa Method soon.
1. Don’t skimp yet be frugal
Microsoft Office with Teams, a beefy Laptop, Second monitor and Good internet connection for the India team, Postman subscription
Ensure you don't spend on what you don't need. Be cost conscious of every architectural & design decision. Cost effective architecture is key when comes to Cloud platforms such as, Azure.
2. Decide on a collaboration tool. This is KEY
We went with Microsoft Teams
I always hated people not writing code in a project. So, I hate non-technical people coming up with Project plans. I know I can't write every task that ever needs to be performed and put it in VSO. We're iterating too fast for that. Teams was ideal to hold lists, discussions & hold all documentation as well.
3. Overall Architecture, Tech Stack and Development Tools
You don't need to finalize this but a 50,000 feet view helps. For example, we decided, it would be a Xamarin App with backend services running on Azure. We'll use Visual Studio Enterprise and .Net Core and apply all best practices. However, the point is to not commit to anything till you're well on your way.
Actually, I changed my mind about Xamarin & going with Cordova
4. Start a wireframe right away
My personal preference is to use Power Point - with all its faults.
This helps articulate the idea to stakeholders, help pitch the idea to investors etc. But most importantly, it allows you to focus on what you need and informs on your database entities and the API calls needed
5. Design the initial tables
Start with the database you know. We chose SQL Server
Don't get bought into the hype about Micro services, or choose a No SQL database or go overboard and select Cosmos DB.
You can't really do away with all plumbing. Tenant, User, Role & Permissions are necessary evils. You may not go that route and rely on Azure Active Directory or some service but it's better to have options later
6. Identify most of the APIs you need. (in an Excel sheet)
URL to call
Possible Response Codes
Reason for the response
Summary Sheet with the first three columns of the detail sheet above
7. Visual Studio project structure reflecting end-to-end Data Flow from API to the database
Web.Api --> .Api --> .Models --> .Entities --> Database
8. A Unit Test project
Start with a simple API call. We started with /signup
This will exercise your entire object chain
9. Test every line of code you're writing
We use a collection in postman that's specific to this app
HTTP Post call to the /signup is crafted in Postman. Allows for API manual functional testing.
Unit test the Web.API layer as well
10. Defer deployment to the cloud till the last minute
Especially when you're working on the API --> Database CRUD.
We haven't deployed yet to Azure.