VB6: create a code map? [duplicate] - vb6

This question already has answers here:
Tool for analyzing VB6 source code (like Understand from SciTools) [closed]
(4 answers)
Closed 7 years ago.
I have a pretty incredibly large VB6 program that I took over. I have been on the job for a bit now, so this is nothing all that urgent. But I recently ran a line counter on the code. Over 1 million lines. Most VB forms do a LOAD XXX to connect many projects. Is there a way to map all this out? So I can see the 5,000 or so projects all in one big map...

Just wanted to point out that as part of our free assessment we can perform this service for you, including an effective line count, map of connections between the different projects and an analysis of potential circular references that can arise from this late binding pattern.
I hope no one minds pointing out a free service...

Related

How to remember different language syntaxes and technologies (as a student)? [closed]

Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
As a student I have many languages/technologies to learn. Many times I forget past languages within 2-3 years unless I am practicing them on a regular basis.
Suppose on a later date, you have to remember it again. You have to almost start from basic & revise it. Isn't there a better way to retain all the things I learnt?
Live Example: As a student I have to learn C++, JS, Vbscript, Bash, and later on Java and C#/.NET. My side projects are also in PHP.
All these are different in their syntaxes, number of features & quirky inner details.
Especially in C++ & Java there are so many inner details that must be remembered. Like initialising base class pointers with derived class object, different ways of casting in C++, and so many more that are so different from any other language.
Forgetting all this in 2 years is just a huge loss.
How do you remember all these different languages and technologies?
P.S: I had one idea of a quick reference sheet. Does anyone have any experience of creating one? Is there any place where I can get them? What are the other ideas?
It's all repetition really. You'll be doing a lot of it and you'll eventually get used to it. Languages that are very similar, like Java and C#, can be a bit confusing at times, but that's where code-completion comes in handy.
You'll get used to it eventually. And every programmer who has to work with many different languages always needs to refresh him/herself after not doing a particular language in a while. There are no exceptions there.
Don't be put off by tutorials you find online, or blogs with loads of examples. The people that post those work several days, maybe even weeks on a single post. They're not super-geniuses who sit down, write their article in 30 minute and post it. Much preparation goes in to those things. In fact, most blogs that have a high turnout, have multiple people working on it. But their names are always in tiny print somewhere at the top or bottom so I always missed that. I know I used to assume these people were just that talented that they could come up with a big idea and write it out in a couple of hours. And many people who were in college with me also thought this. It all seemed so grand and frankly, it was a bit depressing. The idea that we would one day become that good seemed so far away that many people I knew in college just gave up.
Don't be put off by the magnitude of it all. You'll get used to it if you do it enough. Don't pay attention to those books you see in stores or online that say "Java expert in 24 hours". Realistically speaking, count on 5-7 years to become good at a certain language.
Googling "Java Cheat Sheet" and "C++ Cheat Sheet" will turn up some pretty good ones as a starting point. Making your own is a better option though, improve on it as you go and you'll come out with something you're familiar with and excludes things you don't need.
Over time you'll probably get over this problem but a quick reference sheet never hurts.
Get Cheat sheets of each programming language or libraries

How does a project time estimation changes by adding more programmers? [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
Estimating a project with many unknowns
We have an estimation about our project time by man/hour. Now we want to know how much our project will take if we have more than one programmer? Do you have any idea how to estimate this? Any formula?
If you have the estimation in man-hour, you just have to divide that number by the number of people working on it to get the number of hours it will require.
So a 6 man-hour project will take 6/1 = 6 hours with 1 programmer, 6/2 = 3 hours with 2 programmers.
I think wikipedia has a good article on this topic : see Here
EDIT: ok since people tends to make me believe this is more than a "use of the man-hour system" question, here is some more tips :
To manage a project with more accuracy than the system you have multiples tools that can help your. Many of them are included in project management systems.
First of all you need to identify sub units of the development. Then you'll be able to make a GANTT chart with dependencies that will build a structure in your project.
By doing so, and assigning people to sub units, you can by the mean of man-hour system estimate the time required for this particular unit. Then the different constrains put up by dependencies, vacation days (and so on), will give you the estimate date of end of works.
GANTT also allow you to work backwards: setting up constraint on end of project and using the dependencies constraints to compute the beginning date of your project.
Pieces of software that will help you do that are (non exhaustively) MS Project, Gantt project (open source) and surely a lot more.
You can also look on different tools use by project managers : PERT chart, activity diagram and many other I do not use and/or know about.
I hope this provides more useful help than the previous edit.

Tips for programming in 5 min segments? [closed]

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I have a laptop and bunch of 5 min segments throughout my day. I used to think this was simply too short a time to do 'anything'. Though with a little practice and a few minor behavioral changes (like unplugging) I have realized that I can get something done in each segment. So now I am reaching out to all you quick-draw-programmers out there for more tips that will let me get something done in the shortest time segment.
What did you do?
How long do you work?
Here's an idea: when you have larger chunks of time, write some unit tests for functionality you plan to implement. Then, when you have a 5 minute increment, choose a test and write code to satisfy it. This way you aren't spending any of your 5 minutes deciding what to work on, you already did that and documented it in the form of unit tests.
And hey, you get TDD and test coverage for free. Bonus.
Adopt Test Driven Development.
A big cost in task switching is figuring out where you were last.
If you always write the test before you start, it's a no-brainer to pick up where you left off. Run the tests, whatever fails, that's what you do next.
Believe it or not, there's a website called Five Minute Videos, and they have a Software section.
http://www.5min.com/Category/Tech/Software
Read through random posts on SO and learn something new :-)
Boring back story: I was in a similar situation when I had to look after my ten year old sis for a day. While we were waiting for a friend to come over I really wanted to get some features done on a personal project.
I found that playing a ~20 second acoustic bit of music and clearing my head before I wrote anything was really useful, along with spending the first 5 minutes making a threadbare list of things I wanted to complete.
Massive use of TODOs. When you start on a new class (I'm a java programmer), write all the method names, and TODOs instead of code, this usually takes (the infamous) five minutes. Then, when you have your next five, start with chosing a random TODO, and write the code. I prefer doing them in a random order, but you might find that writing all the TODOs in a method first works better, just try:)
As I'm not a full-time programmer, but a student and hobby-hacker, most of my programming is done at home, the library or a cafe. I'll complete one or two TODOs, and surf the web a bit, watch people walking by, order a new coffee or get some snacks from the kitchen.
This propably won't work in a production-setting, but for personal projects it's king!
Learn all the keyboard shortcut keys.
I also sometimes program in short bursts, like while waiting for trains. My method is to throw an exception that says 'TODO: Next step is to return a query here'. When I open my laptop, I run the module I'm working on and it blows up, telling me what to so with a stack trace telling me where in the code to start.
Also, don't ever bother closing your IDE...
Project Euler!
Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve. Although mathematics will help you arrive at elegant and efficient methods, the use of a computer and programming skills will be required to solve most problems.
http://projecteuler.net/
Also you can read The Daily WTF, 5 minutes worth spent.
I think the biggest hurdle is knowing what task can fit into 5mins. So the first thing I'd do is break down a bigger piece of work into a bunch of bite sized tasks, each of which will fit into 5mins. That way when you have your spare 5mins, you don't have to context switch to a large problem, then try to work out what needs doing & then try to get something done. Instead you just look at your task/todo list & grab the top item.
Programming involves two processes: thinking about your program, and typing the code into the computer. Try defining everything into small projects that should take no more than ten minutes. If you pre-compute what you want to type in and learn how to type well, you can knock some good work out in 5-10 minutes.
I use standby on the laptop instead of Hibernate because it gets me to the IDE faster. I had expected to have battery problems because of this but it seems to work quite well.
Read a few pages of Code Complete 2
I think an answer to another question has a good idea. jalf suggests:
A very simple trick might be to
subscribe to the RSS feed for C++
questions here on SO.
A wide range of questions get answered
here, on every difficulty level, and
they generally get very detailed
answers.
It won't replace a good book on C++ of
course, but it might be a good way to
discover a wide range of concepts,
pitfalls and solutions you might not
have known about otherwise.
So when you have 5 minutes here & there, check out an RSS of a particular tag in Stack Overflow and read (and answer?) questions.

Evidence Based Scheduling - handling hidden tasks, concurrent tasks? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 3 years ago.
Improve this question
I've sort of been trying EBS on my personal project tasks, but two things have come up a couple times I'm not sure how to handle.
1 - I find some hidden task(s). I thought it was going to be 6 hours to do task X, but turns out that requires a new Ant build task, which requires libray ZipBlahBoo, which I have then get into ivy, which requires some investigation into the XML parsing library versions each uses. I want to note these new tasks in my list, but that disrupts the estimation impact. I might have taken 6 hours for the actual original task, but there were another 8 hours in hidden tasks.
2 - I'll often have tasks that are mutually dependent. I need to update the Foolet service, but that also means updating the API, which means updating the Mock Foolet service used in unit tests. I've got each of those called out as 2 hour tasks, but I don't do them serially, I do them concurrently because the system won't work until it's all done. Let's say the set of tasks takes 15 hours and I know overall I took 13 hours, but I don't really know all that well how much of that 13 hours any of the specific tasks too. From an EBS point of view, how do I track the time it took to complete each task?
Any suggestions?
Evidence based scheduling should work best if you just charge all the hidden sub-task hours to the task that spawned them. This way, it will begin to transparently factor these occasional overruns into your overall expected performance and therefore produce better projections.
You're splitting too finely. Updating a test harness to account for an interface change shouldn't be a separate task from the interface change itself, unless the test harness is a separable product.
That's a case of not being good at foreseeing all the hidden tasks, so you should add all these hours. Basically, you do 14 hours for that, including the stuff you aren't foreseeing right now. Of course, you still estimate "6 hours", and then apply the multiplier computed from past evidence.
Well, that's tough. I suggest you either estimate, and live with that, or stop splitting such tasks.

Tips for working in a large library? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 3 years ago.
Improve this question
I'm currently working on a quite large library (5M lines of code, in C++ under VS2005, 1 solution and close to 100 projects). Even though we distribute compilation, and use incremental linking, recompilation and relinking after small source modifications takes between a few minutes (usually at least 3) and close to one hour.
This means that our modify code/build/debug cycles tend to be really long (to my taste!), and it's quite easy to lose the 'flow' during a build: there's typically not much time to do anything useful (maybe do a bit of email, otherwise read some article online or a few pages of a book).
When writing new code or doing major refactoring, I try to compile one file at a time only. However, during debugging for example, it really gets on my nerves!
I'm wondering how I could optimize my time? I guess I'm not the only one in that situation: what do/would you do?
I don't know much about development at that level, but... it seems like it would be a good idea to separate into multiple solutions. You could have a final "pre-ship" step that consolidates them all into a single .dll if you/your customers really insist.
Compare, e.g., to the .NET Framework where we have lots of different assemblies (System, System.Drawing, System.Windows.Forms, System.Xml...). Presumably all of these could be in different solutions, referencing each other's build results (as opposed to all in a single solution, referencing each other as projects).
Step by step...
The only solution is to start isolating blocks of code. If you don't have too much implementation leakage (see below **) then start building fachades that isolate the classes behind. Move those clases to a different project and make the fachade load the dlls on startup and redirect the calls to factory methods.
Focus on finding areas/libraries that are fairly stable and split them to isolated library dlls. Building and versioning them separately will help you to avoid integration pains.
I have been on that situation on the past and the only way is to take the task with patience.
By the way, a good side effect of splitting code is that interfaces became cleaner and the output dll size is smaller!!. In our project suffling/reorganizing the code around and reducing the amount of gratuitous includes reduced the final output by 30%.
good luck!
** --> a consumer calling obj->GetMemberZ()->GetMemberYT->GiveMeTheData(param1, param2)
#Domenic: indeed, it would be a good thing... However, a whole team's been at it for some time now, and until they succeed we are stuck with a single .dll and something quite monolithic :-(

Resources