The creative process, viewed from a Pro vs Hobbyist point of view

What type of developer are you?

  • Professional

    Votes: 5 17.2%
  • Hobbyist

    Votes: 12 41.4%
  • Both

    Votes: 12 41.4%

  • Total voters
    29

Cableguy

Expert
Licensed User
Longtime User
This thread skims a few others that have been posted before, but this time, hopefully, we (the community) will get a bit more out of it.

The objective is to better understand the main differences between the creative process of a contracted developer and a Hobbyist.

I place myself in the Hobbyist class, and thus i develop my own ideas, but, since i cannot afford some specialized tools, I try to do with any "equivalent" free option i can get.

My creative process starts, as for anyone, with a generic idea for an app...
But then I get tangled and limited by how I want my app to look (which I almost always have no idea) and how i want it to work... (I usually have a "general" idea, but keep adding, and rethinking, and adding, then subtracting, etc).
As non-B4x tools i use:
  • Paint.net
  • Notepad++
  • Heidi
  • A cheap (6€/month) vps to start DB related projects

I sometimes find myself trying to find tools to simplify my creative process, like flowcharting, etc, but never find what I need, or they are simply too expensive.

So, this threads objective would be to get the professionals point of view, related to the creative process, even thou they surely are more limited in options since its not their idea, nor functions to implement.

I'm thinking us, the hobbyist, could gain a lot of insight with the sharing of creative processes each uses.
 

MikeH

Well-Known Member
Licensed User
Longtime User
I am hobbyist turned professional (nearly two years ago).

For 30+ years I wanted to do coding for a living, then after some "life events" happened I decided to go for it, because one day may be too late and then all we'd have are regrets.

First things first, Im not making a fortune but I am making enough to live plus a bit. Im doing it because Id be doing it anyway, so why not do it instead of the boring 9-5 job?

I started off writing some apps for a client. He was fairly specific with what he wanted - and after seeing one of my other apps he asked me because most of what he wanted was covered in that. Well, after being messed about a LOT I decided working for clients was not for me.

Since then Ive been writing my own ideas. I get inspired by a need - or if someone just says "hey Mike, could you write....?" then I either have a go as a personal challenge (hence my games) or try to work out if there is a big enough market to make it pay. Looking back (I have about 40 apps in both ios and android markets) I couldnt have predicted which would be good earners and which wouldnt. In most cases Ive been very surprised (or disappointed!) For instance my Tyre Pressure app I did as a personal challenge. It has terrible feedback - but its my best earner by a long way. Go figure.

So, creative process... hmmm... I sit at my desk, in my house, or in my RV if the weather is too hot and just plod along slowly. I dont spend a lot of money on software (shock horror!) but I have spent well on hardware. I say "well", not "a lot" because although my equipment is quite high spec, Ive managed to get very good deals (e.g. 2013 MacBook Pro 15" Retina 2.7ghz with brand new screen, £700). Besides B4X, I use InkScape and Reaper the most. I paid for Reaper and would pay about the same for Inkscape if needed, theyre absolute bargains. You have to consider them tools and will pay for themselves if used properly - just like B4X.

The process of writing an app is usually about the same for me. I'll develop the idea as thoroughly as I can in my mind, I might also make some notes and sketches with good old pencil and paper. This thinking can go on for months, its better that way because thoughts arent wasteful. Also, the thinking can take place anywhere, anytime - waiting in a queue, brushing your teeth, before falling asleep etc etc. Oh yes, its happened, Ive been on the toilet and suddenly a banging noise at the door and an angry voice asking how long am I going to be - my answer "Sorry, was thinking about an app" lol :)

When Im ready, ie all other projects are finished, I review my thoughts and whichever app idea is the most viable and is closest to finished in my head, is the one that gets started. By that time its usually just a case of transferring the thought to code. That also means there are fewer rewrites, when there are, its because my thought didnt translate to code as well as I expected. Doing it this way means from starting to being submitted an app appears to take little time - but a lot of the work has been done already in my head. I always keep a few ideas waiting, so that I always have something to do, even if its "only" to think about a certain app.

Well, I see Ive rambled on a bit there. I hope if youve read this far youve got something out of it. Id finish by saying "Do what you enjoy. If you only make enough money to live on, you'll still be a happy man (or woman)". These days, Id consider that a big success if you enjoy your work and earn enough to pay the bills.
 

L Harris

New Member
Licensed User
Longtime User
Wow awesome comment Mike.. :)

For me just getting started i guess I can open up a bit so that people can get to know me hehe.. :)

i started on the path of coding years ago, just for fun making a fps (first person shooter) for my kids and i with Unity3D. lol.. It worked, we had some fun and I treated it as a class for me and the kids.

In November of 2016, I decided to "up the ante" and learn a bit more.. the amazing thing is that i understand more, about code.. not a lot, but just enough to get into trouble hahaha:D

I am working on basic, simple apps.. i.e making a msgbox2 with some graphics in the background, and put a little groovy music in it.. mp3 .. lol simple button and get a result, and i am proud of it. It is a start.

The CHAT ROOM is invaluable, combined with the forums.. or vice versa.. and youtube helps for some stuff.. I love it here, and as I get better and advance more in programming, I will comment more LOL..

I use photoshop and b4a.

With that said, I wish all a awesome coding experience !!:rolleyes:

Larry;)
 

RandomCoder

Well-Known Member
Licensed User
Longtime User
Hi @Cableguy you know me pretty well pal as we've been members here since forever (both joining around the same time ;)).
As you know, I'm a hobbyist programmer when it comes to using B4X. I write apps to fulfill my own needs and also enjoy providing advice here on the forum when I feel confident enough in my answers. Recently I've been very quiet on the forum even though I visit daily to skim through the new posts.
What you might not realise is that I'm an engineer by trade working in a manufacturer facility where I get to 'play' with industrial robots, vision systems and a whole host of PLC hardware. The concepts of programming here are much the same as writing an App in B4X.
I program at home using B4X when I feel like it, to relax, keep my mind sharp and because I enjoy learning new things and taking on new challenges. But I believe the thought process is pretty similar to a professional programmer (except time is not normally a consideration)....
  1. Start with a concept, a basic idea of what your app should accomplish.
  2. Determine what are the fundamental requirements. These are the key building blocks that you may already know how to achieve but more than likely will require you to research and find ways of achieving what you need.
  3. Research. What libraries, sample code etc is already available?
  4. Rough out a basic structure (at least a mental picture if not something more substantial).
  5. Start coding. Try to break the project into bite-sized manageable chunks, this should be easier if you have taken sufficient time in step 4 (the hardest step is often knowing where to start!)
  6. When possible test each bite-sized chunk in isolation. This makes debugging the finished program a whole lot easier.
  7. To keep the project moving you should ideally set yourself some milestones.
  8. Completion, testing, debugging and initial release to beta testers.
  9. Final debugging and product release.
If professionally designing apps I'm guessing that step 1 would be stipulated to you by the client design spec, or if it's something you're designing yourself for general release I'd think that you would include a step 1a which would be to check the competition, how much competition is there, what and how are they doing it and how will yours be better?

This is my point of view anyway :D
 

MikeH

Well-Known Member
Licensed User
Longtime User
RandomCoder, yes, I agree with everything you have listed. The 1a part though, Id say if a client has asked you to write an app, the market appraisal part is entirely down to them. Its their money they're spending so the decision to go ahead is theirs, and presumably that is already done by the time they get to asking you to write it. However, if its your own idea and the intention is to make money, then yes, research how viable that idea is. It doesn't necessarily mean don't go ahead if there are already similar apps out there and it doesn't mean go ahead and do it if there are none. The result of your research shouldn't be a straight "yes, do it", or "no, don't" answer. It should be "How much resources (time, energy, finance) should I invest in this idea?"

CableGuy, Great thread, thanks for inspiring me to write :)
 

Cableguy

Expert
Licensed User
Longtime User
Hi @Cableguy you know me pretty well pal as we've been members here since forever (both joining around the same time ;)).
Maybe Erel will make us Veterans one day (?)

As you know, I'm a hobbyist programmer when it comes to using B4X. I write apps to fulfill my own needs and also enjoy providing advice here on the forum when I feel confident enough in my answers. Recently I've been very quiet on the forum even though I visit daily to skim through the new posts.
What you might not realise is that I'm an engineer by trade working in a manufacturer facility where I get to 'play' with industrial robots, vision systems and a whole host of PLC hardware. The concepts of programming here are much the same as writing an App in B4X.
I program at home using B4X when I feel like it, to relax, keep my mind sharp and because I enjoy learning new things and taking on new challenges. But I believe the thought process is pretty similar to a professional programmer (except time is not normally a consideration)....
  1. Start with a concept, a basic idea of what your app should accomplish.
  2. Determine what are the fundamental requirements. These are the key building blocks that you may already know how to achieve but more than likely will require you to research and find ways of achieving what you need.
  3. Research. What libraries, sample code etc is already available?
  4. Rough out a basic structure (at least a mental picture if not something more substantial).
  5. Start coding. Try to break the project into bite-sized manageable chunks, this should be easier if you have taken sufficient time in step 4 (the hardest step is often knowing where to start!)
  6. When possible test each bite-sized chunk in isolation. This makes debugging the finished program a whole lot easier.
  7. To keep the project moving you should ideally set yourself some milestones.
  8. Completion, testing, debugging and initial release to beta testers.
  9. Final debugging and product release.
If professionally designing apps I'm guessing that step 1 would be stipulated to you by the client design spec, or if it's something you're designing yourself for general release I'd think that you would include a step 1a which would be to check the competition, how much competition is there, what and how are they doing it and how will yours be better?

This is my point of view anyway :D

Hi Alan, Thanks for your input, most valuable as always...

Funny how actual coding comes in 4th step... and its exactly what tools Pros and Hobbyist use in those 3 previous points that interests me...
Its the planning and tools used to help planning...
Like Storyboards... anyone uses them?
 

RandomCoder

Well-Known Member
Licensed User
Longtime User
Like Storyboards... anyone uses them?
Lol, I've been programming for that long that most of the planning I do is in my head. It's a well laid out plan that only I know :confused:
At work if something is particularly challenging i.e. it might have many different paths depending on the various inputs, then I've been known to list the steps out or create a flow chart so that nothing gets missed. On the rare occasion I've got time to spare I might choose to create a state diagram, but it's been a long time since I bothered to go to those lengths. :eek:

It's surprising how helpful a simple list can be or some sudo code just to keep the thought process moving in the right direction.
 

eurojam

Well-Known Member
Licensed User
Longtime User
Moin Moin,
I am programming my whole professional life, mainly for customers, but I am not a progammer, more a scientist (geologist). Starting with B4A was for fun and to get an entry point into mobil programming. After the first app - a regional guide to small wine restaurants from the local farmers, which was very successful, the business starts and there where several apps for customers which I did. Now I changed the company and they don't use B4A, so B4A will be fun again;-) yeah!!

The first app - which was for fun was more or less progammed from my mind, the later ones, more complex, needed some development process outside B4A...

programming-motherfucker.jpg
 

AHilton

Active Member
Licensed User
Longtime User
I've been a professional programmer since 1984 (Sophomore in highschool) and it has been my main occupation since 1990. I do contract work as well as having worked in my own company as a programmer for a single product (since sold a few years ago). I never just make an app/application/system and just stick it out there and see who'll buy it. And, of course, I do some programming for myself and the family but I wouldn't consider that hobby. The only formal training I received was in college (for a completely unrelated major to technology/computers) taking a few elective classes in Fortran, Pascal and Lotus1-2-3. :)

So, for my creative process ...
1) I gather as much hard information about ...
a) what the expected outcome should be (A screen, report, file, flashing lights, radio signal, packets to another device, etc.)
b) what information should be gathered to get the outcome (any paper forms being used now or likely to be in the future or spoken words related to it)
c) how that information should be gathered (simply by filling out fields in a table or form?, flipping a switch?, opening a door?)
- At this stage, I get as much information about the whole existing process as I can. I talk to everyone involved. Top to bottom. I also start doing research on best practices in that industry to see what might work here. Having done this a time or two in 20+ years ;), I also find those people that SHOULD be contributing to this section and get their input as well. I write it all down. Sometimes in long form; sometimes in outline. Very very rarely do I flowchart anything.

2) If it's a complicated project, I'll do an old programmers trick of drawing circles. Each piece of data is in its' own circle. Each form is its' own circle. Each database table. Each button. Each and every part is a circle. Position those circles so that each part that interacts with something else, touches. See what relationship it has with all of the other parts and how it 'touches' or might affect the other parts. If it's not terribly complicated, I might just match up, on a paper page, the inputs to the outputs and see the patterns and interactions that way.

1) and 2) are the systems analysis part of my process. Very analytical. It's what I've called my "Find out everything and put it in its' place"

3) Drive. I get in a vehicle and drive. Just drive along. I am so glad I found this trick. It works for me and I'm sure everyone has their own trick like this. If I'm stuck on something, I drive. I've found that driving on a highway (winding mountain roads or country roads are no good) focuses my mind just enough that I don't run off the road or hit someone but it allows my mind to wander just enough to 'see the way' in my programming. Before I found my trick, I had a terrible time when getting stuck or trying to analyze a system. Nothing else works as well for me. When stuck, come back to #3.

4) It depends on the type of project, but I create the 'outcome' or output first. Reports, packets for a protocol, an entry into a financial table row, databases, tables, storage procedures, etc. Whatever the end result needs to be; I make sure this is created or is able to be created first. Here's where the analytical and creative sides fuse. You have to give them what they need (See #1) but you can be creative in how you deliver it to them.

5) Screens, forms, user input or whatever is facing the user gets created next. I already know what the end result is going to be so I can be sure of what the user needs to do in order to get there. My first versions are very very basic. No frills. It's the same idea in writing an executive report ... create the content; the basics first. Then go back and make it look pretty and readable .... formatting. This is where you can truly be creative. BUT, be careful. If this is simply a heads-down data entry situation, don't give them something beautiful and innovative. It's unnecessary and is likely to make them mad!

6) The rest is just getting from #5 to #4. The connective tissue. Here's where the algorithms are created. The server procedures. The database stored procedures. The guts of the system. Plumbing. How to get from one screen to the next. How to get that packet of information across 12 LANS, 4 hospitals in 3 states while still conforming to privacy laws.

In each of the 6 steps above, there is creativity and skill. And, also, experience.

Hope this helps in some way. Just my path.
 

Ed Brown

Active Member
Licensed User
Longtime User
Hi Everyone,

Like a lot you, I started out as a hobbyist way back in the late 70's on systems like the TRS80, Atari 400, Amstrad, ZX80 etc. etc. It wasn't until 1996 that I got my first paid programming role as a junior programmer.

I've learned a lot over the years and found that each company does things slightly different from each other but for the most part it's all the same. ie. someone comes up with an idea, the idea's ROI (Return On Investment) is appraised, project management does the planning and resources are allocated. However, how the systems are developed can be different ie. Waterfall, Scrum, Agile, Top-down, etc. I much prefer the Top-down approach with a mix of Agile.

Anyway, for tools as a hobbyist I use:
Visual Studio Code - Free from Microsoft and is an awesome general purpose IDE (I use it mostly for XML)
Paint.Net - Free
Notepad++ - Free and I use it for reading README docs and to quickly paste text as I'm debugging
MySQL - Free
MSSQL Express - Free
SQLite - need I say it's Free?
VS2017 Community - Free
Unity3D - Free
B4A/i/J - Paid/Paid/Free

As a hobbyist I've been involved in a number of projects that I have done for friends and also for small business. The one thing I do regret about working for small business is that I've never been paid for my work even after being 'promised' something for my time and I've spent many 100's of hours on some projects. It's not something that I'm planning on doing again!

Personally, I am aiming to code my own project and publish apps for Android and iOS with the aim to break away from working 9-5.

On the creative side of things I've always found that when I have an idea I just end up coding it because I know in my head what it is that I want. But when coding for someone else it's more difficult because you can't always visualise what they're seeing in their head. Putting things down on paper or in an email can help but until the 'client' can see what the app looks like and how it 'feels' it's more like guesswork. That being said, I try to get the 'client' involved as early as I can so I get their input sooner which means less work for me later...hopefully that all makes sense.
 

JakeBullet70

Well-Known Member
Licensed User
Longtime User
As for me...
I am a professional programmer / Engineer for the last thirty five years. B4X for me is fun programming but as I work as a programmer some days I just do not want to see any code. I will take a few B4X months off.

But B4X app wise, I have 1 app and it is more personal then anything. (Tablet app as a kitchen helper)

So tool wise.
At work:
Visual Studio 2015 - paid
DevExpress developer tools - paid
Office 365 - paid
Notepad++
Team Viewer - paid
Paint.net
Git repo - paid

Home - Hobby
B4X - paid (B4A)
Snagit - paid
Notepad++
Paint.net
Google online docs.
Git repo

I do have a pretty powerful Dell server for VM's I use at home.

So creative wise for me is extending this app and to help I have a framework in place so I do lots prototyping on the fly. All my colors, dialog's, events, helper functions are complete so I can get right down to looking at my idea pretty quick.
 

JakeBullet70

Well-Known Member
Licensed User
Longtime User
As this is about the creative side I want to add.
At work. I do really no creating. Well, I create class structures, tables and things like that but nothing about where is this product going.

I am 1 of 6 programmers that work with a solution that is over 1/2 million lines. (yes, we use GIT) I own 6 or 7 features and that is what I work on. I get 1 or 2 new features a year.

As far as ideas for this program we have a 2 - 3 year backlog of ideas. This is driven by sales.

That is my professional programmer life and why I create with B4X. ;)
 
Last edited:

ThRuST

Well-Known Member
Licensed User
Longtime User
I am like cableguy a hobbyist programmer who never ever got the chance to work as a programmer, even though people commented my work positive. During years of hard work to learn I learned that it takes more than long experience to get somewhere. I'd like to add that the technical part is one side of the story, innovative ideas another. It's only when you achieve to combine the two that you are on something. If your ideas is attractice others will steal it the moment you talk about it, so the challenge is to talk to the right people. For that one have to trust in intuition and balance it as good as possible so that you can get feedback from the outside while progressing with your own ideas. However my interest have opened doors to new opportunities that made me meet new people and many times it took me to Lindholmen science park here in Gothenburg, Sweden. A huge complex with all the professionals in the computer services that works with some of the biggest companies. But I never got a long term job just on the educational level so to say. With that said I am aware that I know have enough knowledge, but it all depends on a good idea. People that are not at all into programming and know me often tells me that 'Just wait, one day you will get idea to a new app that might be a huge success. Nobody can even know what you might come up with...' quotes like that I am used to that, and that makes me very aware that it's not all about the programming part, it's about being innovative, timing, being social, find the right people at the right time, maintain a good attitude even though anger and hurt is what made me struggle on when life went downhill. Now I suffer from a burnout and my brain needs alot of rest to recover and I need sleeping pills to get back on track because of insomnia. The past 15 years has been one long tutorial and now I suffer the consequences from working too hard to learn as much as possible. I still find myself programming hours at end but I am more gentle to myself and don't push myself as hard as before (no more late extreme programming sesions for me). But I find life is more than just programming anyway these days, and I can still develope my ideas and I have all the time in the world to do that. I could not do it any better even if I was working as a professional programmer but then again I would depend on all of you to learn and progress because knowledge is like a wheel and it won't roll if there's no external sources that helps moving us forward. I'd like to add my view because I really love the art of programming and software development as it offers so much flexibility especially thnaks to Visual Basic.NET and B4X, it really speeds up development time and that way any hobby programmer can easily compare to a PhD in software engineering. After 15 years of programming experience I dare to say that it's not all about the programming knowledge, it's what you do with the art you love and as long as you love what you do you will keep working on it and find your way ahead when most people will be sceptival and give up and even turn you down and be upset about your ambition. Personally I have suffered alot from such people but I am determined to get the revenge of my lifetime and that's why I have developed Mindcraft for so many years in C sharp and thanks to B4J I can now soon publish a beta version. I have posted screenshots you can all find it in the chitchat post in the forum. Because I never get the chance to work as a hired programmer to make my living I am determined to get somewhere and all I need is a good idea and time to develope it. I can't see any other way, and if I was a hired programmer I would not have had the time to develope Mindcraft as I have done, so now all I can do is to hope that people likes it and that it gets used and that's when marketing and promotion comes in. And that is were money comes into play. That's the commericial and professional side as I see it. Markus Persson was just an average programmer that pulled the jackpot thanks to a new innovative idea and that's a great way to get somewhere. In fact I am trying the same thing with Mindcraft, that's why I called my project that way in the first place. Because I follow Steve Jobs guidance that all you see was created by some people not smarter than yourself, and once you discover this simple fact that you can mould life if you have the proper knowledge and are willing to work hard and long enough you will eventually get somewhere. That makes sense to me so I like to live through the creative process as often as possible, because chances are higher that new opportunities will open up at the other end and once that tube is open, anything is possible. And the best thing is to let programming do the talking and the better it gets the more followers you will get that believe in your vision. I think that is essential in any programmers life, at least I live to tell that story. As with everything else in life, you know if it means something to you when you find it, and then you just continue from there. If it fails it was just another lesson, if you make it then you know your idea was worth fighting for. Thanks for taking part of my view as a hobbyist programmer.

Best regards,
Roger 'ThRuST' Lindfors
 

JordiCP

Expert
Licensed User
Longtime User
I'd like to add that the technical part is one side of the story, innovative ideas another. It's only when you achieve to combine the two that you are on something.
Both are necessary, but for me the magic key is how to manage both things at the same time. The professional mind (how to bring something reliably into reality) working together with the creative mind (things will possibly change as long as I develop them because I will continuously see other paths). They can only work together with the correct mix of flexibility and good habits. But once you get it, the creative process turns into an amazing experience, as you won't only enjoy the results, but also the whole path to achieve them, it is like starting to write a book that will continue to be written on its own.
I am aware that I know have enough knowledge, but it all depends on a good idea. People that are not at all into programming and know me often tells me that 'Just wait, one day you will get idea to a new app that might be a huge success. Nobody can even know what you might come up with...' quotes like that I am used to that, and that makes me very aware that it's not all about the programming part, it's about being innovative, timing, being social, find the right people at the right time
I also think that finding the right people is also important, not only on the technical side. If they are the right people, they will let you fly higher or come back to earth when necessary. If not, just imagine...arriving to the moon with a one-way ticket ;)
It seems that you have put a lot of energy into your project. I will keep an eye on it and wish you the best of lucks
 
Top