Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Current job: Working as the lead business analyst for a Big 4 firm, leading a team of developers and testers working on a large scale re-platforming project (4 onshore dev, 4 offshore devs, several onshore/offshore testers). Also work in a similar capacity on other smaller scale projects.

Extent of my role: Gathering/writing out requirements, creating functional specifications, designing the UI (basically mapping out all front-end aspects of the system), working closely with devs to communicate/clarify requirements and come up with solutions when we hit roadblocks, writing test cases (and doing much of the testing), working with senior management and key stakeholders, managing beta testers, creating user guides and leading training sessions, providing key technical support.

I also write quite a few macros in Excel using VBA (several of my macros are now used across the entire firm, so there are maybe around 1000 people using them) and use SQL on a daily basis, both on the SQL compact files the program relies on, our SQL Server data and any Access databases I create. The developers feel that I am quite good in this role because I understand a lot about programming, inherent system limitations, structure of the databases, etc so it's easier for me to communicate ideas and come up with suggestions when we face problems.

What really interests me is developing software. I do a fair amount of programming in VBA and have been wanting to learn C# for awhile (the dev team uses C# - I review code occasionally for my own sake but have not had any practical experience using it). I'm interested in not just the business process but also the technical side of things, so the traditional BA role doesn't really whet my appetite for the kind of stuff I want to do. Right now I have a few small projects that managers have given me and I'm finding new ways to do them (like building custom Access applications), so there's a bit here and there to keep me interested.

My question is this: what I would like to do is create custom Excel or Access applications for small businesses as a freelance business (working as a one-man shop; maybe having an occasional contractor depending on a project's complexity). This would obviously start out as a part-time venture while I have a day job, but eventually become a full-time job. Am I deluding myself to thinking I can go from BA/part-time VBA programmer to making a full-time go of a freelance business (where I would be starting out just writing custom Excel/Access apps in VBA)? Or is this type of thing not usually attempted until someone gains years of full-time programming experience? And is there even a market for these types of applications amongst small businesses (and maybe medium-sized) businesses?

share|improve this question
2  
You are now probably on the top of your career. You can do the same work with the same skills in 5 years without reading a book. If you were a programmer, you will be starting from the bottom of the ladder and in 5 years time, there even may be no ladder!!! Don't mix hobby with career. Of course you could be a programmer but what does most of the average programmers do after 10 years? Surviving as a programmer in today's market and moving up is very hard for the average person due to high competition and continuous technological challenges. –  Emmad Kareem May 29 '12 at 22:41
    
I agree that as a business analyst and business person I have the ability to keep moving up into a higher position. The problem is the higher you go, generally the more distant from the technology and implementation you are. I have interviewed with several consulting companies for management consulting positions in the tech field, but these types of roles do not really interest me. My goal is not to be a pure programmer; in fact I have no interest in working as a dev to be hired as an employee, but rather have a small consulting shop where I can tackle both the business and dev side. –  Ryan May 29 '12 at 22:49
    
"small consulting shop where I can tackle both the business and dev side" sounds like too much risk for me. You see, the market is full of off-the-shelf solutions and so many companies and contractors that are ready to build systems for as low as $200 or less. I don't think 'small' can last for a long time given the economy and the rapid rate of change in the technology unless you have a strategy to attract customers and focus on a slow changing technology. –  Emmad Kareem May 29 '12 at 22:59
7  
@EmmadKareem, "don't mix hobby with career"... you mean: make sure that almost all of your waking life is spent doing something you don't like and about 5% doing what you like... sounds like a great plan for happiness (but admittedly a common one) –  JoelFan May 29 '12 at 23:10
4  
@EmmadKareem, I think there are plenty of programmers that have been working 10, 20 or more years and are happy with their careers –  JoelFan May 29 '12 at 23:12

6 Answers 6

up vote 15 down vote accepted

No, you are not deluding yourself, it can be done! One of the guys here did that, though I don't know the details of how but I think he started as an underwriter, became a BA for underwriting interal software development, then somehow transitioned into full-time development. I would guess that he already had a technical background, like you do.

It might work better if you try to do it first with your current employer than going it solo. You'd have a lot more support and help. Maybe talk to your manager and ask how you could transition to a development role within the organization, probably on the same team to start off. That way you already know everyone and they know you and what you are already capable of and can help train you further. If you're really really really lucky, your company will have a budget to send you on courses to catch up even faster.

share|improve this answer
2  
I'd just echo that it can definitely be done - in a previous position, I worked with a contractor who did exactly that. He started making Access applications for a company from a non-dev role, then became an outside consultant for them, and eventually spun it into his own business and seems to be doing quite good. –  bunglestink May 29 '12 at 21:58

VBA and Access is the bottom of the programming ladder. If I were you I would shoot higher since you have SQL skills. Consider learning SQL Server Reporting Services and creating reports or SSIS and doing ETL processing. Those are skills in fairly high demand right now and you are well placed to do them as they can be relatively easy to get into while in a corporate environment especially if you have no one else currently handling those roles for your company. I would see business analyst experience as a huge plus for a report writer.

share|improve this answer

It can be done. It won't be easy, especially if you want to get good at it, since software development is an engineering discipline with non-obvious problems and pitfalls you'll need to learn to recognize and avoid. That'll take a few years of serious study and practice, but if you can wrap your head around the concepts, you can definitely become a programmer even if your background is in something different.

share|improve this answer
    
Any recommended courses of study? I'm more of a self-learner, so right now I'm subscribing to some MIT opencourseware (Intro to Comp Sci) which uses Python as its teaching language, mainly so I can get down some solid programming theory and think more along the lines of a programmer. Also continuing to expand my Excel/Access/VBA knowledge through actual projects at work. –  Ryan May 29 '12 at 22:52
    
@Ryan You're in a delusion about one thing: there is no solid programming theory. Programming is a very immature craft (craft is the proper word!) - it's really too young. Programmers read a lot of books, but revolutions in this field happen overmonth. Which means the attitude of learning is the only prerequisite :) –  K.Steff May 29 '12 at 23:14
1  
@Ryan: I'm mostly self-taught. My "course of study" was "this program sucks. I could do this, and do it better than the author did. So let's see, I've got a compiler, now how do I start implementing features?" –  Mason Wheeler May 29 '12 at 23:38

Whether it will take years or year is largely up to you, your schedule, but most importantly, your interest level which tends to be tied to aptitude. If you happen to live or work in a city and have the option of mass commuting, take it and use that built-in commute time to read tech books. Anything that interests you.

As far as the audacity of thinking you can, don't sweat it. Deciding that you could probably handle that <insert unknowable pile of complexity here> is what devs do. That's not arrogance, it's just taking the first step.

Arrogant in developer land is calling yourself a professional dev when you have one solution for everything and you haven't learned anything new since college. That's the rub with development. When you stop learning your career starts going downhill, so interest is kind of key. Sounds like you have that.

So go for it.

You've got your target in sight. The rest is breaking the big scary problems into little not-so-scary ones. Repeat ad nauseum and you'll be a paid full-time developer who wishes there were more bigger/scarier problems than there used to be sooner than you might think.

share|improve this answer
    
Side observation: arrogance is helpful in initial stages. If I knew what programming was really about when I started, I'd have probably given up two hours after the 'hello world'. –  K.Steff May 29 '12 at 23:53

I'd say (if you want to kickstart things) go with SICP - Structure and Interpretation of Computer Programs. I should link to it, but it's more than just a book; nowadays you can find also other people to study the course with online. It's a really hard book - completing all exercises is something most developers can't do (unfortunately), but it is the best book available. MIT OCW is also good, but IMHO it's a watered down version of SICP for programming. Python is designed to hide away complexity, rather than make you enjoy it in a sick manner (as SICP does).

Also, you need to distinguish between programming as a profession, and programming as a skill. One requires dedication to things like beautiful, clean and extensible code, while the other requires nothing but algorithmic skills (which is quite a lot, actually). The 'benevolent dictator' of Python, Guido van Rossum, argues that programming will be an essential skill in the years to come, but software development skills won't be, in any case. Most non-developers write code to throw it away (developers do this often, too). The thing is programming as a career includes a lot more things than programming and it's important to straight your priorities.

Most important: Be sure to love programming, not just like it. It's more than a 9 to 5 job, it's to embrace the constant-learning philosophy: most engineers get trained during their BS or MSc and do not see significant change in their field of expertise. A lifelong career in programming will make you see at least 10 paradigm shifts (not just languages, but tools, DBs, etc.), so you better be ready (and willing) to accept this.

share|improve this answer
    
+1 for "constant-learning philosophy". Programming is largely about learning and improving every day. If you like to do those 2 things, then you'll probably have a good experience and succeed. –  B Seven May 30 '12 at 15:07

I think you are in a good position to make a go of this.

Most of my career I have been deeply embedded in the technical side of things, however, over years of observing many projects succeed or fail I have come to the conclusion:-

If you do not understand your business users and thier requirements your project will fail.

I have never seen an exception to this rule and no amount of money, hardware or programming genius seems to make any difference. True projects with a good understanding of the requirements can fail because of badly chosen hardware, software, lack of budget or lack of skills -- but for the most part these projects can or could have been rescued.

So your good grounding in BA and requirements will give you a perspective some of your more gifted techie colleges might lack, the rest you can learn.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.