How did you get to where you are?


  1. SmugMug

    SmugMug Active Member

    I've been reading the forums for a little while now, and looking at the quality of the work some developers have released has led me to a question...how did you get there? I'm an extreme rookie in the world of programming, and I've seen things (particularly in the UI department) done without a batted eyelash that I can't begin to wrap my head around what the code must look like. Did you start this looking for a hobby? A career? How long did it take you to learn best practices? What problems did you run into along the way? What lessons would you pass on to less experienced or part-time coders like myself?

    Since it wouldn't be fair to ask without sharing myself, here's my story: I decided to go back to school and get my EE degree after a short career in the military. The internship market in my area wasn't looking too promising this summer and I know that EEs who can program are sought after, so I picked up my first programming book (Java) in the middle of May and got to work. Now, three months later, I'm not pulling in Angry Birds-worthy income, or much of an income at all for that matter, but I'm happy that I'm bringing in ANY money seeing as I wasn't sure if I could expect success with such a huge venture. I figure if I can make enough money over the next few years to offset a month's rent, that would offset the cost of a "lost" summer :)

    Advertisement
  2. Valten1992

    Valten1992 Active Member

    In my web development course in college, we did very little Android development. However when we needed to get a work placement the fact that I did Android development was a large plus for a company that was looking into expanding into that market.

    After doing that job, I was still only half-way through the 6 months required for the placement. I was transferred to another project in which I am currently doing an app version of and was hired for the summer until my lectures start again.

    In regards to complexity, I will say from experience that repetition is a big part in knowing how to solve a problem. I learnt most of my code by learning it on a need to know basis, if i think my app will need this method or way of doing things then I attempt to get it working through trial and error. After I get it working, I spend a while going over the code trying to understand how exactly it is done, to make absolutely sure.

    Sorry if its a ramble but it's how I do things. :)
  3. jonbonazza

    jonbonazza Well-Known Member

    Pretty much every programmer started out as a hobbiest, but eventually, it grows into more than that--a passion. Those who look toward development as a carreer, without first aquiring the passion for it will inevitibly not be as good as more passionate programmers. With that said, it's not something you can become really good at in a few years. It's something that takes years of practice. On top of that, it takes certain type of thinker to become a decent programmer. People who like mathematics and are easily able to think outside the box are usually the best candidates.
    nyu likes this.
  4. Tramontana

    Tramontana Active Member

    I'd agree with that. Having started programming before many of you guys were born I was part of the micro revolution. This was the days when you built a computer from component parts, slaving over a soldering iron for days on end. I have a handy chip in my front teeth from using them as wire strippers (bad idea).

    There was hardly any software about so little choice but to write my own; assemblers and high-level languages, word processors, even a small operating system, all bootstrapping from one level to the next. Eventually I was good enough to get paid to do it as a job, but it doesn't happen immediately. The actor Eddie Cantor once said "it takes 20 years to become an overnight success". Me - I'm still trying after about twice that time.

    The only other thing I'd say is: Programming should be fun. If it isn't you're in the wrong job. Android is huge fun - a cheap powerful computer you can carry about with you, owned by millions and with an open software development environment. Thank you Google, you gave me a new lease of life.
    jonbonazza likes this.
  5. Savage Shadows

    Savage Shadows Well-Known Member

    While you guys have given excellent answers, and I'm sure Smug Mug would thank you for them, I think what I understand from his question is, what should be the next step? Or at the very least, that would be my question.
  6. SmugMug

    SmugMug Active Member

    Where to go next is a pretty big question. As Jonbon says, it certainly seems like most programmers start out as hobbyists. As hobbyists, did you find more fulfillment/success learning new things for the sake of learning them, or did you only learn new techniques as you needed them to solve problems?

    I'm at a crossroads where I'm having to face this problem. Do I grab some books and build upon my fundamentals sequentially, learning best practices the first time around...or do I just jump from project to project, picking up new ideas and techniques as I go? On one hand, I can write a bunch of half-decent programs now, on the other I might be able to write some decent software in a year or so if I put my current projects on hold.

    I just left the military to go to school to be an EE. From what I understand, EEs with programming skills aren't really sought after, since that's what computer/software engineers are for...so perhaps it doesn't matter as much which path I take from a professional perspective. I have been enjoying the coding experience though. Makes me wonder why I didn't start doing this ten years ago :)
  7. jonbonazza

    jonbonazza Well-Known Member

    The answer to your frst question is mostly subjective. While some programmers are happy staying in their comfort zone, there are also those who prefer to know a little of everything. I personally believe in the mantra "A man of all trades is a master of none." This is not to say you shouldnt try to learn new things, but don't just half ass learning something for the sake of having some sort of knowledge in it. FInd out where your area of exprertiese lies and try to focus mostly on that area, while only branching out on occasion. Also, there are many fundamentals that EVERY programmer should know, such as memory managment, data structures, basic algorithms, and of course, how computers work on a hardware level, as well as how operating systems work on a low level.

    In the CS field, they don't care what your degree is in (and sometimes don't even care if you even have one), as long as you have the experience and know how. I know a lot of people who work as programmers and have EE or even ME degrees.

    In fact, EE is very handy in programming as it helps you learn some of the hardware workings that I mentioned above.
  8. Tramontana

    Tramontana Active Member

    1 You can learn a lot from books; mostly how to do things the same way as everyone else (why else would the book be written?). This may help if you're hoping to join a code factory with 50 other programmers, though they always ask for real experience, usually of the kind you can't get at home - a classic Catch-22. Having a deep understanding of and a passion for what you do is essential; it does impress people. IMHO you don't get this from books alone, but from actually doing stuff.

    2 You need a portfolio. You can half finish ten projects or you can make one really fly. Which will do more to get you noticed? Impossible to say; it depends on the circumstances at the time. Life doesn't come with guarantees.

    3 Opportunities come knocking at the strangest times, and they only knock once. You need to be ready to seize the moment. It's called Serendipity - the ability to find something you weren't looking for.

    -----------------------------------
    These are just my opinions. If you don't like them - I have others.
    LexiconStudios likes this.
  9. LexiconStudios

    LexiconStudios Well-Known Member

    I'm definitely a total rookie myself, so its good to hear from people who have been doing this longer and have a deeper understanding of everything. For me, it started with just opening a book and taking a stab at it. After that, I pretty much fell in love, but I'm far from being able to pay the rent with anything that I've made yet.

    I'd definitely agree with Tramontana's comment that you need a portfolio of finished products. Its so easy for me to half finish a bunch of different things and then get bored and move on to something else. But that last 10% of really putting the polish on and working out all of the kinks is often where you are forced to work outside of your comfort zone and really learn a lot.
  10. SmugMug

    SmugMug Active Member

    Great and thoughtful responses. I, and I'm sure many others, appreciate your input! Learning something like this on your own is a huge task, and it can be easy to lose the forest for the trees :)
  11. jetx2x

    jetx2x Well-Known Member Developer

    Hi guys.. I'm trying to become a programmer... I'm only 17 and I'm currently a senior in high school... i. Pretty much have a guaranteed spot in almost any college right now... what do you guys suggest I do to get started? I became a rom developer a few months ago and I'm beginning to learn Java and I'm working on creating my first app... how hard was it for you all to pick up your first language? And what do you guys think should be my next course of action? I really Want to become a programmer and I definately have a passion for it... I've stared at so much code this summer that its not even funny

    Sent from my N860 using Tapatalk 2 Beta-5
  12. jonbonazza

    jonbonazza Well-Known Member

    If you are positive that programming is what you want to do for the rest of your life, then you should probably pick up Computer Science or a related major at whatever university you choose. Although a degree isn't necessarily required to get a job in this field, the unfortunate reality is that that piece of paper does make it much easier to do so, whatever that piece of paper might say.

    It also should be mentioned that experience is key in this field. You will need to devote a significant amount of time outside of classes working on your own personal projects to develop a portfolio. Our company turns down tons of employees every week because they think that just because they were going to school, they didn't need to do anything on the side. Passion and experience are key in this field. without both of those, you won't make it very far.

    EDIT: Also, having your own blog is a good idea also. While a solid portfolio will show that you have experience, a blog or some other form of publication will show that you have passion. This isn't really required, but it does help.
    SmugMug and jetx2x like this.
  13. jonbonazza

    jonbonazza Well-Known Member

    By the way, I moved this to Dev 101 and will make a reference to it in a sticky.
  14. SmugMug

    SmugMug Active Member

    jetx2x: This is the path I took as I was learning java for the purpose of jumping into android:

    George's Coding Adventure

    That started as some webspace I could use to test the my lessons on applets. It grew into more from there.

    What follows was the book I used. I'm extremely happy with it and would recommend it to anyone who wants to pick up Java. I learned a lot doing the lessons myself instead of pulling code down from the CD. In fact, I didn't touch the CD at all:

    Java Programming 24-Hour Trainer (Wrox Programmer to Programmer): Yakov Fain: 9780470889640: Amazon.com: Books

    I did a few of the J2EE chapters, but I didn't want to stray too far from my end goal of learning to write apps. I didn't have access to an android book, but I was able to make the transition through a little bit of experimentation and lots of googling. I dated java projects I uploaded, so you can see that it's possible to pick up the fundamentals very quickly if you have the time to dedicate to learning.

    I have all the projects in a single eclipse workspace if you want to see some code. The code for Mega Pong is broken though. I didn't write it very well originally. I began to rewrite it, then remembered that I wasn't putting out a commercial product...I was just trying to learn the principles :)



    Jonbonazza: I remember hearing over the years that the software market is flooded with applicants, which I imagine doesn't help matters for would-be programmers. I'm in school to be a EE, but after this summer I find myself on the fence about specializing in something to do with software. I wonder though...is this still the case? Is the market still oversaturated? I have heard recently that there is lots of demand for good, hard working, creative and innovative workers. I think the same could be said for ANY field though ;)
    jetx2x likes this.
  15. jetx2x

    jetx2x Well-Known Member Developer

    Thx for the input... but any free alternatives for the book? I'm just a broke teen atm... :-\

    Sent from my N860 using Tapatalk 2 Beta-5
  16. Savage Shadows

    Savage Shadows Well-Known Member

    If there are any free alternatives, please let us know. I'm considering going into the navy for nuclear power (96th percentile on my asvab during high school), but I really do find so much intrigue with the cs field, specifically coding related areas such as the android os, since it's used daily by so many people.
  17. jonbonazza

    jonbonazza Well-Known Member

    Lately, schools have been doing a lot of pushing people trying get students to go into CS, saying things like "the pay is excellent" or "there is a surplus of jobs." Although this worked, it has worked a little too well as there are many people going into CS now and thus the competition is fierce. HOWEVER, most people in CS don't have a passion for it, and are simply in it for the money. Because of this if you are a good coder and have the experience and passion to go along with it (neither of which your average CS student will have) you wil have no problem getting a job in the feild, regardless of what your degree is in.

    Summary: For the average person, yes, the market is convoluted, but for a true computer scientist, no, there is actually hardly any competition out there. ;)
  18. SmugMug

    SmugMug Active Member

    Thanks for the info Jonbonazza! It's really helped me figure out which direction to take professionally. There are people out there who have been working with code from the age of 10, and so have close to a dozen years of experience right out the door. I enjoy this new hobby, but I'm way behind the curve in skill. It's good to know that employers are interested in experience and passion over what kind of degree you have. It will make the transition much easier if I get to a point where I want to try and do this professionally :)
  19. Savage Shadows

    Savage Shadows Well-Known Member

    SmugMug, thank you for sharing with us how you got started with Java. I would assume just to not be lazy and read the entire book you used, but learning Java with the purpose and intent of learning to develop mobile apps and work with Android, is there anything in the book you would recommend to not look at? For example, will I find any immediate need to learn Java EE; should I just stick to the Java Core? Or is it something I will find makes a difference to know as I get into Android?


    And here's my story. Not yet a military man, I am considering joining the Navy for their Nuclear programs (called me up after I scored in the 96th percentile of the ASVAB as a high school junior). Just married this past week, and have the future to think about. I have a few options, including the Navy, automotive sales and training, and if I can make it happen, a transition into Android and app development. Through grade school, I have learned some html and c++, but being grade school classes, they were only the basics. Through the information I have found, Java is the metaphorical gateway drug to get into Android, and now I'm just at the point where I'm looking for the best way to start learning. Right now, my ideal plan is this: Air Force reserves (I currently work in a franchise for a former LTC from the AFR in Phoenix) while earning money through Android and app development while building up to a point where a career and/or more education after the reserves is a reality that can be accomplished.
  20. jonbonazza

    jonbonazza Well-Known Member

    While android primarily uses Java, yes, it really only uses the syntax, with a small subset of utility libraries. Most of the core java development kit (JDK) is uselss in android. With that said, from a conceptional point of view, programming is programming, regardless of what language you use. The concepts transcend any linguistic bounds. My advice is that if you already have programming experience, you need to become familiar with the Object-Oriented Programming (OOP) paradigm. Once you are comfortable with that, just pick up a book and focus on learning the java syntax. The JDK or EEDK are practically useless in Android development. The small subset of class that will be of use are also referenced in the Android SDK documentation, and aren't something that would be covered in a Java book (except threading... that is something from the JDK that you should take in).
  21. SmugMug

    SmugMug Active Member

    Savage, I had a little C++ experience from highschool when I started learning Java, but that class was over ten years ago. I found an eclipse video turorial series called "Eclipse for Total Beginners" was a pretty gentle introduction into the tools and methodologies of object oriented programming (OOP). The tutorial series focuses heavily on test-driven development, which I haven't used since, but it does a pretty good job walking you through some basic OOP best practices. Many of the ideas it presented were over my head as I was going through them, but once I had gotten through a few chapters in the 24 Hour Trainer, it all started to make sense.

    Here's a link to the video series:
    Eclipse and Java for Total Beginners

    I quit using the book when I hit the Java EE stuff. I started getting into it because I thought that it might be beneficial to know how to construct a client-server system for an app or program, but since my current webhost doesn't support java servers unless you buy their $20/mo package, I decided that it wasn't a reasonable choice from a cost/benefit perspective.

    I recommend spending extra time getting a firm handle on threads when you hit that section in the book. I have read over and over that multithreading is one of the most important things you can learn. I found them a little tougher to get a firm grasp of, and they can get very messy very, very quickly. The book points you at some outside websites/blog posts, and I recommend reading them as well as anything else you can find on the subject.

    Personally, I believe the trick to really learning this stuff is to experiment and play with the code. If you look at the java programs I wrote, they don't always match the lessons and "homework" he presents in the book. I believe that the best way to learn is by pushing the boundaries of your abilities.

    Someone with more than a couple months' experience may have more valuable input on this subject, but that's what has worked for me so far. The first 2/3 of the book (before JSP/J2EE are introduced) covered enough to make the transition to android pretty painless. It took some time to change mental gears and make the switch because android introduces many new ideas, but the experience you get working with the tools and syntax mean that you're only learning android specific material without trying to learn how to program at the same time. There are programming concepts that you will miss (for example, I don't know anything about stacks or trees), but if you're just trying to get from point A to point B like I was, this is a proven method. Well, proven to work with me at least ;)
  22. jonbonazza

    jonbonazza Well-Known Member

    Yes, the only way to truly become a proficient coder is to just do it... Humans learn by repetition... Pushing your limits is also a great way to proceed quicker.

Share This Page