If I Had to Start Over as a Developer - Pt 1
As a software engineer, I have done a lot. I built Microsoft Access database applications, websites of all sorts, client/server applications with midnight deployments, and eventually web-based applications took off with ASP.NET and some remarkable Javascript frameworks. During that time, I worked with all sorts of developers and tech support people interested in becoming a developer. I’ve recently had friends from run-club ask me what they should do to become a developer during our run together; I would give them more details after the run over a beer.
This all led me to think about it and question myself, what would I do if I had to start all over again from scratch. I’ve seen videos of people talking about what they would do if they had to start all over; many of whom have only been in the industry for about 8–10 years, and I figured since I’ve been a developer for 22 years, I would provide my advice as it may be just a bit different than other developers.
Survey the industry
There are so many different industries out there that need software developers and this is probably the first thing I would do. Based on what I’ve experienced, I would see where the most need is as that’s probably where a company wouldn’t mind hiring a junior developer and mentoring me to become a better developer over about five years (more on this later). The two industries I worked in the most were healthcare and finance/audit.
Working for a startup company would be, in my opinion, a bad environment for a junior dev. My experience with the startups I worked for is that it’s a high-paced, high-stress environment and there is little time to teach and mentor a junior developer. The company is focused on quick releases as they are short on time and money. For a mid to senior-level developer with an entrepreneurial mindset, a startup environment is fun and oftentimes highly rewarding.
Working in a long-established corporate environment means structure and a better chance of developing good habits:
- Listening for problem areas during a project meeting
- Documenting requirements to ensure everyone is on the same page and there’s no scope creep (ha… it still happens)
- Documenting my code and refactoring
- Learning and implementing a couple of software development patterns
Learn the full stack
The next thing I would do is to learn a full technology stack. When I first started, it was a Microsoft Access database application with forms and all. This later turned into a Visual Basic application with a Microsoft SQL database and then, years later as Microsoft came out with C# and then ASP.NET; a web application in ASP.NET with a C# back-end and a SQL Server database. It’ll be different now with the different tech stacks out there, but I would spend time learning a full-stack.
Why full-stack? Well, everyone has a different strength when it comes to software development. Someone may be good with database architecture, others are solid back-end developers, while the remaining developers are amazing with the front-end. When you’re first starting, it’s great to focus on one of these areas; but, it may not be what you become passionate about. Having experience with the full-stack allows you to find what you enjoy doing, then, and only then; will you be able to focus on that one aspect of development and master it.
Hone your craft
I mentioned earlier that I would look for a company willing to hire a junior developer and mentor me for five years. A lot of developers these days will stay at their first company for 2 to 3 years before moving on; looking to move up and get a higher salary. These developers are missing out on the mastery before they move on to bigger and better opportunities.
Robert Greene, author of the book Mastery; wrote that to become a master at something, you have to spend 10,000 hours honing your craft.
“You must understand the following: In order to master a field, you must love the subject and feel a profound connection to it. Your interest must transcend the field itself and border on the religious.”
— Robert Greene, Mastery
If you calculate how long 10,000 hours are in terms of a typical 9–5 corporate programming job; 40 hours per week for 50 weeks (2 weeks of vacation time), it comes out:
(40 hrs * 50 wks) = 2000 hrs * 5 yrs = 10,000 hrs
I’m pretty sure that if you’re a new developer, you are most likely not putting in 80 hours per week which would cut the 5 years in half allowing you to master your craft before moving on. Plus, the next company you interview for may look at your first 2 to 3 years at a company as a commitment issue and may think that you’ll stick around for 2 years before moving on. As the hiring company, this sucks and if they’re hiring new developers every few years, it indicates to other prospective developers that there’s high turnover and the environment may suck.
If you’re in your early 20s and single, you may have time to spend after-hours honing your craft and become a better developer through books, classes, and experimentation. This extra time becomes more difficult if you are more established in life; married with children and owning a home. The majority of your time after-hours is invested in your family and doing chores around the house.
Experiment with POCs
If and when you do manage to make time after-hours, you should be experimenting with new tech stacks, languages, and frameworks. You should be learning new design patterns, data structures, and algorithms. Eventually, you’ll want to build a side project or POC (proof of concept). This is where you will be able to refine everything you are learning in and out of work. This can become part of your skillset and your resume.
Companies looking for developers will be impressed and more interested in a developer that has invested time in mastery work and built side projects than a developer who just put in their 40 hours for 5 years. By this point, if you’ve learned a full-stack, spent time working and being mentored, and invested extra time to become a better developer; you are now a mid-level developer and can move to bigger and better opportunities.
Final Results
You are now a mid-level developer, well on your way to becoming a senior-level dev with the prospect of team lead and eventually manager or higher level. You invested time for 5 years to hone and master your craft; finding which aspect of development you are passionate about. You’ve even learned advanced skills and have become valuable to any company and the compensation in terms of salary, bonuses, and more shows.
My question then becomes… what would you do if you had to start over in a different industry?