Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
I want to be a software developer. Where do I begin?
26 points by gotrecruit on Jan 14, 2014 | hide | past | favorite | 62 comments
i would really like to learn how to program and develop production-ready software. i would like to begin with PHP and either concurrently, or subsequently, learn python. how do i begin? the purpose of my learning is firstly to be able to personally work on developing features and apps for my e-commerce site which is based on joomla (it was developed by professional developers).. the second purpose is that i want to be able to apply for software/web developer jobs eventually because i'd like to work in that field.

i don't know if it's relevant but i'm currently using a windows machine, and i've often heard from people that windows is a terrible environment to learn programming and to program in. is it necessary for me to get a mac or linux machine?

and to reiterate: where do i begin to learn how to develop production-ready software, i.e software that is ready to be shipped? i've done codecademy and similar stuff before which seems really simple and easy, but i can't figure out how to translate that "knowledge" from those sites into actually writing something useful and "shippable".




So I take it you didn't accept the full-time web developer position you were offered 174 days ago?

https://news.ycombinator.com/item?id=6094641

Are you still planning to return to school for a CS degree this January, as you said you planned to?

https://news.ycombinator.com/item?id=6450381

That would be a decent way to pick up programming skills.


yes, the full-time web developer position was turned down because i felt inadequate for the job. i only got the offer because i listed myself as "lead developer" for a project on linkedin, when in fact i did very little actual development. it was more of a personal project that i wanted to develop for, but ended up overwhelmed by how much i had to learn before i could actually develop anything useful.

and yes, i do intend to return to school but it would be in fall this year, not january because the school that offered january admission did not make me an offer...


It depends a lot on what level you want to program at. A thorough CS education gives you the broadest and deepest foundation on which to build your practical skills. The skills you actually learn at university will probably quickly be outdated, but that's going to be true anyway, and a good foundation means you'll learn new languages faster, can more quickly pick up complex concepts, and can more easily switch to different areas of development.

On the other hand, if you're happy doing just basic programming in a single language, you can probably learn that without an expensive education. People do that all the time.

PHP is very popular with hobby programmers, so presumably easy to learn. I have almost no experience with PHP, but even Wikipedia uses it, so it's good enough for big stuff. There's lots of work in it, though my impression is that rates are a lot lower than for other languages.

Python is also a very good starting language. Very well designed, and it has the advantage that you're not just limited to the web. Plenty of games have also been written in Python, for example. Jobs seem to be a lot less than PHP, but that probably means that rates are better.

Another good option that might be worth considering is Ruby. Beautiful language, popular with hip startups, rapid development, but not great performance.

If you want to look more into enterprise web development (which you probably don't, but I'm listing it for completeness sake), you have to look at Java. Popular in introductory programming courses. Started out as a nice, clean language, but has been surpassed by younger languages in that respect. There's loads of work at very good rates here, though it's unlikely to be the most exciting work.

And whatever you do, Javascript is always worth learning.

Get a good book, look at all the online tutorials, look at the code of popular open source projects, and start making your own thing.


Out of curiousity, what makes you think you "only got the job" because of the title on LinkedIn?

Did you consider that the company hiring maybe saw potential in you? Or maybe even existing ability that you don't recognise (our industry is rife with impostor syndrome)?

Perhaps they realised you wouldn't be a lead dev but had you earmarked for a more junior role.

My basic point is: be optimistic and courageous. The worst case scenario is you learn something. If there's one thing I've learnt recently it's that no one will hold anything against you for taking a leap of faith.


well, i guess i left out another detail which i didn't think was important since this thread isn't about that. it's a very long story so i'll just mention the important part but it WAS in fact a junior web developer position in NYC, which sounds awesome. problem? i am not a US resident, and failed to obtain a visa to return to the US after i graduated from college. i would have absolutely at least taken an interview if i was legally able to attend it.


If you know anything about php - take the job. Especially if it's one where you can choose the framework, e.g. Wordpress, Laravel, Joomla, etc...

Even if you go to school for 4 years, you won't learn as much as you will by coding on a real-world project every single day...

I recently started a job(June) and honestly I didn't know how I was going to pull everything off that my boss wanted (A beatiful site design w/ lots of CRM functionality) -- I dug into Laravel a beautiful php framework and I spend everyday in IRC chat asking for help, delving through documentation, etc...until I'm becoming pretty good at it.

Last month we moved off shared-hosting to vps hosting, something I've never done before, did we get someone else to handle the server setup? NO! I did it. I learned a lot about devops, I installed Nginx, APC, PHP-FPM, REdis. I learned how to setup a mysql master slave replication AND how to make laravel play w/ it so that all writes go to the localhost slave, and all reads go to the maindb master.

I also have a redis server on the maindb server that is used for caching of laravel. I also had to diagnose and treat a major bottleneck(load time of 12s) -- now it's 100ms or less. (I was pulling in blog data from wordpress on every page load to integrate into the CRM -- now I cache it for 48 hours.)

Trust me I could never think of all these problems, but as I solve them I learn, and I figure out how to be a better developer, and even some devops skills --which can be very useful.

I took this job on the cheap $15/hour simply for the experience, when I finish the app to a good point as I'm the single developer, I'm planning on moving on to $40-50 an hour job, or asking for a HUGE raise. I also am working on Ruby on Rails side project in my spare time just to get some familiarity w/ that platform - the more you know.. Also I built some of the admin frontend stuff in AngularJS -- some cool filtering of orders filters as I type an email, or tracking#. So in six months I learned:

* How to setup, build, and deploy an enterprise laravel app. * How to setup an app server cluster, with a nodebalancer duplicate the content using Csync+Lsync, Secure the system using firewalls, changing ssh logins, not allowing root logins, etc.. How to speed things up by using Nginx instead of APache - and tweak the hell out of it. How to use redis as a caching engine. * How to use angularJS for a more dynamic front-end to my app. * How to solve ANY problem thrown at me. * How to test and diagnose problems w/ my app. (Learning to write better unit tests currently.) * How to manage a mysql server cluster. * Basic linux crap like ssh, scp, aptitude, etc...


thanks for the detailed post. i want to be where you are at now, being able to actually know how to deploy live apps, knowing how to setup all those stuff like nginx, redis servers, etc. i've heard of these terms before, but straight up i have no idea what they are. that's exactly what i'm trying to say in this thread though... i can finish all the codecademy exercises, but how do i start creating code that can actually be deployed live??


The thing that took me VERY long to do is just pick a damn framework... In the end it doesn't really matter if it's Laravel, Rails, or a Flavor of Nodejs -- what does matter is you pick one, and get to building.

I like Laravel a lot because it's built on php and makes php way sexier. But I also play around w/ other frameworks in my spare time.... I put too much emphasis on this though..

If you're interested, I could help you build your skills. Can't pay you anything, BUT we could collaborate on a startup/website idea, I've got quite a few ideas. I'll let you take lead on the app, and I'll point you in the direction you need to go, where to get help, who to ask, what's next, etc... you'll write most of the code, I'll critique, and give insight, give tips. Then we can deploy it, and I'll let you do that as well.

The key to learning super fast is for you to be FORCED by circumstance to do it, without hand holding - though I'll be hear to help, --but when nobody is doing it for you, you just pick it up as needed. Google/StackExchange and ESPECIALLY IRC Chat are your best friends on this journey.


hey i actually might be interested to take up your offer, and i obviously do not expect to be paid for this at all, and i hope this doesn't come across as overly demanding but i need to know a bit more about what exactly you're offering... so perhaps let me clarify?

if i'm understanding you correctly, you're offering to collaborate on a startup/website together where you will give me guidance but i will write the code for it, and you will basically review my code to determine if it's "shippable" and then if you say yes, we will let the code go live? that sounds like an interesting offer. can you teach me how to use github as well, so that this way we can collaborate more effectively?

thanks in advance!


drop me an email if you're still interested and we'll talk. patrickwcurl @ gmail


What have you tried so far? If the answer is "nothing", then you need to start YOURSELF.

Being a "self-starter" is CRUCIAL to becoming a good programmer. You'll only discover your favourite languages/techniques/etc yourself by trying them out. No one is going to lay down the pathway for you (ie. Do X, Y & Z).

Windows is fine for development. I find OS X easier to configure but thats probably because I only switched to Mac after having several years experience.

There's nothing different than "production-ready software" and any regular old software. Production ready suggests that it has been tested - that's about it. Tons (in fact far too much) "production" undergoes no or very little testing so I wouldn't get hung up on labelling.

Make something, anything.


I started programming in the old, dark days of pre-internet when the only ways to learn programming for a young lad was to either find a book on the subject (In Iceland the books were pretty rare at the time), find a older more experienced person to teach me or just hack at it myself.

I went with the last option. I spent many hours staring at the DOS based Pascal IDE and in-built help documents. I managed to create a few programs on that which laid the foundation for when I got into C++. After a few years of learning on my own I found that I could not find a job working on code until I got my education which caused me to go get a university education at the age of 26. Now I have a couple of years of development experience both using C++, Python, Javascript and a myriad of other supporting languages.

Today, all you need to do to learn to code is to code. You have the wealth of the internet at your fingertips. Choose a language, find a project and code. Create games if you have no ideas. Clone existing games (Like Tetris, Simcity or somesuch). In this industry the old adage "Mileage matters" applies.

Eventually, before you know it, you will be churning out production ready software.

I know I cant pinpoint the exact method I used to get there. All I can tell is that somewhere along the way, through millions of keypresses in multiple programming languages, I picked up the right habits.

You can do it to :)

Just go build stuff!

(Oh and regarding the operating system question. The OS does not matter at all. You can code in all of them. I started out in windows. Currently using linux for my dev work. Its just a matter of preference)


Good luck! Don't rush yourself and consider this a long process (1-2 years) not something you can nail in 6 weeks. In all honesty you might be a long way away from actually pushing code to your existing site, so put that out of your mind for a few months and start simple.

I started with little things like a personal blog, tinkering with features on that, doing some fun and simple project websites, helping do HTML/CSS design stuff for other more complicated sites from friends (where you inevitably bump into backend and frontend code challenges) and then started building my own e-commerce site. Note that whole process was around 2 years. Get stuck into doing ALL of these things yourself (ie. front-end, backend, server setup etc.) because it will eventually help. I learned Python by proxy - starting with Django and then regressing into Python. I'd suggest you do something similar, because pure Python is perhaps too low-level for what you want right now (ie. pushing website code).

And yes, Windows is a bit of a crappy environment to develop in. Lots of great open-source software is written by people developing on Linux/OSX and as a consequence, their code/documentation/communities tend to ignore Windows. You'll make stuff work more quickly, more easily and with more immediate help from the internets if you're using Linux/OSX.


I'm going to give different advice.

You should ideally try to get work at a software focussed SME, where you can learn from good developers, and slowly grow into larger and more difficult projects.

There are lots of different small software companies serving different markets. HackerNews and SV seem to be full of consumer targeted ones, because of the potential for rapid growth. But a lot of SMEs do B2B or government work, and you may find that because they are less cool, it is easier to get them to take you on. They are also more likely more focused on making good software and actual money, than building perception of growth to get a good exit for the founders.

At least round where I live, you can find these small companies in office parks and industrial estates. Find one that is doing something you think is cool, and vagually chimes with your portfolio. Then write them, and ask if you can do some kind of a placement with them. Try to talk to the engineering management, as HR just get in the way. Once you are there, and get on with the people, it should be pretty easy to get a junior role out of them at the end. If you are up front that you want this at the start, a lot of them will treat you more seriusly.

Think about what you can offer them - they will have projects, ranging from adding unit tests to writing a better time sheet system, that they would do if they only had time / free resources. Get them to talk about those things, and then sell them that you want to give it a go.

Other commenters - do you have any suggestions for a better way to make the initial contact?


to be honest, i actually did think about what you said (before you said it) - i wanted to apply for internships or even full-time jobs at the local office in my country for LinkedIn, and offer to work for them for free in exchange for being able to shadow an experienced developer and learn from him/her. however, i can't imagine being able to offer them anything in return to the point where they would agree to such an offer. all my friends tell me i should be paid for learning, so apply for jobs and learn on the job but again, i don't know how i can market myself to the employer where he/she feels like it's a win-win rather than simply them investing resources into training me and then me leaving after i learn them.

but i will go ahead and contact some of these companies' engineering departments, i think it might be a good idea. do you have any suggestion as to how i should approach them?


You mention linkedin. The reason I said SMEs is that things at a small company are less process driven. If you want to intern at linkedin, then you probably have to apply to head office, and probably then intern at head office. But at a small company, if you convince the chief engineer you are in.

I got my start at 14 knocking doors on a local industrial estate. I came across a little company developing java accelerator chips for mobile phones. Later they got bought by arm, and that technology became jazelle, which I guess opened the way for running Android on a little mobile proccessor, but when I was there it was 10 guys in a lab.

The CEO liked my enthusiasm, but I was pretty useless. On my first day, I tripped the power for the building, and on my second I injured myself soldering, and came in crying while they were negotiating with Samsung in the next room. Still got the scars. I hope at least they found me amusing.

The best way to get in somewhere small as an intern would be through your personal network.

Knocking doors is acceptable for children, but I think it would come across as for an adult. If someone you vaguely know asks their boss if you can come intern, they will probably say yes.

I'm assuming, from the rest of this thread, that where you are at is you are in your late teens, and thinking of going to college in 6 months or a year. Being so young is actually a big advantage.

People generally want to help young people. They have an expectation that you won't have much experience, but they will want you to succeed because they would have liked someone to help them when they were young.

If you don't have many software engineers in your network, go to local events, talk to people, and be up front about what you are looking for. If they can't help you, they will direct you to people that can.

Oh, and keep in mind that while at the moment web/apps are the big thing, software and engineering are bigger than that. It might be that in a decade, the big thing will be applying AI to data to help people make decisions. Or you might want to get into computational biology for drug development. Going to school is pretty important for that stuff.


If you've done Codecademy, you should understand the basics (what is a variable, what are functions, etc). The next thing to do is pick a project and build it. A good place to start is something like a blog, or calendar, or some other simple application like that. Heck, an HN clone would be a good starting project.

Once you pick a project, just take it one step at a time, asking for help when you get stuck. Don't worry about making it production-ready. It's inevitably going to be full of vulnerabilities and bad coding practices, don't worry about it. There isn't a programmer on Earth who hasn't looked at their own code from 5 years ago and thought, "What on Earth was this guy thinking when he wrote this???" Build a few projects and you will pick stuff up as you go. Once you feel like you really understand what you're doing, then you can focus on making something production-ready. For right now, just get a few things built without worrying about the details.

Read this: http://prog21.dadgum.com/188.html

When you're starting out, do that. Don't worry about full understanding. Get a solution out there, even an imperfect and brute-force one. Obviously, you don't want to stay at that level, but like I said, you're going to hate your code 5 years from now anyway, so don't worry about it too much.

Read this too, the first quote on this page: http://www.goodreads.com/author/quotes/113989.Ira_Glass


yes i feel that i do understand the most basic stuff, plus i've taken some programming-ish classes in college as well (such as VBA for Excel and another freshman class which also dabbled a little in basic programming principles). i'm just at a complete loss as to how to go from that basic understanding, to actually being able to write something useful and then subsequently be good enough to be hired as a junior or entry level developer. my ultimate end-goal is to develop software for my own startup because i have many ideas which i have previously tried to hire outside developers to implement, but failed miserably.

i'll read those links right now! thanks!


I really think you need to start with a very simple project that you can see through to completion. Writing your own blog or calendar app is pretty simple if you don't try to add any advanced features (like WYSIWYG editing or something like that).

For a blog, just make a new post page where you can type in a new post and then an index page that shows all posts. If that's too simple, make a log-in system and support for multiple authors.

For a calendar, just make it so you can click a day and type in an event which gets stored and shown when you load the page. If that's too simple, do multi-day events and recurring events. Or build a week view and a single day view as well.

This is the kind of project you would build in classes. It's the only way to really learn how everything fits together to make a full web app. Learning on the job is pretty much the only way to really learn software development.


You have to crawl before you can walk. You'll learn with practice, probably years of practice. Start with small things. Make a HackerNews clone with PHP and a database. Make a Snake clone with Python, but don't use PyGame.


One advice from someone who has taught and studied this for over 15 years:

Don't get tangled up on what's hip and cool now, it might be disastrous for someone just starting out. Here on HN especially, we obsess about exotic new languages and frameworks. But they often have very little support for true beginners. Even Rails/Ruby is a pain to setup and understand for a beginner, they make it look so popular and easy, but you'll quickly end up in a huge confused state of things you can probably not relate to each other.

PHP would be my suggestion, play with it for a month and try to get as far as you can, get a grip of how things tie together and such. Then, you can re evaluate what other languages might be interesting or why certain aspects of framework driven movements might make more sense.

Pick the easiest, oldest tool you can find and work your way forward, historically and all will make much more sense.

Disregard your environment that first few weeks, Windows totally works, you don't need a web server, just use something local. Your dev friends will tell you PHP sucks and ruby is the shit, but consider that this does not necessarily translate to "when just starting out".

The hardest part about programming is never the language. It's always the ability to know how to address a given problem, tactics. Later in life, you'll be able to use any language thrown at you, it's the problem approaching that really makes a good programmer. Learn concepts, how a web server really operates, how a browser works, that stuff. All a programmer does is building bridges between existing technologies and people (behavior).


Since he wants to start with PHP, I doubt he is going the hip and cool now route.

No offense to PHP, but it really can't be considered hip anymore.


It's a little hard to tell from your question where exactly your problem lies. If you've done codeacademy I assume you've already got some coding skills.

You say you don't know how to apply those skills to doing something useful. I would start with an idea for something you want to do. You have an ecommerce site so I'm guessing you have some ideas for improvements you'd like to make to that site. I would start with one of those ideas (hopefully a reasonably simple one at first) then try to figure out how you would code that. Implement your change (in a development/test environment, not on your live site), do some testing and when you're satisfied your code is working push the changes out to your live site.

I'm not exactly sure what your hangup is about "production ready" code. As others have said there's no special magic that separates "production ready" code from any other code other than testing and reviewing your code to make sure you're following security best practices (which should be pretty easy with today's environments, the frameworks typically provide you with simple methods to sanitize inputs and prevent things like SQL injection). If you were building a site from scratch you'd have other things to worry about, like password handling and secure credit card processing but since you already have a site I don't think you'll need to deal with those more sensitive areas at first.

If you'd like to a have a professional spend a few hours reviewing your code before it goes live that's a service I can offer you. My website is in my HN profile and contact info is available there. Feel free to email me if you're interested.


yes, i do believe that i'm not an absolute and complete beginner, but if there is a theoretical 100% expert on programming, i'd say i'm maybe a 5% at most. i've taken classes in college related to programming but not ACTUALLY programming (for instance, excel VBA programming, and another freshman programming class which did not actually teach in-depth programming but introduced me to the basic principles) and i've also done codecademy and in fact finished all the php and python classes but i have no idea how to actually translate the stuff i learned into actually writing something useful. for instance, my e-commerce site is based on joomla and i tried to read tutorials on how to develop for joomla and i got absolutely nowhere. i don't know which IDE to use, i want to implement a daily deals feature on my site but i have no idea where to start, etc.

when i say "production ready" code, what i meant was i want to be able to confidently list on my resume that i can write code that can be shipped, and to be able to actually legitimately apply for developer jobs. right now, the best i can do is finish codecademy exercises, which is not good enough.

thank you so much for your offer, and i might just take you up on it! you guys are so generous and nice here, frankly i'm quite touched and inspired to start right now.


Ah, it sounds like what's happening is this: joomla is a large piece of complex PHP code and you don't know how to figure out how to integrate the changes you want to make into it. Also there may be a lot of code in the framework that looks strange and you're having trouble figuring out how it works.

I've never worked with joomla myself, but I'll try to give you a few ideas about how I would approach figuring it out if I had no clue and the documentation wasn't helpful.

The steps I would take are:

1) Get a local test instance of your site setup.

2) Figure out how to insert a line of code that generates some sort of output that you can see as soon as it's executed (ie. a "print statement"). Usually this will go to some server log file. There should be something in the docs, hopefully an example, about logging.

3) Make a guess about what code gets executed when a page you're interested in gets rendered. Most likely this will be the php file that you see in that page's URL.

4) Once you've got a first message to print out try to reason through the control flow of the code, adding print statements here and there to test your understanding of what gets executed when.

By following this approach you should start to get a feel for how the joomla code works and eventually you will find out where code for your new feature should go. If you still have trouble figuring that out try to find a similar feature already implemented in joomla or some add-on or extension and see how that was implemented.

If you want a recommendation for an IDE I've found that Eclipse with the PHP plugin works pretty well, but for this process of understanding the joomla code I would just use whatever text editor you're comfortable with, an IDE will probably only get in the way of your investigations at this point.


You're on the right track; just jump right in.

I would suggest focusing on one scripting language to start though. Python or PHP would be fine choices. I learned on PHP and still use it. If I was starting now, I probably would have gone with Python, but you're fine either way. Facebook is built on PHP. Google uses Python a fair bit.

There's nothing wrong with learning programming on a Windows machine! People who are avoiding doing real work quibble about these things. Especially for web development, it doesn't matter. (If you want to get into native iOS dev, you should get a mac)

Choose a simple project and learn as you go. Some ideas: a todo app that connects with a database, a journaling app that writes to text files and let's you do simple edits, something else you're interested in.


Peter Norvig wrote an essay that you might find useful, "Teach Yourself Programming in Ten Years." [1] Don't be put off by the timespan, apply what you find useful. One tip, clipped from the article, itself clipped from somewhere else:

""the most effective learning requires a well-defined task with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors."

I've found volunteering a useful way to enter a professional environment where I'm not yet comfortable being paid for my output. Find people doing what you want to do, and offer to help.

[1] http://norvig.com/21-days.html


There are several CS101 type courses available on sites like Coursera, Udacity and EdX. If you already know the basics of programming, you might try an intermediate level one that incorporates a project.

As for production-ready software, I'd start small then add things onto it. For example, if you have a simple Tetris game, try adding music or porting it to Android. Major software projects don't get built overnight and generally involve teams of experienced developers, so that's not something you're going to be able to do immediately.

You might want to look into Agile development methodology. That shows a way to go iteratively from initial idea to something a customer would want to use.


I would suggest a "long road" - forget for a while all this PHP stuff and invest some time "to know any better" and learn some theory to better understand hows and whys that will arise in daily practice.

I suggest to take CS61A by prof. Brian Harvey (it is available on YouTube) and then with understanding of why something is better than other, take a look at Scala and Clojure as appropriate tools to get shit done. PHP is a dead end, and websites could be built with Scala or Clojure too.

I wouldn't recommend Haskell before understanding deeply CS61A and SICP.

HtDP2 and related course on Coursera is another decent start, but the path described above should be taken afterwards.


The biggest hurdles I think most people face is maintaining momentum throughout their educational process.

Most people want to start something new and quickly fall back into their old patterns that didn't include this new thing. You have to make time in your life so this becomes a consistent and ever present part of it.

So, my advise to you is to study for some period of time every single day, even if it is a 1/2 hour. Make it a habit.

Start with reading a intro level book and make sure that you get through it. Even when you don't understand what you just read. Just finish the book. Read it every day. Parts of it will be easy to understand and it will start to sink in. Then, do more.


Developing production software is a function of how many times the software you write is "evaluated". Where "evaluated" can encompass peer review, customer feedback, formal QA, unit tests. The absolute best way to learn is to teach it. And the best way to do that is peer accountability. Whether through starting your own study group where you meet weekly to discuss/review your joint coding progress or joining a company which has an apprenticeship program as a core value.

Good luck! Fail faster in the hands and care of those who are better than you.

Also see http://jenniferdewalt.com


I first learned on Windows - I have subsequently found that it is far better to do development on OS X or Linux & prefer to do so now, but nothing is really preventing you from doing dev on Windows.

My approach to learning was to absorb as much as possible as fast as possible. I spent time trying to learn PHP, Ruby (for usage of Rails), and JavaScript. I did not do anything with NodeJS then, but I did learn how to manipulate JS to accomplish things I wanted to do. I did not know best practices, or was comfortable with OOP.

If you want to learn web development, try building the websites you want. That is probably the best learning experience to start.


Regarding production software: I gave a talk to university students on the difference between professional software development and programming for a university course, and wrote about it in "Working as a Software Developer"[1]. I also included ways to cope with the problems of SW development, and how to become a better programmer. Maybe something in there can be useful.

[1]: http://henrikwarne.com/2012/12/12/working-as-a-software-deve...


Windows is bad for programming only if you're familiar with Unix. A Unix shell can be an extremely powerful tool in the hands of someone who knows how to use it. These are the people who bitch about Windows. OSX and Linux are both unixen, so these are popular with unix afficianados. But if you're not familiar with Unix, Windows is perfectly fine as a programming environment.

And though I miss the unix shell, I'm currently working on Windows myself. I'm not thrilled about it, but it works.


Windows is fine for development. Tons of people do it, it's just not hip & trendy on hacker news. Don't waste time on learning a new OS if what you really want to learn is code. Both PHP and Python have first-class support for Windows, and so do most other tools (databases, webservers, etc).

Best way to learn is just by beginning. Set yourself a relatively modest goal. It can be useful even if it's modest. Something you need, maybe for yourself, or for some community you're in.


What you say is true, but I think it is worth mentioning that majority of hosting for PHP will be on some kind of linuxy/unixy system so familiarity with that won't hurt.


If you're not deploying to a Windows-based host, spend some time with Vagrant.


I found someone else here that was also looking for real-world experience. If you need some, contact me.

Our teams are almost at the stage of beginning to write the actual code, if you can catch up on the documentation and have your system ready (a VM with some Ubuntu-based distro and the correct dev tools) you can join us.

Also, you can develop on Windows. It isn't that bad. A lot of companies are looking for .NET devs (which I think only runs on Win) so it is fine to use it.


hey can you tell me more about this? i'm definitely interested, but i don't know if i can catch up on time (although i'm willing to put in the effort to try!) to be able to contribute to your project.


Have you completed the Ruby/PHP/Python track on codecademy?

You say that you are beginner, which is fine, but you should at least have done 1 of those 3 courses already.

Also, what is your email? You can use boun.cr to not expose your real email address out here.


Hi, yes a few months ago i finished all the PHP and Python classes available but I think they have new ones now that I haven't completed (which I intend to).

thanks for the link to boun.cr, it's a pretty cool site! i just used it and my email is gotrecruit@boun.cr. please let me know more about your project!


If you're worried about using Windows, you'll likely be fine running a Linux VM on your Windows box rather than getting a new box.


I can't stress this enough but if you're going to deploy a web application you need to be serious about and learn about web security.

https://www.owasp.org is a good place to start.

Windows is just fine, it's a personal preference. I learned (mostly) on Linux but I use Windows at work, whatever.


I'm in the process of throwing together a short and sweet e-book (20 pages) with basic front end concepts explained from a zero background perspective and references to more places you can go to further develop your skills.

It's $10, shoot me an email if you'd be interested in a copy or have any questions!

Good luck on your journey as well!


To me, $.50 a page for a list of links to other resources seems like selling shovels to people trying to get in on the coding "goldrush". That said, I'd be into doing a review for my blog if you care to send a copy.


It's more than links to other resources. Having transitioned from a marketing/business background to a development career, I recall the areas that gave me the most trouble when I first started and would like to simplify that for others who would like to become more familiar with development.

I'll send over a copy as well, I'd be curious to get your opinion!


As I think someone else mentioned, hit up http://www.codecademy.com/ and you'll be on your way. The only thing standing in your way is distractions, so start consuming your stimulant of choice, go to a quiet room, and get learning.


OP said: "i've done codecademy and similar stuff before"


Whoops


I wrote a blog on this fairly recently, it's helped a few of my friends, so maybe it has some info you could benefit from, too :)

http://www.ewanvalentine.co.uk/coding-your-own-career/


Right now my current suggestion is read and complete the first two chapters of SICP. The book is free, the software is free, and you will learn an incredible amount for your efforts. After that, you'll have a foundation you can easily build a career on.


A few tips that have helped many in the past:

- Start small

- Don't worry too much about the language

- Start with some free sources e.g. KhanAcademy, Udemy, libary books

- Have a very small project that you can use to learn

- Carve out some time each day/week to work solely on your pet project

- Ask questions

- Find a mentor

- Don't give up. Everyone starts at the bottom.


I think the main thing with this is that is has to be a lifelong activity. It's not something you can do for six weeks and 'achieve', but more, it's a continual learning exercise that never ends.

Start programming, make things, read things. Eventually you will realise that you're pretty good.

Be willing to put in years too.


Beware of technologies which are over-complicated to the degree one suspects they are that way largely as a form of developer mindshare lock-in. You can very quickly get discouraged that way.


When you encounter something you do not understand do not stop asking questions until you understand it - ever. No matter how small the detail or seemingly embarrassing.


Three options in front of you: 1. Get into a class. 2. Books. 3. Online classes / screencasts (the best have you do exercices too.)


Learn how to type using proper English syntax first. Once you have basic sentence structure down, you can move on to programming.


English is not a strict requirement for programming; lots of people in countries where English is not so common, still manage to program perfectly fine. English does help to engage with the international community (where English is the Lingua Franca), though.


erm.. what? i'm not sure what you're implying, but English is my first language...


If it makes you feel better, I found his comment as strange as [i'm guessing] you found it


yes it kinda sounded pretty condescending, i wasn't sure if i misinterpreted what he said or if i sounded like English wasn't my native language.


Be curious.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: