I
started writing a blog in May 2016, partly because I kept writing rants
on Facebook that apparently were “too good not to be online somewhere”,
and partly because I was bored after my Master’s degree and wanted
something to do with my Sunday mornings.
Sleeping in, of course, was never an option.
18
months later, and I’ve written about 100,000 words, been published in
all sorts of places, and am now getting regular offers to pitch to major
publications — more on this in the coming months.
And
most importantly of all, I got to 10,000 followers. This time last
year, it was 100 and about half of them were related to me.
All in all, it’s been a good year.
So
what’s in store for the Health Nerd? You’ll be happy to know that this
year I’ve applied for a PhD with the University of Wollongong, which is
actually super exciting and not scary like it feels to me sometimes. I’m
also going to be — hopefully — releasing some episodes of a podcast
that I’ve started with a brilliant co-host. The topic will be science in
the media and I’m really excited to introduce all of you to my dulcet
tones over the airwaves.
I’m so much less awkward than I am in text.
What
does all of this activity mean to the blog? Nothing! I’ll still be
aiming for my regular one health story a week on Medium, as well as an
extra member’s-only article a month for all you subscribers who love
that extra content.
To
sum up, I’d just like to say thank you to you all. I’d never have made
it here without all you brilliant people following me and making this
all worthwhile. It was a fantastic 2017, and 2018 shows every sign of
being brilliant as well.
Looking ahead, the app business is expected to do even better, with global mobile app revenue forecast for 2020 at $189 billion.
For
budding developers, it’s time to hop aboard the gravy train. But what’s
the first step in learning mobile app development? What courses should
you sign up for? Should you teach yourself app development? We’ve got
you covered.
And yes, the first step is
learning how to prototype a mobile app. Learn why here — plus get our
top 10 online courses on mobile app development to get you started right
away, no matter where you are!
10 free and paid online courses to help you learn mobile app development
Here are our top 10 online courses to help you learn mobile app development:
1 — Android Development Tips Weekly series on Lynda
Each
week, David shares techniques to help you speed up your coding, improve
app functionality or make your apps more reliable and refined.
The
tutorials cover developing the app’s user interface, backend processing
and open source libraries, to get your coding knowledge off the ground
even quicker.
Level: Beginner — Intermediate
Commitment: approximately 3h per video
Price-point: 30-day free trial, from $19.99 thereafter
Learn
how to create and customize 10+ iPhone apps (using Swift 3 and Xcode 8)
with easy step-by-step instructions. The course begins with
implementation of basic elements — UILabel, UIButton, UITextField
etc. — Auto Layout and multiple-sized icons, with more advanced classes
covering memory issues, storyboarding and displaying rich local
notifications.
Note that this course requires you to own and already be familiar with Mac.
Level: Beginner
Commitment: approximately 33 hours
Price-point: $10.99 (New Year discount, was $50.00)
3 — iOS App Development with Swift Specialization on Coursera
This is the ultimate Swift for iOS development course, brought to you by Parham Aarabi and the University of Toronto.
Using
XCode, Parham will teach you how to design elegant interactions and
create fully functioning iOS apps, such as the photo editing app for
iPhone, iPad, and Apple Watch. The course also includes best practices
to help you become proficient in functional Swift concepts.
Note that this course requires you to own and already be familiar with Mac.
In
this 5-week course, you’ll explore the basics of Android application
components as well as Activities and their lifecycle, some UI design
principles, Multimedia, 2D graphics and networking support for Android.
Level: Beginner
Commitment: 6 weeks
Price-point: free
5 — Full Stack Web and Multiplatform Mobile App Development Specialization on Coursera
If you’re learning mobile application development for Android and found the above course useful, try this course out next.
Here
you’ll have the chance to build complete web and hybrid mobile
solutions, as well as master front-end web, hybrid mobile app and
server-side development.
Price-point: 7-day free trial, $39 per month thereafter
6 — iOS 9 and Swift 2: From Beginner to Paid Professional on Skillshare
Mark Price’s online course for iOS Swift is everything you need to know about iOS 9 development.
This
is another great set of classes for novice iOS coders. Build 15+ apps
for iOS 9, learn swift 2.0 and publish apps to the App Store. Warmups,
class projects and exercises will help you keep on top of the workload.
Level: Beginner
Commitment: approximately 37 hours
Price-point: from $15 a month
7 — The iOS Development Course That Gets You Hired on Career Foundry
1-on-1
mentorship from industry experts and real-world projects complement a
set of 6 structured modules. The course covers the very basic principles
of iOS development and takes you right to the point of submitting an
app to the App Store.
Level: Beginner
Commitment: 6 months
Price-point: $4000 (payment plans available)
8 — Get Started With React Native on TutsPlus
Markus Mühlberger’s course for React Native is perfect for anyone who wants to code for multiple mobile platforms.
Learn
how to create and customize UI elements, build user interaction, and
integrate third-party components into apps for both iOS and Android.
Upon completion, you’ll be able to write mobile apps in React Native.
Level: Intermediate
Commitment: 1.2 hours
Price-point: $29 a month
9 — Build a Simple Android App with Java on Treehouse
Ben Deitch’s course will help you build simple mobile apps for Android with Java, without any prior knowledge.
Best-suited
to budding Android developers, this course will explore programming in
Android and some very basic concepts of the Android SDK. By the end of
the course, you’ll have a working knowledge of how a basic app works.
Level: Beginner
Commitment: 1.5 hours
Price-point: from $25 a month
10 — Try iOS on Code School
Gregg Pollack’s tutorials on iOS app development from the ground up and requires only basic coding experience.
Write
your first iPhone app code and learn about different UI elements, such
as buttons, labels, tabs and images. Upon completion, you’ll be able to
connect to the internet to fetch data, build out table views and
navigate between different areas of your app.
Level: Beginner
Commitment: 6–8 hours
Price-point: $29 a month
It’s
an exciting time for mobile app developers. And as you can see, there
are plenty of resources out there to help get your career off the
ground. But don’t forget to look at the big picture.
Prototyping is an integral part of the mobile app life cycle. Download Justinmind now and explore a prototyping tool that’s made with the entire product team in mind.
This
past summer I managed the largest acquisition campaign in my company’s
history. I work at HubSpot, a marketing software company that
popularized lead-gen campaigns and the whole idea of “inbound
marketing,” so this is no small feat (we’ve run massive campaigns over
the years).
The campaign, Four Days of Facebook, drove 10x the number of average leads of a typical acquisition campaign and 6x the lifetime value of projected customers.
But I didn’t do it alone. This campaign involved 11 teams and 33 people who directly contributed to the work.
Cross-functional
campaigns like this can be big, complicated, and challenging which is
why they so often take a boss or recognized leader to make them happen.
So I wanted to share my experience as a “non-boss.” I hope it encourages
other individual contributors out there to get their co-workers in
other departments excited about working on high-impact, cross-functional
projects.
Pre-planning: create alignment
You won’t have all the answers on day one, but make sure every conversation you’re having at this stage focuses on one thing: impact.
You’ll be asking a lot of people to work hard on something outside of
their normal day-to-day, make it clear that your asks will translate
into business results.
Meet with senior leaders of each team before you ask for their employees commitment on helping. Again, make it clear that you won’t be wasting anyone’s time, you’re out to generate big results.
Have a kickoff meeting with the team who will be responsible for delivering the work. At
a high-level, you want to let everyone know that you have senior
leadership buy-in and the project will be worth their time. On a more
tactical level, you’ll also want to get people up-to-speed on the tools
you’ll be using to manage the project.
Go the extra mile to develop a team culture for your team.
You know how developers name their projects crazy-sounding names? It’s
surprisingly effective! Give your temporary team a name that makes
people feel like they’re a part of something, set up an email alias, and
create a Slack channel. Get people excited!
Throughout
the pre-planning stage, keep your vision front and center. For Four
Days of Facebook we were partnering with Facebook, a fact I repeated
constantly.
If people are excited and engaged with your vision, they’ll put up with the inevitable bumps as you achieve lift-off.
During: maintain momentum
The Progress Principle
is the idea that humans love the satisfaction of wins, even if they’re
small. It’s your best friend as you seek to keep multiple teams and
dozens of people aligned and moving in the right direction–constantly
show (and celebrate) forward progress.
Display it:
I put together a registration goal waterfall chart that was updated
everyday to show progress. It’s motivating to close-in on and cross that
goal line.
Never shut up about it:
I linked to information about this campaign in my email signature,
Slack rooms, wherever I had the attention of my co-workers. And that
information was short, sweet, and up-to-date.
Be a good partner: You’re
not technically the manager of the people on a cross-functional team,
but you should implement some management best practices: give people
autonomy, figure out how they like to work and what kind of support they
need from you.
Ask for feedback:
I asked questions constantly– Is this system or process working for
you? Can I set up these reports in an easier way? At one point during
this campaign I asked the senior manager of a few folks working on the
project if she had thoughts on how I could run it better, she told me
she would love to see weekly updates sent to her and other senior
managers. I was avoiding this as I didn’t want to clutter inboxes, but
it ended up being one of my best tools for building internal momentum
around the campaign.
Don’t overlook the fundamentals of good project management. A framework like DARCI
makes roles & responsibilities super easy so you the project lead
can just say, “This meeting is for people who are Responsible and
Accountable only, we’ll be covering deadlines for next week”, or “This
meeting is for people that need to be Informed, it’ll be a milestone
check-in.”
Find a project management framework, and stick to it.
Wrapping up: close-the-loop
I
run 4–5 acquisition campaigns at HubSpot every quarter and running a
campaign of this size and impact was a complete rush and I can’t wait to
do it again. But before jumping into the next big project, it’s
important to do a clean wrap-up, I want people to be excited to work
with me and my team again in the future.
Say thank you:
Do it publicly via a company announcement or email, and privately. I
wrote handwritten notes to every person who contributed to this
campaign.
Share results soon:
Share the quantitative results, but don’t miss Twitter comments from
attendees, feedback from partners, or the accolades of your co-workers.
This is your chance to make it clear that you promised impact and
delivered it.
Look for improvement opportunities:
Because no matter how successful your campaign was, there are
opportunities to do better — Were any deadlines missed? Why? Did any
team members not work well together? Can this be addressed?
It’s
easy to get stuck in a rut of executing one marketing campaign after
the next, and it’s scary to think about leading a big cross-functional
project that could potentially fail publicly.
But
so often the answer to higher impact is better collaboration. Learning
how to lead across teams 10x’ed the impact I was having at my company, I
hope it does the same for you.
As
a scholar, I like arguing against myself. Thesis, anti-thesis,
synthesis: the Hegelian dialectic can be one of the more productive and
entertaining paths to truth.
And so, in this post, I attack the central thesis of my research: that
the ability to program a computer, and the computational thinking that
can come with it, is a power that must be democratized.
Why
do I believe this? I believe that a severe concentration of power
nearly always leads to injustice, and justice is one of my core values.
That only 20 million people write the software that shapes the digital
experiences of the 7.5 billion people on Earth is concentration of power
second only to global income inequality. My research aims to lower the
barriers to acquiring the power to code, which I hope will more evenly
distribute this power, which in turn will reduce injustice.
Agree
with me? Great! But that’s no fun. And it leaves this position open to
attack, with no sense of how robust it actually is. My position might
even be wrong.
So let’s consider three anti-theses to my thesis.
Ability is an arms race
One
critique of my thesis is that the ability to code is an arms race. No
matter how easy we make it to learn to code, this greater ease will only
amplify the abilities of those who already could. The privileged few
who learn to code now will learn younger and faster. All of those
talented new engineers that didn’t have jobs before still won’t get jobs
at Google because everyone else will be that much more talented. No
matter what we do, power will remain concentrated, because the
underlying social structures that protect that power will remain
unchanged.
This is an instance of Kentaro Toyama’s argument about technology as an amplifier rather than a catalyst of social change.
The argument is that technology of any kind, whether a learning
technology, a better pedagogy, a simpler programming language, or a
better developer tool, will only intensify whatever social structures
exist. It’s up to us to change our behavior, our values, and ultimately,
our institutions, if we want to redistribute power. More effective
learning will not.
Software is evil
Another critique of my thesis is that the software itself is a net loss for humanity. Communication technologies have eroded our relationships, democratization of publishing has eroded truth, platforms have eroded innovation, and automation has eroded our livelihood.
There may be some good things that come from digitizing information and
automating decisions, but on the whole, they take more than they give.
We should therefore have less software, not more, and so we should have
fewer people that can code, not more. Like nuclear weapons, we should
use software sparingly, if it all.
This argument abounds in pop culture of today. As all dystopian sci-fi has for a century, Black Mirror
is popularizing this position, portraying how even small changes in how
we use software can lead to plausible and horrifying outcomes.
Software is dangerous
One of the critiques I’ve heard most is the idea that software is too powerful
to be democratized. As in medicine, engineering, and law, some
knowledge should be regulated, only accessible to people with
appropriate training. The risk of allowing everyone have the ability to
code is that we increase harm. And perhaps were already seeing the
result of unregulated access to the ability to code: software fails,
people die. In fact, I analyzed 30 years of software failures reported in the news,
finding that about once per month, the news reports at least one death,
injury, or threatened access to food or shelter due to software
problems. Is all of this faulty software really worth this increasingly
frequent harm?
Some countries such as Canada do regulate software engineering.
These efforts are often poorly implemented and premature, but not
necessarily wrong in principle. We don’t want a billion people to know a
little bit about heart surgery. Why would we want a billion people to
know a little bit about software development?
Now, to synthesis. How can we reconcile these conflicting stances?
All
four of these arguments have a kernel of truth. The small number of
developers in the world really do concentrate power, and that does lead
to injustice like algorithmic bias, poor software accessibility for
people with disabilities, and innovations that primarily serve the
privileged classes that created them. And yet, software does cause harm
and can be evil. It’s entirely possible that by helping more people
learn to code, we’ll just end up with more people with brittle knowledge
of how to create software, more bad software, and the same people in
power.
The fatal flaw that puts these positions in conflict is that none of them make explicit who will learn to code and what
they will do with that knowledge. I envision a world in which a vast
majority of educated people understand enough about code not to become
engineers, but to advocate for justice. Some of those people will become
software engineers, but they will be different, more diverse people,
who represent society, unlike the engineers we have now. This larger
group won’t make any more software than we would have made otherwise
(and therefore won’t cause any more harm or evil than we would have had
otherwise). Rather, this new majority of computationally literate
citizens will be a political force that demands justice.
This
literacy could not be more pressing. For the next century, we will be
heavily debating net neutrality, privacy, the regulation of automation.
We will be trying to parent in the presence of social media. We will be
trying to make objective journalism sustainable and desirable. We need
every parent, politician, and person in power to understand what code is
and what it isn’t. And we need the 20 plus million developers in the
world to reflect everyone, so the software they create serves everyone.
The
other fatal flaw in all of the positions above is that they don’t make
clear what “learning to code” means. What does everyone need to
understand about software to be in a position to advocate objectively?
It’s not necessarily knowing a programming language. It might mean
knowing what programming languages are and are not capable of. It might
mean understanding the intersection between computing and policy. It
might mean understanding how software is engineered and who engineers
it, so everyone can comprehend what any particular policy proposal
they’re voting on would actually mean in practice. Some of these ideas
have made it into our curricular standards and assessments, but most have not. We need to understand what this knowledge is and invent ways of teaching it effectively.
Software
is not going away. It will continue to be evil and dangerous. It will
continue to bring joy and prosperity. But it will not bring social
change, and it will not provide universal access to knowledge about
computing. That’s up to us.
Hardik Gandhi is Master of Computer science,blogger,developer,SEO provider,Motivator and writes a Gujarati and Programming books and Advicer of career and all type of guidance.