Summer of code
After 16 years of absence from writing code, this is what I learned over the summer. It probably applies to anyone in their mid-career who either want to start coding from scratch, or pick up coding again like me. If you are an experienced software engineer, I would be surprised you have read this far.
First, Why?
The more practical answer is that earlier this year I joined a project aiming to reinvent the enterprise communication and collaboration software that simplifies people's life and get back time. We have gorilla sized ambition but meerkat sized budget and team, so it is of necessity to jump in and help whatever I can.
But of course you want more philosophical answer: coding is the best way to directly express your ideas and make the most tangible impact. With the right platform, you can have the power of reaching to the millions directly. As Apple summed it up nicely in their WWDC 2014 tag line: "Write the code, change the world"
What can you actually do?
As a newbie, a bot on one of the messaging platforms will be your best bet to start. It is easier than a real mobile app and gives you instant access to millions of potential users. In Facebook messenger's case, 900M+ users as of April'2016. Their APIs are fairly straightforward and often support several languages, so you get choices.
Initially I did the usual Coursera and Code Academy courses with example exercises to learn a new coding language, but very quickly it became boring. Therefore it is much better to build something simple yet interesting and real. My example list are:
- A Chatbot like Eliza or Alice to keep yourself and friends entertained: this will get you into natural language processing, some form of AI (artificial or augmented), conversational user interface, and humor.
- A Ride-share bot for finding the best fare between Uber and Lyft: like this example, you get to use Uber/Lyft's API in addition to the messaging platform's API, find out how to host your backend server, and think about user experience.
- A game bot that can play minesweeper, tic-tac-toe, or trivia for multiple players: this will get you started on how to keep state for each players, potentially using a database like MongoDB, scale the backend server, and build graphic user interface.
How did you do it?
Good news: Software development has gotten quite a bit easier in the last 15 years! I found out when I came out of the cave this summer. The amount of open source projects, libraries, and code are mind boggling, let alone the new programming language and tools. So here are the basics for newbies:
- Get a Mac (or Linux machine), and skip your corporate Windows PC. Optional: install virtual machines (virtualbox and vagrant) when you start to get fancy.
- Pick a simple scripting language like Python or Javascript: simpler and more natural language like syntax; good package management to utilize tons of open source libraries, decent error handling and fairly easy to debug.
- Use open source code as much as you can: do a lot of research on what has been done in this domain, sourceforge.net is your mothership. Beg borrow and steal. Learn the basics of using git. Get yourself a nice text editor.
- Use API, from the messaging platforms like slack, Skype, and Facebook Messenger; as well as other service you want to mash in (e.g. Uber for ride-sharing, Twilio for text messaging).
- Get an Amazon AWS account and open a free EC2 virtual machine, in order to run your backend server. You can also use Amazon's API Gateway and Lambda if you don't want to bother with setting up your own server.
When all set and done, you might surprise yourself that actually you only wrote 50-100 lines of so-called glue logic code for a half decent bot that might impress yourself immensely. Time to celebrate and move onto your next bot.
And one more thing, it is never too late to (re)-start coding. Try it, and you might find it as addictive as the never ending summer in California.
Senior Principal IC Design Engineer at Broadcom
7 年Nice article Bruce! and welcome back to coding! :)