DEV Community

Sloan the DEV Moderator
Sloan the DEV Moderator

Posted on

Is it possible to get relevant industry experience on your own (not through working at a company)?

This is an anonymous post sent in by a member who does not want their name disclosed. Please be thoughtful with your responses, as these are usually tough posts to write. Email sloan@dev.to if you'd like to leave an anonymous comment.

Hi everyone, I'm in a bit of a critical point in my life, and I would be extremely thankful to have the input from people with experience in the software development industry. I've been very anxious about this, so really, thanks for the advise in advance. This might be a little long. I'm sorry.

First, a bit of background: I'm 29, I graduated from Industrial Engineering a couple of years ago. While I was still in university, I also found interest in programming, specifically Android development. No programming was taught in my classes; I just casually came upon the idea through the process of rooting my first Android phones, which was something I enjoyed doing. It's been my dream for some time now to turn my own ideas into apps and make this into my business (first Android apps, then probably iOS apps if all goes well. I'm more of a creative person so I want to release my own apps based on my ideas, not client work.). I would obviously like to have a successful business for that matter. I've taken several online Java and Android courses, and I'm now at a point where I know enough to start building the first app ideas that I've had. I'm still very much a beginner, by the way. So they would be nothing fancy, but they'd be a usable and practical product with the potential of being improved upon as I continue to develop my Android knowledge.

A small note: I like Industrial Engineering too, designing and optimizing processes and all that, and would like to apply this knowledge in my business.

Ok, so I currently have a non-programming job that roughly pays my personal bills. I can do it from home and part-time because it's freelance, which is awesome and quite a miracle in my country. It leaves me a lot of free time to start building stuff and continue learning about Android and more CS stuff. It's also a very non-stressful job, which is very helpful when trying to combine it with other activities. I also struggle with anxiety, OCD and depression, so this kind of job has been a very positive change for my mental health. I would very much love to follow this specific path where I continue to support myself on this job, while I simultaneously start releasing apps and working on this until I actually start earning enough money and can eventually transition to this as my full-time job.

My problem is that I have one major gripe with the previously described path. I have some work experience but in areas that are not related to the software development industry. Earlier this year, I did a short internship at an actual software development company where they did client work. They were supposed to train me further in Android development, but it was pretty much a scam; I didn't receive any sort of training, and I really didn't feel comfortable overall with their culture and everything I could sense from the environment, so I ended up leaving the internship early since it felt like a waste of time and also didn't feel quite right. BUT, while I was there, I was able to pick up on some things as other employees talked to each other. These people seemed to have their processes very clearly defined and fine-tuned. They used a lot of different tools to do several things ranging from communication, tracking project tasks, tracking time, managing the APIs that they built, etc. I obviously didn't have any knowledge of these tools or the processes they followed. I still don't really know exactly what they were doing. I was only able to notice how they had several processes and tools in place. And I couldn't help feeling overwhelmed and anxious about how little I know about all these processes and tools and how much of a disadvantage it is to not have any industry experience like that at all.

I know that having some relevant industry experience increases your chances of your business succeeding. And I obviously want to succeed at my attempt of making a business around my apps. And as I said before, the path that I described first is the one I'd really like to follow. But this experience at the software development company has put the idea in my mind that if I want to be able to have a successful app business (or any other software business), I absolutely need to work at another company that does this, for some time, in order to gain some industry experience and then eventually transition to my own business. I'm having the idea that if I don't go and work at another company, I'll never get the kind of real-world industry knowledge that I need to be successful later, like it's the only way, and if I don't do it, my dream of having my app business would fail very early on. The problem is that for very strong personal reasons, I don't want to work as an employee in another company anymore. So I'm having the idea that if I went through my desired original plan described above, I wouldn't be able to get the same quality of knowledge and industry experience that I would when working at a company and that I would eventually fail. But, as I said, I really don't want to go through working at a company anymore.

A part of me also thinks that if I stick to the path that I want to follow, I could still get that same level of industry knowledge on my own. At some point the founders and/or employees of the company where I did my internship had to sit down and define their processes, do some research on tools and processes that other companies were using, try them out and keep on testing them and optimizing them over time. Maybe they even started from scratch too since the founder was pretty young when he started. So I'd have to follow the same process too until I found my own choice of tools and processes. It would certainly take me longer than if I had worked somewhere else where I could see an example of tools and processes already in place, and it would probably cause a higher amount of setbacks and trial and error. But that's why I'd have the support of my current job (along with living a bit frugally) until things hopefully work well enough for me to be able to fully transition to my app business. I also think that my Industrial Engineering background could actually be very useful in this regard and that things could probably turn out alright.

I don't really know much about this industry as you can see... So I'd like to know the input from persons who actually do. Is it really an absolute must to work at another company? (I know it would be the ideal thing to do... But as I said, I have very strong personal reasons against this.) Or am I a bit too obsessed with this idea and my second point of view is also viable? That where I follow my desired path and can still eventually get the desired level and quality of industry knowledge to make my business succeed.

I'm very sorry for this terribly long post. It's just that I've been very anxious, obsessed and depressed about this. I really needed to talk about it with people who know more about this than I do. And I thank you so much for reading and giving me whatever input you can.

Top comments (26)

Collapse
 
chrisachard profile image
Chris Achard

Short answer: no, you don't have to work at another company if you don't want to - in fact, it might actually hold you back!

Long answer:

It sounds like you're able to work and pay your bills, and also learn Android / do your own development on the side. That's a great position to be in! That means you can learn by actually doing on the side, and not worry about getting paid for it yet.

The best advice I can give is to keep actively working on your own Android apps. I would pick a small (tiny!) app idea that you have, and build that completely and actually release it. It doesn't have to be great (it's your first one!), and doesn't have to be world changing - it just has to actually work.

You'll learn SO MUCH by releasing an app from start to finish. Anytime you run into something hard - that is when you're learning. Lean into that feeling! It's going to be a struggle, but it will be so worth it in the end.

If you go to work for another company, then what you'll be learning is their processes, and their way of doing things - but it sounds like what you really want to do is to do your own thing! So you won't be learning as much as you may think you would at another company.

So: I wouldn't quit your current job (as long as it's still going well for you) - and I wouldn't expect to make a bunch of money quickly by making your own apps... but still make them! You'll learn so much.

And later, if you want to, you can always go work for a "real" software company. Plus - BONUS! You'll have actual, real apps to point to in the app store, so you'll be able to ask for more salary, or a better title, etc.

I hope that helps! I'm happy to answer any other questions. I would only go work somewhere else if you REALLY want to. But if you really want to just develop your own apps - then just do that!

It sounds like you're ready now :)

Collapse
 
joelbonetr profile image
JoelBonetR πŸ₯‡

Completely agree

Collapse
 
bootcode profile image
Robin Palotai

In short: no. What you sample from working at a company is processes. The more you see, the more data points you have. But you can make up your own processes on the go.

At Ericsson I saw the nice processes for handling customer bugs by multiple lines of engineers, also about writing product documentation for customers. I enjoyed the pace of quarterly releases, the professional calm of small, few-people offices. At Google I learned how to communicate and work effectively with multiple partner teams, how to maintain mass codebase and infrastructure, apply code-review practices to shorten turnover for distributed teams etc.

Processes used by large companies will differ a lot from processes used by a single-person business though. You seem to have plenty of process experience already.

Organization of codebase, service structure, testing plans etc will reflect the structure of the company. So the examples you see promoted by people working at big tech companies (pervasive use of microservices, for example) won't apply to you.

I would recommend reading Scott Berkun's The Year Without Pants, about how Wordpress.com's org operated - a very bottom-up, self organizing fashion.

Practical advice for working solo

Stay far away from edges

Don't use the bleeding edge. Don't use anything with an edge, actually.

You seem to develop Android in Java, good. Stick to it. No Scala, Kotlin, whatever. They will introduce some impedance mismatch, and every now and then make you loose weeks debugging odd corner cases.

No NoSQL, Rabbit/Active/WhateverMQ, Redis, Kafka, Kubernetes, Docker (ok, Docker maaaaabyeee... but no). These have their place if you have a dedicated infra team (or infra guy) who will spend weeks configuring stuff or debugging deployment issues.

No cloud managed queues, databases, whatever. They will be very expensive. Maybe some actual server instances in the cloud, but 1-2 big irons will take you far.

Yes: PostgreSQL / MariaDB. Learn SQL. No ORM frameworks.

Note: you need to play with the edge to keep professional knowledge up to date. But do it for toy tasks, not related to the critical flow in your business.

Invest in testing

When you are solo and don't have a review peer, tests are your best friends. Unit test what makes sense. Later when you have some flow of money, gear up integration / UI testing as well.

Follow this Git branching model

Using version control is mandatory. This works fine in practice: nvie.com/posts/a-successful-git-br....

Try to add some continuous integration eventually that will run your commits. But initially just don't forget to run the tests every now and then.

Try to add a server-side component

This is optional, likely no need to worry until 1-2 of your apps get stolen. And, maybe they won't.

If you have a server-side, your app will be harder to just snatch and copy. Ask yourself, what knowledge can I accumulate that will be hard (or at least non-trivial) for others to replicate?

Don't go overly fancy. Have a database and a simple Rest API to serve it. Initially you can deploy manually even.

Release often

Working in the dark for six months to get the perfect polished product is a no-no. Aim to release something in two weeks.

Have a list for bugs, feature idea backlog, in-progress tasks etc. A free private Trello board just works fine.

Do the gruntwork

Often there will be non-inspiring tasks, or bugs to be tracked down. You have to bear with these - working on the fun parts is fun, but most of the work is not very fun, at least compared to all the shiny tech you see on blogs. If you find it fun, ask if it is really essential.

If the anonymous poster pings me (can use robinp@treetide.com), I'll send a free instance of my book Programming Without Anxiety. This will show you the frustrations you would likely meet as a programmer, and help decide if you like that sort. Includes advice on handling them as well.

Special Java tip

As I worked with Java for an extended while, I can dearly recommend IntelliJ Idea. You can go a long way with the free Community Edition. Really makes a difference (I generally prefer mucking around on the command line and vim, but for Java I would die without IntelliJ).

Collapse
 
jasterix profile image
Jasterix

Why do you recommend avoid ORM frameworks? I thought they were commonplace

Collapse
 
bootcode profile image
Robin Palotai

Disclaimer: My experience comes from ~8 years ago, but ORMs were commonplace even that time. Not sure what improvement happened since.

An ORM framework gives you a false promise: that you can forget (or not even be much aware of) that you are working with a DB, and just continue using objects the way you normally would in your programming language (my experience was from Java).

That is a lie, and lies will come to hurt you eventually. Some specific examples that hurt me back then:

  • The promise that it is easy (no fiddling with schema, DB connections, whatever). Initial wiring is always a hassle - getting the configs right, getting JPA to register correctly, getting the annotations right. Not as worry-free as expected.

  • Leaky abstraction. For example, when you commit new objects to the DB the first time, their identity changes (see developer.jboss.org/wiki/EqualsAnd...).

  • Where are transaction boundaries? If db objects mix with regular objects and get passed around in code, it is easier to loose track of what is committed or not (or when). Usually what you want is doing logic upfront, then having a tight section where you make a transaction.

  • Limited performance. The ORM can't do as sophisticated query optimization as the DB can.

  • Unexposed DB functionality. Eventually you might need something from the DB that the ORM doesn't expose.

My choice is having a DB access layer, which exposes high-level operations to the user code, but implements db access using SQL directly. I believe it is a low-friction and clear solution.

Besides, writing huge joins is fun!

Thread Thread
 
trasherdk profile image
TrasherDK

I never got the idea with MongoDB and friends. My impression was, a lot of bloggers trying to push this new thing, that would make everything much easier.

Every time I came in touch with something ORM, it only blurred the hole data model, and I'd be looking for a way to migrate this thing into a normalized SQL database.

I grew my database bones with mSQL -> MySQL so my opinion might be colored by that :)

Collapse
 
stealthmusic profile image
Jan Wedel

Nice comment, there are a lot of great advices in there!

Collapse
 
bootcode profile image
Robin Palotai

Thanks Jan!

An addition to the company experience (I discussed it offline after writing): if not with colleagues, one should definitely start to build out some IRL social connections. Maybe visiting a meetup, or rather frequenting a local coworking office.

Many times I was accidentally helped out after casually mentioning a problem I have.

Collapse
 
adurech profile image
Andrej Durech

nice, I will just add:
take some courses or reading about 'Computational complexity theory' if you have not done yet. It's sometimes difference between good and bad aps.

Collapse
 
jpop32 profile image
Jovica Popovic

Speaking as someone with almost 20 years of industry experience... No, industry experience is not needed. At least not for the reasons you mentioned. There is no one right way for doing anything, no one true tool for anything. The truth is that everyone is just winging it, solving problems on the fly, iterating and changing things as they go. I've never worked in a place that operated the same from one year to the next.

Also, processes differ wildly, due to many factors. Number of employees, type of work, type of clients, type of software... Actual processes and tools you'd pick up working 'in the industry' probably won't even be applicable to your situation when striking out on your own.

Vast majority of tools and processes are there to facilitate efficient communication and collaboration between different people with different roles, different needs and goals. Working solo, you avoid all of that. If your app making career takes off and you end up needing to employ or partner with other developers, that's when you'll need to set up your way of doing things. But, you'll cross that bridge when you get there. And there will be plenty of books, blogs and other resources to help you along. You can even ask here. :-)

So, as to not knowing 'how industry works' - no need to worry about that. But, what I would like to caution you about is your business plan. Mobile apps industry is extremely competitive, and having a successful app is very, very hard, especially if you want to go it alone. You need to prepare yourself for a long, hard slog. Expect to have several false starts and apps that get no traction. Rovio got a huge hit with Angry Birds, but it was their 52nd mobile game! All previous were flops. I'd advise you to approach your early attempts as learning experiences, worth it for the journey itself. If any get traction, great. If not, never mind, you'll learn from it. But be prepared to move on and move fast to the next project. With some luck, you'll get a winner eventually.

Hope this helps, I wish you good luck.

Collapse
 
vier31 profile image
Jan SchrΓΆder

My advice would be, don't jump in cold as a total beginner with no industry experience and try to support yourself full time with your own business. I have only second degree knowledge about the mobile market, but from what I gather it is extremely cut throat and a bit of a lottery until you make it.

Plus, if you want to run a one person business, you will need to do it all. Accounting, Marketing, Sales, Development, Testing, Customer Support, etc.

This takes time, especially when you have no prior experience. You will make mistakes. These mistakes will cost you money. This is how you will learn.

I don't think it necessarily matters if you gain the experience on your own or in an organization, but I think it matters that you don't put your livelihood on the line.

You say that you struggle with anxiety and depression. I can tell you from experience, running your own business is very taxing on your nerves. It is extremely difficult to take a break, it is likely that you will think about it constantly. I did that, I started a business and on top, I tried to support my family of four with it. I failed, I burned out. I didn't have the resources to make up for the months where business was slow. After a year I closed and am now happily employed. But that is me. At the same time, I can tell you, that there are few things as rewarding as celebrating successes in your own business. It's awesome.

As just a random person on the internet, I can only offer you my perspective on this. In the end, you will need to figure it out on your own.

My advice to you would be this: If you have a stable job, that supports your live style and at the same time leaves enough room to work on an app, keep the job and develop that app on the side. Gain experience. If you fail, great, learn from it. If you succeed, awesome, you earned it. But for your mental health, stay safe until you are good enough, successful enough to leave your job. That's when you take the plunge.

You are 29, there is no need to rush.

Collapse
 
thorstenhirsch profile image
Thorsten Hirsch

I'm pretty sure that articles attract a wider audience than audio recordings (by far). Why? Because you can only listen to someone speaking in realtime, maybe 1.5x realtime before it gets too fast, but when you have a written article you can skim through and even skip paragraphs. So articles might cost you more time to write than recording some audio, but articles save your audience time.

Collapse
 
vuild profile image
Vuild

Build a lot of apps fast, get people to install & use them. Focus on that. Keep doing it. If one of them starts to feel like it has loads of potential, grow it further.

If you have a few reasonable apps with some installs, people will pay you to work on theirs. From there you can take the direction you want.

Keep your paid work until you feel ready.

Collapse
 
itsasine profile image
ItsASine (Kayla)

I don't know if you're asking the right question, to be honest. It sounds like you want to strike out on your own without having worked in a formal job doing software development long term.

As long as you know what parts go into what you want to do, you'll be fine. You're always going to have growing pains regardless of your background, so there's no point to fretting about one piece.

Like, yeah, you may not know the ins and outs of making a perfect build pipeline, but do you need that right now? You also likely have never worked in marketing, but do you think you need a marketing job in order to get users for your app? Nah, Google it or hire a firm for that if you need it. If you find you don't like manually building an app and pushing it up somewhere, Google alternatives and figure out about build processes then.

Collapse
 
onecuteliz profile image
Elizabeth Jenerson

Define "industry experience"...

As it pertains to the definition of working for a company and picking up tidbits from there: no, this is not mandatory at all.

As it pertains to industry experience as it pertains to getting a mentor from the industry or surrounding yourself with peers who have industry experience: yes... Sooner than later, but not day 1.

Learning with / from those in the industry provides insight into the nuances you'll never get by yourself: code that is written well because ONE DAY someone may take over the coding while you concentrate elsewhere. Good code that can be picked up / understood easily is worth it's weight in gold.

If you are thinking of expanding one day to more than just yourself the surrounding yourself w/ I dustry folks can help you learn about good programming practices within groups.

Collapse
 
mharis profile image
Haris Zulfiqar

Relevant experience matters. You're building apps and gaining relevant experience.

On top of that, you're building your portfolio as you keep developing apps. So keep at it, you're doing the right things. :)

Collapse
 
jevason90 profile image
Jonny Evason

Hello Sloan.

Firstly thanks for the post and. Bit about me. I am a c# Dev with 3 years industry experience.

In answer to your question. No it is not absolutely necessary to have industry experience, however it does make getting a job or clients easier.

I am speaking from experience, I have a degree in a niche engineering sector and I am currently employed as a C# Dev working on some pretty cool tech stuff, Azure, microservices, serverless etc.

I too wanted to get into programming and tech and that was around 3 years ago after going through some hard personal stuff.

For me I simply kept learning the craft whilst applying for junior jobs, until I found a company willing to take a chance.

I am essentially self taught. At first it was hard and frustrating, but not giving up and continuing go learn helped me to secure my job.

The best thing you can do is learn everything you can. Look at example projects on your favourite repository (GitHub, gitlab etc.) Read blog posts, hell write blog posts about what you've learned, get involved and never give up.

If it takes a month great, if it takes 12 so what, you will still have achieved what you set out to do.

Good luck and if you need more advice then shout up, this industry is one that generally cares!