What to start learning?
-
So I am in my mid thirties and a COO of a small business. Way back when in High School I took some programming classes and loved it. VB6. Fast forward to college and started in computer science before I hated a few professors in a row and switched to business school. So In ever followed through on what was my intent at that point of being a programmer / developer. Now, I see a real need for my business for a centralized application that can handle a multitude of things. Basically, we are a very unique company and not out of the box software fits all of our needs. I am realistic and I know I am not going to create an end all software application for my company. I totally get that. This is a side hobby for me (and I have kids too so we'll see how much time I have). BUt I have always loved problem solving, computers, and the thought of programming really intrigues me. Since I knew VB6 (based on high school classes, far from an expert) I am inclined to think VB.net is the best place to start and learn. But for me to learn through a project, if you are recommending to a newbie who wants to dabble with one application and never do this for a living... What would you recommend to them studying, learning, and playing with? It would need to be a database application too so that factors in. Web or desktop I dont know. I am inclined to think web takes so much of the complication out of connectivity and end user experience. But is it powerful enough to really do thinks. Here would be my start: Right now we take meeting minutes manually in a word based template. This software would have data entry for the minutes, keep it organized, and automatically distribute to all participants after the meeting. First feature. Second feature is a shop drawing log and submittal tracker. So when we make something custom, we prepare a detail drawing. Send it to an architect for approval. When it is approved sned to the manufacturer to release into production. Track all of these submissions etc. That would be number two. I would start with those two small features and continue slowly to add one at a time. Just a slow release of new functionality as our team realizes they need something. Recommendations?
You really have two questions: "What should I learn?" and "What does my company need?" I applaud your interest to return to your early ambitions of programming. Despite what people say, it's never too late to learn. I would recommend Python as a great place to start. Simple but powerful. But that's not what your company needs. You say your business is unique, but what you have described are generic business needs that just about every company I know needs to address in one form or another. There really are tools available. Investigate the Atlassian Suite. (Confluence for meeting minutes with auto-distribution; JIRA for issue tracking and workflows). Both are very reasonably priced for small teams.
-
So the general thought is PostGres or MySql for a database back end? If, and that is a big if, this ever became something we really were able to roll out and use we could be talking about 40 people accessing data. So not thousands, but not two. I have done visual basic connections to access in the past, and thought about that route (as this is a simple application at least at the onset) but figured if I start with a bit more capability, I might be WAY better off long term in terms of conversion. I also was tempted to just look into azure or something like that so it is a hosted scenario elsewhere and I pay Microsoft to handle the BS. I just need to connect to it and that way people that travel dont need VPN to connect to the software and if I get web based I dont have to deal with hosting and security issues.
-
So I am in my mid thirties and a COO of a small business. Way back when in High School I took some programming classes and loved it. VB6. Fast forward to college and started in computer science before I hated a few professors in a row and switched to business school. So In ever followed through on what was my intent at that point of being a programmer / developer. Now, I see a real need for my business for a centralized application that can handle a multitude of things. Basically, we are a very unique company and not out of the box software fits all of our needs. I am realistic and I know I am not going to create an end all software application for my company. I totally get that. This is a side hobby for me (and I have kids too so we'll see how much time I have). BUt I have always loved problem solving, computers, and the thought of programming really intrigues me. Since I knew VB6 (based on high school classes, far from an expert) I am inclined to think VB.net is the best place to start and learn. But for me to learn through a project, if you are recommending to a newbie who wants to dabble with one application and never do this for a living... What would you recommend to them studying, learning, and playing with? It would need to be a database application too so that factors in. Web or desktop I dont know. I am inclined to think web takes so much of the complication out of connectivity and end user experience. But is it powerful enough to really do thinks. Here would be my start: Right now we take meeting minutes manually in a word based template. This software would have data entry for the minutes, keep it organized, and automatically distribute to all participants after the meeting. First feature. Second feature is a shop drawing log and submittal tracker. So when we make something custom, we prepare a detail drawing. Send it to an architect for approval. When it is approved sned to the manufacturer to release into production. Track all of these submissions etc. That would be number two. I would start with those two small features and continue slowly to add one at a time. Just a slow release of new functionality as our team realizes they need something. Recommendations?
I would recommend you download: [Jobs Site Starter Kit for ASP.NET 3.5 | BinaryIntellect Knowledge Base](http://www.binaryintellect.net/articles/a203c824-aec1-41b7-b3ec-49a15d5c9ebb.aspx) It is very well organized and allows you to quickly learn about Business and Data Object Layers, as well as persisting data to a SQL Server Database. It's VB.NET so would be more familiar to you. At this point I think it's more importante to learn about concepts and technologies, like OOP, Layered Arcitecture, ADO.NET, SQL Server etc. Once you master this, it will be relatively easy to learn C# as well. Having said that VB.NET is far from being dead or inferior to C#. Read up about it on Google. There may be other Starter Kits where you can learn about what I pointed out above, but this is one I checked out myself years ago and it helped me a lot to see how things work in real (programming) life.
The perfect woman: cooks good food and never says no in the middle of the night.
-
If they were clear and unconnected services I would agree. Today we have several major platforms. We use a CRM, a task/project management software suite, a file sharing application, a chat program, and email etc. For right now the file sharing, chat, and email are individual needs I have no intentions of trying to change over from. However, the challenge is we are a project based company. So our business development team has to log all types of information about the CRM. And our opportunities have several different phases all of which have different revenue opportunities attached to them. I have yet to find any CRM that can handle this so we have to duplicate tons of information. When the deal is signed it flips over to our project management / task management platform. All of that history, all of that data, all of that information is essentially lost or has to be recreated. The systems dont talk to each other. It is like trying to learn the project all over again. Our bus development team has to CONSTANTLY be updating and uploading and modifying and tweaking in both. On top of all of their other activities. It is a bear for responsibility. Nothing out of the box starts to merge those two pieces. Seperately, we are not an architect or engineer so software geared for those individuals does not work out of the box for us. But much of our process is replicated from them so we need the functionality of certain tracking elements. but again nothing out of the box has this since we do not fit into a typical industry platform. It yields a lot of inefficiencies and duplication of data and information.
Solve the problems, don't write code. Based on this post, you might investigate SalesForce.com. I am not sure which CRM you are using. I have not used SF. You could probably contract someone to help you implement what you do need on SF if it does not have it. Having business development and business execution on two different platforms sounds like a WTF. As a COO, hire someone to help you figure it out and design a solution for your company. If there is sure ROI, then execute it. If you do want to learn to program, write a few projects for a hobby or something. I would not experiment on your company. Check out MIT App Inventor for a way to get something up and running quickly on Android platform. My kid implemented a sports statistic tracking program with uploads to Google Fusion Tables (combined stats with queries) in 30 hours. They also implemented a 100% non-code solution for a medium complexity problem given as a homework assignment. The school rolled out the solution for teachers to use. As a side note, someone mentioned using GIT for versioning documents. If your file sharing service does NOT support versioning and history, then ditch it for a service that does.
-
If they were clear and unconnected services I would agree. Today we have several major platforms. We use a CRM, a task/project management software suite, a file sharing application, a chat program, and email etc. For right now the file sharing, chat, and email are individual needs I have no intentions of trying to change over from. However, the challenge is we are a project based company. So our business development team has to log all types of information about the CRM. And our opportunities have several different phases all of which have different revenue opportunities attached to them. I have yet to find any CRM that can handle this so we have to duplicate tons of information. When the deal is signed it flips over to our project management / task management platform. All of that history, all of that data, all of that information is essentially lost or has to be recreated. The systems dont talk to each other. It is like trying to learn the project all over again. Our bus development team has to CONSTANTLY be updating and uploading and modifying and tweaking in both. On top of all of their other activities. It is a bear for responsibility. Nothing out of the box starts to merge those two pieces. Seperately, we are not an architect or engineer so software geared for those individuals does not work out of the box for us. But much of our process is replicated from them so we need the functionality of certain tracking elements. but again nothing out of the box has this since we do not fit into a typical industry platform. It yields a lot of inefficiencies and duplication of data and information.
microsoft access database. you have some vb knowledge so this could be a good bridge. start with this as a tool. (i'm with the posters who caution against writing (too much) code before trying a few things.) you can create a database with a front end for users (yourself only, to start) then decide if a db/ui is a good approach. experiment with data models to see if a db will hold what you need, the way you need it. i bet it will. access can be very underrated. but you do have to understand data table relationships. even playing around with tables with no ui/forms, etc could be very beneficial.
-
So I am in my mid thirties and a COO of a small business. Way back when in High School I took some programming classes and loved it. VB6. Fast forward to college and started in computer science before I hated a few professors in a row and switched to business school. So In ever followed through on what was my intent at that point of being a programmer / developer. Now, I see a real need for my business for a centralized application that can handle a multitude of things. Basically, we are a very unique company and not out of the box software fits all of our needs. I am realistic and I know I am not going to create an end all software application for my company. I totally get that. This is a side hobby for me (and I have kids too so we'll see how much time I have). BUt I have always loved problem solving, computers, and the thought of programming really intrigues me. Since I knew VB6 (based on high school classes, far from an expert) I am inclined to think VB.net is the best place to start and learn. But for me to learn through a project, if you are recommending to a newbie who wants to dabble with one application and never do this for a living... What would you recommend to them studying, learning, and playing with? It would need to be a database application too so that factors in. Web or desktop I dont know. I am inclined to think web takes so much of the complication out of connectivity and end user experience. But is it powerful enough to really do thinks. Here would be my start: Right now we take meeting minutes manually in a word based template. This software would have data entry for the minutes, keep it organized, and automatically distribute to all participants after the meeting. First feature. Second feature is a shop drawing log and submittal tracker. So when we make something custom, we prepare a detail drawing. Send it to an architect for approval. When it is approved sned to the manufacturer to release into production. Track all of these submissions etc. That would be number two. I would start with those two small features and continue slowly to add one at a time. Just a slow release of new functionality as our team realizes they need something. Recommendations?
I am a programmer myself. I strongly recommend C# for your immediate needs. You will find that it is similar to VB in some ways which will make your older experience relevant. Furthermore, C# is strongly typed and typesafe so it is much easier to debug than many languages. C# is well documented and therefore very easy to re-learn programming with. This language can also be used to easily develop the types of applications you are referring to in your post. To top this off, you can get a free compiler from microsoft to get started, so you don't really need to invest a lot of money to get started learning.
-
I am a programmer myself. I strongly recommend C# for your immediate needs. You will find that it is similar to VB in some ways which will make your older experience relevant. Furthermore, C# is strongly typed and typesafe so it is much easier to debug than many languages. C# is well documented and therefore very easy to re-learn programming with. This language can also be used to easily develop the types of applications you are referring to in your post. To top this off, you can get a free compiler from microsoft to get started, so you don't really need to invest a lot of money to get started learning.
Thanks, and thanks to all who are responding. Generated way more conversation compared to what I expected lol. To summarize for everyone (in terms of my capabilities) I spent some time with VB6 and later played around with VB.net and database connectivity. I certainly understand OOP and basic concepts and brushing off some dust can handle some code in VB.Net so I am not just learning from the ground up. I have never developed a full enterprise level piece of software nor am I truly expected too. I really want to just create some isolated functionality that is not available in out of the box solutions so I can incorporate it into. With that being said, it sounds like it would be time well spent to transition to C# for further future experience and there are just better resources out there for help. What are thoughts on backend support? Maybe while it is very limited I am just better off on using access and keeping it simple and scaling it up eventually? Is it feasible to use a database on office 365 so I dont need VPN connectivity to my office?
-
So I am in my mid thirties and a COO of a small business. Way back when in High School I took some programming classes and loved it. VB6. Fast forward to college and started in computer science before I hated a few professors in a row and switched to business school. So In ever followed through on what was my intent at that point of being a programmer / developer. Now, I see a real need for my business for a centralized application that can handle a multitude of things. Basically, we are a very unique company and not out of the box software fits all of our needs. I am realistic and I know I am not going to create an end all software application for my company. I totally get that. This is a side hobby for me (and I have kids too so we'll see how much time I have). BUt I have always loved problem solving, computers, and the thought of programming really intrigues me. Since I knew VB6 (based on high school classes, far from an expert) I am inclined to think VB.net is the best place to start and learn. But for me to learn through a project, if you are recommending to a newbie who wants to dabble with one application and never do this for a living... What would you recommend to them studying, learning, and playing with? It would need to be a database application too so that factors in. Web or desktop I dont know. I am inclined to think web takes so much of the complication out of connectivity and end user experience. But is it powerful enough to really do thinks. Here would be my start: Right now we take meeting minutes manually in a word based template. This software would have data entry for the minutes, keep it organized, and automatically distribute to all participants after the meeting. First feature. Second feature is a shop drawing log and submittal tracker. So when we make something custom, we prepare a detail drawing. Send it to an architect for approval. When it is approved sned to the manufacturer to release into production. Track all of these submissions etc. That would be number two. I would start with those two small features and continue slowly to add one at a time. Just a slow release of new functionality as our team realizes they need something. Recommendations?
All of what you describe is readily available on the internet on a "subscription" basis; usually about $5 per month: Collaboration and / or Document Sharing. One could be up and running in a day or two; develop it yourself, and it may never get done. I recommend these solutions to clients and then bill for support; doesn't pay to "develop" these services.
"(I) am amazed to see myself here rather than there ... now rather than then". ― Blaise Pascal
-
Thanks, and thanks to all who are responding. Generated way more conversation compared to what I expected lol. To summarize for everyone (in terms of my capabilities) I spent some time with VB6 and later played around with VB.net and database connectivity. I certainly understand OOP and basic concepts and brushing off some dust can handle some code in VB.Net so I am not just learning from the ground up. I have never developed a full enterprise level piece of software nor am I truly expected too. I really want to just create some isolated functionality that is not available in out of the box solutions so I can incorporate it into. With that being said, it sounds like it would be time well spent to transition to C# for further future experience and there are just better resources out there for help. What are thoughts on backend support? Maybe while it is very limited I am just better off on using access and keeping it simple and scaling it up eventually? Is it feasible to use a database on office 365 so I dont need VPN connectivity to my office?
If you need more power, ASP.NET is used as a backend support for C#. It is used more for WPF for more complicated GUI's. You can start with Windows Forms for more simple GUI's.
-
Not ignoring this at all. I think there is a LOT of merit to this for a few reasons..... 1. Realistically will I ever get to really build this thing, probably not. So if I ever decided to go the custom route I have a good benchmark to share with a developer on what I am looking to accomplish. 2. I do agree as anytime I have dabbled in coding I just start, and quickly it starts to expand into needing this and that and the other thing and it loses focus. Giving myself a road map would be helpful. So I might go this route.... What do you typically do? is it a narrative summarizing the workflow? Picking out the nouns as my classes and my verbs as my actions? How do you actually map it out? Is there a decent piece of software that helps visualize it all vs just trying to type it in word?
My favorite modelling tool, the age-old ER, Entity-Relationship model, focuses strongly on the information structures, rather than the workflow. It is essentially a semi-formal drawing technique - and of course there are a number of "dialects". Some computer based tools are available, often forcing you to use a specific dialect. The one I have used most recently is called yEd[^] - it is not specifically for ER, but supports it well. An ER model is a graph with "entities" (data objects) forming the nodes, drawn as rectangular boxes. Actually, the entity is like a class definition; a "customer" entity is any customer object. Relationships to other entiries are edges, drawn as arrows. Arrowheads, both ends, indicate how many objects are involved in a relation: A "bill" object and a "customer" object has an n:1 relationship, indicated by different heads. Notation exists for "0 or more", "exactly 1", "1 or more" (more specific cases, like 1 to 3, is indicated textually by the arrowhead). For straightforward relationships, a textual label on the edge is sufficient it is always double, indicating each entity's view of the relationship, such as a customer "bought" what the bill specifies; this "was bought by" a customer. If you need to handle data about the relationship itself, which are not properties of the entities (such as the date when the relationship was established), or a three way relationship (such as who endorsed it), you can draw it as a diamond with arrows to two or more entities, and attributes associated with the relationship. Two entities may have several distinct relationhips. Often, splitting up a diffusely specified relationships into distinct one can be enlightening, e.g. "business connection" going to "Buys products from", "Provides programming services to" and "Owns shares in" - different procedures will need to relate to the relationship in different ways. Entitiy attributes are either, in simple models, drawn as ovals attached to the entity, or, in larger models, listed inside the entity rectangle - this illustrates one dialect variation! Another variation (more in modelling style than language) is how much you break down complex data into distinct entities: Is a "car" one single entity, or should you split off an "engine" entity with an "is powered by / powers" relationship? If otherwise identical cars differ only in engine selection, and/or each e