If you're asking yourself - Can I become a developer - the answer is yes. Yes you can but it won't be easy.
You want to be a coder and don't know where to start?
You're not alone. Developers, software engineers, UX designers, mobile developers, cloud engineers, blockchain developers, AI developers are all part of the top 10 most in-demand tech jobs in 2019.
A career as a developer offers job security, above average income and the chance to work with leading edge technologies. The average salary of a full stack developer in Australia is $110,000 according to neuvoo.com.
Most courses quickly get you into building a small 'Hello World!' project because there's really no other way to learn to code, then by doing it. Replicate small unambitious projects you've found in your course or video, starting with tutorials and improving with documentation.
You'll find tutorials on GitHub, YouTube and on many of learning platforms listed above. Use them to get you to a starting point where you can experiment and change things.
Documentation is the source you should always be learning from. Every framework or library has its own and whether it's good or bad, it's where you need to go back to master that particular technology.
Don't forget Google! Google is your best friend when you've got a problem because it's better than Stack Overflow or anything else for finding a fix or solution for your problem.
Getting lost when tackling a problem or learning something new is commonplace when you're learning to code. The pace of change in development technology is frenetic and even senior devs with 15 years experience get lost sometimes.
In the path of learning to code you will have moments of self-doubt, discouragement and crises of confidence. You will think, like I did, that 'you just aren't getting it' and you'll never be able to do the most basic job that a developer does.
But don't give in! Every little bit of learning you gather, piles up and eventually aggregates into understanding. And suddenly things add up - you'll solve a problem, understand where you'd didn't before and things will get a little clearer. Go back to your tutorial or the documentation and read it again with newly awakened understanding.
The whole object of this exercise so far was to get a job as a developer so don't waste time. Put your CV and portfolio together and start applying for Junior Developer roles.
Your portfolio is the key element here. You should have a handful of public projects that showcase your skills. They don't need to be polished but they do need to show improvement in your skills from one to the next. Don't delete your early projects, no matter how bad the code is. When we're looking for candidates we are interested in those who can learn and improve - everyone's first projects are terrible.
Expect to complete an assessment task - this is common practice for most employers in the tech space. Read the documentation of your chosen language or framework again and practice common tasks. You'll find plenty of examples online.
Don't waste your time talking to recruiters. Employers aren't interested in paying a recruitment fee to find a junior so you'll be wasting your time. Instead look for direct employer job posts, follow likely employers on LinkedIn and network with other developers to hear about opportunities when they happen. More than 80% of jobs come through your network rather than from responding to a job advert so apportion your time appropriately.
Find an employer that is a fit for you. Evaluate the employer as they interview you. Ensure the job is one you'll enjoy and that gives you the opportunity to learn and develop. Find out if there are resources such as senior developers, libraries, sponsored learning or training programs that will develop further skills in your chosen field.
Communication is often a hard-to-find skill in a developer so demonstrate your strong verbal and written skills at every opportunity. Strong communication skills will make it easier for you to work effectively within a team, interact with other employees and with clients. Your communication skills may sway the hiring decision and quickly cement your place in the team.
You CAN do it.
I became a front end developer in just 3 months and I'm well on the way to becoming a backend developer after 5 months. It's a challenging journey but well worth the effort.
Give it a go - I'll be cheering for you. 🙋🏽♂️
I must have tried at least a dozen project management tools and workflow strategies since my first commercial project way back in 2005.
A development workflow that consistently delivers is without a doubt one of the biggest recurring pain points in a software developer's life. Even with regular fine tuning, what works one month might not work at all the next.
The reasons for workflows frequently breaking down are varied, but some common reasons include scope changes, personnel changes, unanticipated events or non-work life events.
There are two abundantly clear dilemmas to solve for any software development team:
Touch wood, at Coding Labs, I think we have answered both of these questions for the foreseeable future, leaning heavily on the inspired thinking and products created by dozens of others.
It goes without saying that no system is perfect and what works for us won't necessarily work for others.
But before I dive into the 2019 strategy, here is a summary of some of the strategies i've tried.
Often a great place to start is the good old pen 'n paper. In fact I still use this method regularly during meetings or when I am well and truly stuck on a complex task.
On the downside, it does not scale to other people (especially if your handwriting is as illegible as mine), it is extremely messy, environmentally wasteful, and you can't access it remotely.
Following the "scratch your own itch" wisdom, and with the added benefit of documentation that could survive an overzealous desktop cleaning effort, in the late 2000s I developed my own internal project management software that kept my to-dos organised, supported client log-in, and even had a rudimentary password vault*!
Like a lot of my DIY experiments over the years, this project also fell in the basket of don't be a tightass, stop wasting time and find a fully featured product for ~$10 a month to do this thing.
To my great joy, I recently discovered that my original Basecamp account from way back still existed, and even better still, had the same original UI!
Basecamp was pretty good for me in some ways (certainly much better than my DIY efforts), but nagged at me in other ways as I learned more and more about agile workflows and sprint development.
It felt geared to marketing types whilst my interest was pivoting strongly towards application development with more complex needs.
Enter the King, the enormous monstrosity that is Jira*.
The project management tool that literally does everything you can think of.
In many organisations Jira has a specially trained staff person just to circumnavigate the settings, let alone utilise it to its full potential.
I had a good 2 year run with Jira, the integrations, analytics and reporting are fantastic, and when used properly can do powerful things.
* In fairness, Atlassian appear to have recently made substantial progress on lowering the barrier to entry for Jira
One of the frustrations in a lot of project management solutions, is that they do some things well but omit other features because some other SaaS product does it better.
For example, how good is a plain old word processor to formulate a written plan, or even just used as a bit of a dumping ground for ideas that are not quite development-ready, but still worth noteworthy.
I briefly flirted with Google Docs as a pseudo project management solution, and yes, it lasted about a month before it fell apart at the seams.
With the inevitable breakdown of Google Docs as a viable task manager, I was back on the hunt. On a recommendation, I gave Clubhouse a try.
Like Jira - with an unmistakable focus on software developers - but without the kitchen sink; Clubhouse looks and works great right out of the box.
Again with solid reporting features and probably the best milestone, epic and to-do list functionality i've ever come across (bulk to-do editing ftw 😍), Clubhouse held its own for about 18 months.
But there were still some nagging questions:
History repeats, and for me that meant returning to Basecamp at the beginning of 2019 after almost a decade long hiatus.
In the interim, a lot of things have changed at Coding Labs:
Basecamp is currently solving all of the above issues (and more) for us.
I have spoke at length about the tools I have used, but not much about the overarching strategy that guides how we estimate, budget and allocate time.
The truth is, I have tried just about as many workflow strategies as I have project management tools. To list a few:
Perhaps my scrum master gospel just ain't up to scratch, but what I always find is that sooner or later, a project reaches a stage of decision-paralysis, with so many good, worthwhile ideas; but for various reasons, the work that gets ultimately shipped does not come from the great ideas basket, but rather the this-is-more-urgent basket.
On the estimating front, an estimate for a task bigger than about 10 hours is not worth the paper it is written on.
At the start of 2019, I decided to strip our processes right back to barebones, and re-think our workflow from the ground up. The things I have figured out over the last 14 years are:
Borrowing heavily from Basecamp's inspired workflow, at Coding Labs we settled on a 2-month workflow cycle.
Part of the carry-over benefits of moving back to Basecamp, is that there is no room for ambiguity about "where things go". If it relates to project management, it is in Basecamp.
For the most part, ideas start in a per-client document called the Scrapbook. This is a semi-organised collection of pre-pitch ideas and incidental backlog items that are not ready to be actioned, but still worth remembering.
In the first week of a cycle, we start harvesting Scrapbooks for ideas and liaising with clients about what they prefer us to tackle next.
There are no hard and fast rules here, the chosen work just needs to be big enough to be worthwhile, but small enough to be achievable within the timeframe.
The winning ideas proceed to a dedicated project in Basecamp, each with its own guiding Pitch. The Pitch details in broad strokes the who, what and why of the project.
Each Pitch is very much a living document and subject to change during Pitch Week as the underlying tangible result emerges from the rough.
The Build follows on from the Pitch in roughly two halves.
The first half is all about further refining and assigning the actionable tasks that have emerged from The Pitch. As time passes, we establish a strong grip on exactly what will be built through prototyping and validating ideas.
The second half is all downhill. We know exactly what we are doing and we go about getting the job done. We test, review and try and break things. Time permitting, we look for opportunities to add a final coat of polish.
At both the individual project level and as a company, we take a look at how we performed, tie up loose ends, celebrate victories, and look for ways we can do even better the next time around.
Technical debt is the consequence of several actions (or inactions) in web application development:
The nasty reality of technical debt, as opposed to financial debt, is that you incur technical debt simply by doing nothing, and the payback tends to grow exponentially the longer you leave it.
Technical debt is a by-product of rapid, continuous technological change; with no foreseeable end in sight.
Fortunately, there is a simple remedy - treat your web presence as an investment in your business and your future, and know that the act of nurturing also gives you the opportunity to multiply the benefits that led you to build a web application in the first place.
Each year I write down a short list of goals, and at the end of the year I rate my performance. I have been doing this privately for many years, and starting in 2019 I am going to move this process into the public domain.
Following from efforts in 2018 to diversify some project work away from our hugely successful, 14 years long project Live Platforms, 2019 will usher in a complete separation of concerns between the two companies as Live Platforms seeks to become a self-sufficient entity.
We will need to spin off project management, VCS and infrastructure accounts, slack etc; hire internally in Live Platforms, replacing skill areas currently covered by Coding Labs personnel; and tighten the commercial terms between the companies.
Design is one of those tricky subjective areas of development, where sometimes a more programming orientated developer can pull off a pretty UI by borrowing from the right example, but other times they spend a bunch of time spinning the wheels, not really knowing why something looks like a monkeys butt.
Whilst we have stumbled across some exceptional resources to "codify" design, ideally you have a dedicated designer at the table who not only can do great design work, but also has a deep understanding of the project and the particular UI and UX concerns.
This frees up the developers to focus on what they are really good at: making things work!
We have tried a number of approaches to filling the design skills gap over the years, often times a client will BYO their own designer, other times we work with freelancers; sometimes a developer left to their own devices hits a home run, other times not - but it has become abundantly clear that the best long term solution is to bring a designer in to our tent permanently.
Adding staff is a pretty expensive exercise, so to accomplish this goal we need to continue the work of broadening our client base, as well as taking responsibility for more design tasks in a project.
I also want to investigate a line of products, such as SaaS apps, eBooks, self-assessment tools, website audits etc; all with the aim of developing revenue streams that are outside of the traditional our time for your money equation.
2018 was a fantastic year for our coworking office, Burleigh Space. After putting in the groundwork in our first year (2017), all of sudden new members were finding us without any advertising spend, we hit 100% capacity on our full-time desks, and the concept of coworking seemed to be well understand by everyone who stepped in the door.
In 2019 we want to continue to build on that strength through deeper connections into the Gold Coast creative and tech scenes, and really cement Burleigh Heads as a technology hub to be reckoned with.
To raise the profile and awareness of Coding Labs, we will:
Following a Xmas holiday read of Basecamp's It Doesn't Have to Be Crazy at Work and a re-read of their excellent workflow post, I am feeling inspired to iterate on our current project planning process.
In 2018, we moved from a continuous sprint cycle all the way out to 3 month milestones, covering a number of epics and smaller tasks.
At times a 3 month window was helpful for productivity and focus, and we did get better at scoping and execution as the year progressed - other times the gap between the planning, build and deployment stages was too long, and inevitably all the pet hates of feature creep, over-ambition, changing priorities and fatigue were accentuated by the longer periods of work without any opportunity for reflection.
It also made it quite difficult to address unscheduled consulting work and led to some interesting conversations around how soon we could start on new projects and features.
On the planning side, we only gave ourselves 1 week to plan the next 3 months which generally meant that some tasks were lacking clarity and project management continued to crop up week-in and week-out, rather than going gracefully in to the background while we knuckled down.
The shiny new blueprint for the 2 & 6 workflow is as follows:
The 2 week review / preview period allows the team and relevant stakeholders to see what was learned from the previous build stage, do any cleanup, engineering or exploration work, and help to formulate and pitch ideas for the upcoming cycle.
The winning ideas will be a mixture of small and large batch items, and each completed idea will be shipped when ready.
It is significant to note that every story in the backlog and every idea sitting in somebody's brain serves only as a potential candidate. The deck is cleared every 8 weeks, and we make a fresh assessment on what is most important in the current moment, without pre-committing on anything.
As we are a small team, we will mostly work together on everything, however as the team grows we will seperate the small and large batch teams, rotating employees at the conclusion of a cycle ad-hoc.
In the first quarter of 2019 I hope to see better defined planning, a higher rate of delivering on what we planned, and improved communication and expectation setting.
Both business development and account management have been areas that have received varying levels of attention (usually not enough) as I have juggled the many balls of small business ownership.
With Jerrell onboard, we now have an opportunity to invest effort consistently in these areas.
On the business development front, we will experiment with building a referral system for complimentary businesses (such as marketing agencies and Wordpress specialists), where they can pass on projects that exceed their own technical capabilities.
We will also investigate some more traditional marketing avenues, without becoming annoying wankers in the process.
Oh and swagger. Loads of swagger!
For our clients, they will get the piece of mind of having a point person to talk to about their infrastructure, as well as having increased opportunities to collaborate with us more than is currently possible.
Well, I think that's a wrap! Who doesn't love finishing on a Tim Ferriss quote?
Doing something unimportant well does not make it important.
Each year I write down a short list of goals, and at the end of the year I rate my performance. I have been doing this privately for many years, and starting in 2019 I am going to move this process into the public domain.
I have found that speaking or writing about the things that I consider to be on (or beyond) the edge of what I consider possible - whether personal or professional - is the first critical step to tricking my brain into believing it is actually going to happen, and usually is enough impetus for me to give it a shot.
The goals are generally a mixture of fairly achievable (without being a walk in the park), through to downright difficult and highly ambitious. A bit of both is healthy I think.
Without further ado, my 2018 goals:
#1. Launch a cryptocurrency trading app in collaboration with my friends.
Like many of my peers, I jumped onto the crypto bubble in 2017 with a gusto; certainly not an early adopter, but also not as bad as the poor suckers who thought $25,000 AUD was a fair Bitcoin price.
With such wild enthusiasm, greenfield services popping up left and right, and scarce indication that most coins were absolute bullshit peddled by sharks with compelling marketing skills, a few friends and I thought it would be a good idea to build an automated crypto trading app.
At worst the thing might stink and we would (hopefully) never put down any serious money after seeing disastrous simulations / the loss of a bit of play money.
At best, we make squillions of dollars, not just from our own auto-traded portfolios, but also from the legions of crypto tragics who would pay us to use our service!
#2. Maintain a minimum full time workforce of 2 within Coding Labs, expand to 3 FT + 3 reliable recurring contractors.
2018 was a year where I wanted to build on the strengths of 2017 and add another full time developer to our ranks, as well as build relationships with at least 3 reliable contractors for ad-hoc and overflow work.
#3. Take our coworking office Burleigh Space - where Coding Labs in headquartered - from startup status to a more stable business.
Entering our second year of operations at Burleigh Space, we agreed that we wanted things to settle down since the extensive fitout work was largely completed during 2017, and we had found a nice product market fit on our pricing.
#4. Offload Convict Records to a suitable caretaker with or without a profit.
My old side project, the Australian Convict Records website has been largely in a development deep-freeze since about 2011, and each year the perceived pressure to do something about it grows a little more.
The pressure comes from the fact that the site remains wildly successful in terms of community support and active contributors - 30,811 contributions at time of writing, and I can't help but feel that I owe those contributors a thank you by sorting out some of the obvious usability and functional issues.
For 2018 I resolved that the best course forward was to find a caretaker, particularly one who could push the development forward and overcome some of the common annoyances; or if nothing else, at least carry on current operations indefinitely.
#5. Deliver 2 major projects outside of Live Platforms.
Since 2005, our workload has largely been dominated by one enormous long term project, Live Platforms. This is a truly a massive project - facilitating over $8 million AUD in sales in 2018, and growing at 107% year on year.
Whilst this is a fantastic success story, Live Platforms (of which I am also a part owner) must ultimately transition from a IP holding company into a self-sufficient company, with ongoing support from Coding Labs.
For this reason, we are starting to put more emphasis on working across a diverse range of projects, which creates new exciting opportunities in different industries.
I score each goal either a zero, half or full point based on the level of success.
#1. Launch a crypto trading app ( 0 )
#2. Expand CL staff ( 0.5 )
#3. Stabilise BS ( 1 )
#4. Offload CR ( 0 )
#5. 2 new projects ( 0.5 )
Overall: 40% strike rate
#1. Crypto completely tanked over the course of 2018.
Fortunately I threw in the towel on my "investments" when it became abundantly clear of the terminal downfall of cryptocurrency - I did manage to walk away with a small profit, but man oh man if only I sold at the peak, said everyone ever.
With the writing on the wall, the crypto trading app sadly got the chop.
It was real easy to make money whilst new money was pouring into the market, and it was real hard to make money as most everyone headed for the exit.
Such is the reality for trading bots in markets tethered to the real world, I guess.
On a side note, I am glad the crypto bubble has burst, the air has now been cleared for the adults to do some serious things with Blockchain technology, which is most definitely here to stay.
#2. No progress on freelancers.
Nothing much happened in the way of growing our freelancer network in 2018.
#4. No movement on Convict Records.
Several promising conversations with reputable universities and Government Departments early in the year yielded no fruit. Convict Records may yet be salvaged as an in-house project.
#5. Landed 1 major project.
We did onboard one new major project in 2019 (which is currently still in development and top secret).
#2. Team makeup is improving.
The management team is now an actual team instead of just me, with my long term colleague Jerrell stepping in as Director and overseeing various roles including HR, account management and business development into 2019.
Jerrell is not only continuing to help me build software teams as he has done for over 12 months already at a consultant level, but is also upskilling himself to write website front ends, combining his design intuition with the wonders of Tailwind CSS.
2018 also saw our full stack developer and Linux ninja, Zach, move from contract to employment basis.
#3. Burleigh Space running well.
Our coworking office has had a breakout year on multiple fronts:
More developers forced improved processes
Expanding the team size and working with new freelancers forced positive changes to our workflow:
After a spur of the moment, insane 10 day trip to Laracon US in Louiseville Kentucky back in 2015, Laracon really came to me this time in the form of Laracon Sydney.
This was a really great conference and is a reflection of the amount of talent and open source contribution coming out of little old Australia.
Perhaps Tailwind deserves a dedicated post one day, but for now let me just say that moving to utility-first css just seems like the most obvious thing to do in retrospect.
That's a wrap for 2018!